Merge changes Ic07050a8,Idae22d9e

* changes:
  Update build-tools to ab/8162587
  Add musl sysroot to update-prebuilts.sh
diff --git a/darwin-x86/bin/aidl b/darwin-x86/bin/aidl
index 2d89cee..f365864 100755
--- a/darwin-x86/bin/aidl
+++ b/darwin-x86/bin/aidl
Binary files differ
diff --git a/darwin-x86/bin/py2-cmd b/darwin-x86/bin/py2-cmd
index 5522fb1..3215067 100755
--- a/darwin-x86/bin/py2-cmd
+++ b/darwin-x86/bin/py2-cmd
Binary files differ
diff --git a/darwin-x86/bin/py3-cmd b/darwin-x86/bin/py3-cmd
index 4da7b9e..05adf81 100755
--- a/darwin-x86/bin/py3-cmd
+++ b/darwin-x86/bin/py3-cmd
Binary files differ
diff --git a/darwin-x86/bin/soong_zip b/darwin-x86/bin/soong_zip
index 02c5ad0..7bbdf55 100755
--- a/darwin-x86/bin/soong_zip
+++ b/darwin-x86/bin/soong_zip
Binary files differ
diff --git a/darwin-x86/bin/toybox b/darwin-x86/bin/toybox
index fe6ac30..14293bc 100755
--- a/darwin-x86/bin/toybox
+++ b/darwin-x86/bin/toybox
Binary files differ
diff --git a/darwin-x86/bin/zip2zip b/darwin-x86/bin/zip2zip
index 49829bd..04a045b 100755
--- a/darwin-x86/bin/zip2zip
+++ b/darwin-x86/bin/zip2zip
Binary files differ
diff --git a/i686-linux-musl/COPYRIGHT b/i686-linux-musl/COPYRIGHT
new file mode 100644
index 0000000..c1628e9
--- /dev/null
+++ b/i686-linux-musl/COPYRIGHT
@@ -0,0 +1,193 @@
+musl as a whole is licensed under the following standard MIT license:
+
+----------------------------------------------------------------------
+Copyright © 2005-2020 Rich Felker, et al.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+----------------------------------------------------------------------
+
+Authors/contributors include:
+
+A. Wilcox
+Ada Worcester
+Alex Dowad
+Alex Suykov
+Alexander Monakov
+Andre McCurdy
+Andrew Kelley
+Anthony G. Basile
+Aric Belsito
+Arvid Picciani
+Bartosz Brachaczek
+Benjamin Peterson
+Bobby Bingham
+Boris Brezillon
+Brent Cook
+Chris Spiegel
+Clément Vasseur
+Daniel Micay
+Daniel Sabogal
+Daurnimator
+David Carlier
+David Edelsohn
+Denys Vlasenko
+Dmitry Ivanov
+Dmitry V. Levin
+Drew DeVault
+Emil Renner Berthing
+Fangrui Song
+Felix Fietkau
+Felix Janda
+Gianluca Anzolin
+Hauke Mehrtens
+He X
+Hiltjo Posthuma
+Isaac Dunham
+Jaydeep Patil
+Jens Gustedt
+Jeremy Huntwork
+Jo-Philipp Wich
+Joakim Sindholt
+John Spencer
+Julien Ramseier
+Justin Cormack
+Kaarle Ritvanen
+Khem Raj
+Kylie McClain
+Leah Neukirchen
+Luca Barbato
+Luka Perkov
+M Farkas-Dyck (Strake)
+Mahesh Bodapati
+Markus Wichmann
+Masanori Ogino
+Michael Clark
+Michael Forney
+Mikhail Kremnyov
+Natanael Copa
+Nicholas J. Kain
+orc
+Pascal Cuoq
+Patrick Oppenlander
+Petr Hosek
+Petr Skocik
+Pierre Carrier
+Reini Urban
+Rich Felker
+Richard Pennington
+Ryan Fairfax
+Samuel Holland
+Segev Finer
+Shiz
+sin
+Solar Designer
+Stefan Kristiansson
+Stefan O'Rear
+Szabolcs Nagy
+Timo Teräs
+Trutz Behn
+Valentin Ochs
+Will Dietz
+William Haddon
+William Pitcock
+
+Portions of this software are derived from third-party works licensed
+under terms compatible with the above MIT license:
+
+The TRE regular expression implementation (src/regex/reg* and
+src/regex/tre*) is Copyright © 2001-2008 Ville Laurikari and licensed
+under a 2-clause BSD license (license text in the source files). The
+included version has been heavily modified by Rich Felker in 2012, in
+the interests of size, simplicity, and namespace cleanliness.
+
+Much of the math library code (src/math/* and src/complex/*) is
+Copyright © 1993,2004 Sun Microsystems or
+Copyright © 2003-2011 David Schultz or
+Copyright © 2003-2009 Steven G. Kargl or
+Copyright © 2003-2009 Bruce D. Evans or
+Copyright © 2008 Stephen L. Moshier or
+Copyright © 2017-2018 Arm Limited
+and labelled as such in comments in the individual source files. All
+have been licensed under extremely permissive terms.
+
+The ARM memcpy code (src/string/arm/memcpy.S) is Copyright © 2008
+The Android Open Source Project and is licensed under a two-clause BSD
+license. It was taken from Bionic libc, used on Android.
+
+The AArch64 memcpy and memset code (src/string/aarch64/*) are
+Copyright © 1999-2019, Arm Limited.
+
+The implementation of DES for crypt (src/crypt/crypt_des.c) is
+Copyright © 1994 David Burren. It is licensed under a BSD license.
+
+The implementation of blowfish crypt (src/crypt/crypt_blowfish.c) was
+originally written by Solar Designer and placed into the public
+domain. The code also comes with a fallback permissive license for use
+in jurisdictions that may not recognize the public domain.
+
+The smoothsort implementation (src/stdlib/qsort.c) is Copyright © 2011
+Valentin Ochs and is licensed under an MIT-style license.
+
+The x86_64 port was written by Nicholas J. Kain and is licensed under
+the standard MIT terms.
+
+The mips and microblaze ports were originally written by Richard
+Pennington for use in the ellcc project. The original code was adapted
+by Rich Felker for build system and code conventions during upstream
+integration. It is licensed under the standard MIT terms.
+
+The mips64 port was contributed by Imagination Technologies and is
+licensed under the standard MIT terms.
+
+The powerpc port was also originally written by Richard Pennington,
+and later supplemented and integrated by John Spencer. It is licensed
+under the standard MIT terms.
+
+All other files which have no copyright comments are original works
+produced specifically for use as part of this library, written either
+by Rich Felker, the main author of the library, or by one or more
+contibutors listed above. Details on authorship of individual files
+can be found in the git version control history of the project. The
+omission of copyright and license comments in each file is in the
+interest of source tree size.
+
+In addition, permission is hereby granted for all public header files
+(include/* and arch/*/bits/*) and crt files intended to be linked into
+applications (crt/*, ldso/dlstart.c, and arch/*/crt_arch.h) to omit
+the copyright notice and permission notice otherwise required by the
+license, and to use these files without any requirement of
+attribution. These files include substantial contributions from:
+
+Bobby Bingham
+John Spencer
+Nicholas J. Kain
+Rich Felker
+Richard Pennington
+Stefan Kristiansson
+Szabolcs Nagy
+
+all of whom have explicitly granted such permission.
+
+This file previously contained text expressing a belief that most of
+the files covered by the above exception were sufficiently trivial not
+to be subject to copyright, resulting in confusion over whether it
+negated the permissions granted in the license. In the spirit of
+permissive licensing, and of not having licensing issues being an
+obstacle to adoption, that text has been removed.
diff --git a/i686-linux-musl/LICENSE b/i686-linux-musl/LICENSE
new file mode 120000
index 0000000..cf3af40
--- /dev/null
+++ b/i686-linux-musl/LICENSE
@@ -0,0 +1 @@
+COPYRIGHT
\ No newline at end of file
diff --git a/i686-linux-musl/bin/ld.musl-clang b/i686-linux-musl/bin/ld.musl-clang
new file mode 100755
index 0000000..be1578c
--- /dev/null
+++ b/i686-linux-musl/bin/ld.musl-clang
@@ -0,0 +1,51 @@
+#!/bin/sh
+cc="clang"
+libc_lib="$(dirname "$0")/../lib"
+ldso="$(dirname "$0")/../lib/ld-musl.so.1"
+cleared=
+shared=
+userlinkdir=
+userlink=
+
+for x ; do
+    test "$cleared" || set -- ; cleared=1
+
+    case "$x" in
+        -L-user-start)
+            userlinkdir=1
+            ;;
+        -L-user-end)
+            userlinkdir=
+            ;;
+        -L*)
+            test "$userlinkdir" && set -- "$@" "$x"
+            ;;
+        -l-user-start)
+            userlink=1
+            ;;
+        -l-user-end)
+            userlink=
+            ;;
+        crtbegin*.o|crtend*.o)
+            set -- "$@" $($cc -print-file-name=$x)
+            ;;
+        -lgcc|-lgcc_eh)
+            file=lib${x#-l}.a
+            set -- "$@" $($cc -print-file-name=$file)
+            ;;
+        -l*)
+            test "$userlink" && set -- "$@" "$x"
+            ;;
+        -shared)
+            shared=1
+            set -- "$@" -shared
+            ;;
+        -sysroot=*|--sysroot=*)
+            ;;
+        *)
+            set -- "$@" "$x"
+            ;;
+    esac
+done
+
+exec $($cc -print-prog-name=ld) -nostdlib "$@" -lc -dynamic-linker "$ldso"
diff --git a/i686-linux-musl/bin/musl-clang b/i686-linux-musl/bin/musl-clang
new file mode 100755
index 0000000..7886714
--- /dev/null
+++ b/i686-linux-musl/bin/musl-clang
@@ -0,0 +1,35 @@
+#!/bin/sh
+cc="clang"
+libc="$(dirname "$0")/.."
+libc_inc="${libc}/include"
+libc_lib="${libc}/lib"
+thisdir="`cd "$(dirname "$0")"; pwd`"
+
+# prevent clang from running the linker (and erroring) on no input.
+sflags=
+eflags=
+for x ; do
+    case "$x" in
+        -l*) input=1 ;;
+        *) input= ;;
+    esac
+    if test "$input" ; then
+        sflags="-l-user-start"
+        eflags="-l-user-end"
+        break
+    fi
+done
+
+exec $cc \
+    -B"$thisdir" \
+    -fuse-ld=musl-clang \
+    -static-libgcc \
+    -nostdinc \
+    --sysroot "$libc" \
+    -isystem "$libc_inc" \
+    -L-user-start \
+    $sflags \
+    "$@" \
+    $eflags \
+    -L"$libc_lib" \
+    -L-user-end
diff --git a/i686-linux-musl/include/aio.h b/i686-linux-musl/include/aio.h
new file mode 100644
index 0000000..453c41b
--- /dev/null
+++ b/i686-linux-musl/include/aio.h
@@ -0,0 +1,73 @@
+#ifndef _AIO_H
+#define _AIO_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <signal.h>
+#include <time.h>
+
+#define __NEED_ssize_t
+#define __NEED_off_t
+
+#include <bits/alltypes.h>
+
+struct aiocb {
+	int aio_fildes, aio_lio_opcode, aio_reqprio;
+	volatile void *aio_buf;
+	size_t aio_nbytes;
+	struct sigevent aio_sigevent;
+	void *__td;
+	int __lock[2];
+	volatile int __err;
+	ssize_t __ret;
+	off_t aio_offset;
+	void *__next, *__prev;
+	char __dummy4[32-2*sizeof(void *)];
+};
+
+#define AIO_CANCELED 0
+#define AIO_NOTCANCELED 1
+#define AIO_ALLDONE 2
+
+#define LIO_READ 0
+#define LIO_WRITE 1
+#define LIO_NOP 2
+
+#define LIO_WAIT 0
+#define LIO_NOWAIT 1
+
+int aio_read(struct aiocb *);
+int aio_write(struct aiocb *);
+int aio_error(const struct aiocb *);
+ssize_t aio_return(struct aiocb *);
+int aio_cancel(int, struct aiocb *);
+int aio_suspend(const struct aiocb *const [], int, const struct timespec *);
+int aio_fsync(int, struct aiocb *);
+
+int lio_listio(int, struct aiocb *__restrict const *__restrict, int, struct sigevent *__restrict);
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define aiocb64 aiocb
+#define aio_read64 aio_read
+#define aio_write64 aio_write
+#define aio_error64 aio_error
+#define aio_return64 aio_return
+#define aio_cancel64 aio_cancel
+#define aio_suspend64 aio_suspend
+#define aio_fsync64 aio_fsync
+#define lio_listio64 lio_listio
+#define off64_t off_t
+#endif
+
+#if _REDIR_TIME64
+__REDIR(aio_suspend, __aio_suspend_time64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/alloca.h b/i686-linux-musl/include/alloca.h
new file mode 100644
index 0000000..b8d183d
--- /dev/null
+++ b/i686-linux-musl/include/alloca.h
@@ -0,0 +1,19 @@
+#ifndef	_ALLOCA_H
+#define	_ALLOCA_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define	__NEED_size_t
+#include <bits/alltypes.h>
+
+void *alloca(size_t);
+
+#define alloca __builtin_alloca
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/alltypes.h.in b/i686-linux-musl/include/alltypes.h.in
new file mode 100644
index 0000000..d47aeea
--- /dev/null
+++ b/i686-linux-musl/include/alltypes.h.in
@@ -0,0 +1,95 @@
+#define __LITTLE_ENDIAN 1234
+#define __BIG_ENDIAN 4321
+#define __USE_TIME_BITS64 1
+
+TYPEDEF unsigned _Addr size_t;
+TYPEDEF unsigned _Addr uintptr_t;
+TYPEDEF _Addr ptrdiff_t;
+TYPEDEF _Addr ssize_t;
+TYPEDEF _Addr intptr_t;
+TYPEDEF _Addr regoff_t;
+TYPEDEF _Reg register_t;
+TYPEDEF _Int64 time_t;
+TYPEDEF _Int64 suseconds_t;
+
+TYPEDEF signed char     int8_t;
+TYPEDEF signed short    int16_t;
+TYPEDEF signed int      int32_t;
+TYPEDEF signed _Int64   int64_t;
+TYPEDEF signed _Int64   intmax_t;
+TYPEDEF unsigned char   uint8_t;
+TYPEDEF unsigned short  uint16_t;
+TYPEDEF unsigned int    uint32_t;
+TYPEDEF unsigned _Int64 uint64_t;
+TYPEDEF unsigned _Int64 u_int64_t;
+TYPEDEF unsigned _Int64 uintmax_t;
+
+TYPEDEF unsigned mode_t;
+TYPEDEF unsigned _Reg nlink_t;
+TYPEDEF _Int64 off_t;
+TYPEDEF unsigned _Int64 ino_t;
+TYPEDEF unsigned _Int64 dev_t;
+TYPEDEF long blksize_t;
+TYPEDEF _Int64 blkcnt_t;
+TYPEDEF unsigned _Int64 fsblkcnt_t;
+TYPEDEF unsigned _Int64 fsfilcnt_t;
+
+TYPEDEF unsigned wint_t;
+TYPEDEF unsigned long wctype_t;
+
+TYPEDEF void * timer_t;
+TYPEDEF int clockid_t;
+TYPEDEF long clock_t;
+STRUCT timeval { time_t tv_sec; suseconds_t tv_usec; };
+STRUCT timespec { time_t tv_sec; int :8*(sizeof(time_t)-sizeof(long))*(__BYTE_ORDER==4321); long tv_nsec; int :8*(sizeof(time_t)-sizeof(long))*(__BYTE_ORDER!=4321); };
+
+TYPEDEF int pid_t;
+TYPEDEF unsigned id_t;
+TYPEDEF unsigned uid_t;
+TYPEDEF unsigned gid_t;
+TYPEDEF int key_t;
+TYPEDEF unsigned useconds_t;
+
+#ifdef __cplusplus
+TYPEDEF unsigned long pthread_t;
+#else
+TYPEDEF struct __pthread * pthread_t;
+#endif
+TYPEDEF int pthread_once_t;
+TYPEDEF unsigned pthread_key_t;
+TYPEDEF int pthread_spinlock_t;
+TYPEDEF struct { unsigned __attr; } pthread_mutexattr_t;
+TYPEDEF struct { unsigned __attr; } pthread_condattr_t;
+TYPEDEF struct { unsigned __attr; } pthread_barrierattr_t;
+TYPEDEF struct { unsigned __attr[2]; } pthread_rwlockattr_t;
+
+STRUCT _IO_FILE { char __x; };
+TYPEDEF struct _IO_FILE FILE;
+
+TYPEDEF __builtin_va_list va_list;
+TYPEDEF __builtin_va_list __isoc_va_list;
+
+TYPEDEF struct __mbstate_t { unsigned __opaque1, __opaque2; } mbstate_t;
+
+TYPEDEF struct __locale_struct * locale_t;
+
+TYPEDEF struct __sigset_t { unsigned long __bits[128/sizeof(long)]; } sigset_t;
+
+STRUCT iovec { void *iov_base; size_t iov_len; };
+
+STRUCT winsize { unsigned short ws_row, ws_col, ws_xpixel, ws_ypixel; };
+
+TYPEDEF unsigned socklen_t;
+TYPEDEF unsigned short sa_family_t;
+
+TYPEDEF struct { union { int __i[sizeof(long)==8?14:9]; volatile int __vi[sizeof(long)==8?14:9]; unsigned long __s[sizeof(long)==8?7:9]; } __u; } pthread_attr_t;
+TYPEDEF struct { union { int __i[sizeof(long)==8?10:6]; volatile int __vi[sizeof(long)==8?10:6]; volatile void *volatile __p[sizeof(long)==8?5:6]; } __u; } pthread_mutex_t;
+TYPEDEF struct { union { int __i[sizeof(long)==8?10:6]; volatile int __vi[sizeof(long)==8?10:6]; volatile void *volatile __p[sizeof(long)==8?5:6]; } __u; } mtx_t;
+TYPEDEF struct { union { int __i[12]; volatile int __vi[12]; void *__p[12*sizeof(int)/sizeof(void*)]; } __u; } pthread_cond_t;
+TYPEDEF struct { union { int __i[12]; volatile int __vi[12]; void *__p[12*sizeof(int)/sizeof(void*)]; } __u; } cnd_t;
+TYPEDEF struct { union { int __i[sizeof(long)==8?14:8]; volatile int __vi[sizeof(long)==8?14:8]; void *__p[sizeof(long)==8?7:8]; } __u; } pthread_rwlock_t;
+TYPEDEF struct { union { int __i[sizeof(long)==8?8:5]; volatile int __vi[sizeof(long)==8?8:5]; void *__p[sizeof(long)==8?4:5]; } __u; } pthread_barrier_t;
+
+#undef _Addr
+#undef _Int64
+#undef _Reg
diff --git a/i686-linux-musl/include/ar.h b/i686-linux-musl/include/ar.h
new file mode 100644
index 0000000..eafd51d
--- /dev/null
+++ b/i686-linux-musl/include/ar.h
@@ -0,0 +1,25 @@
+#ifndef _AR_H
+#define _AR_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define ARMAG "!<arch>\n"
+#define SARMAG 8
+#define ARFMAG "`\n"
+
+struct ar_hdr {
+	char ar_name[16];
+	char ar_date[12];
+	char ar_uid[6], ar_gid[6];
+	char ar_mode[8];
+	char ar_size[10];
+	char ar_fmag[2];
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/arpa/ftp.h b/i686-linux-musl/include/arpa/ftp.h
new file mode 100644
index 0000000..fb0a46f
--- /dev/null
+++ b/i686-linux-musl/include/arpa/ftp.h
@@ -0,0 +1,35 @@
+#ifndef _ARPA_FTP_H
+#define _ARPA_FTP_H
+#define PRELIM 1
+#define COMPLETE 2
+#define CONTINUE 3
+#define TRANSIENT 4
+#define ERROR 5
+#define TYPE_A 1
+#define TYPE_E 2
+#define TYPE_I 3
+#define TYPE_L 4
+#define FORM_N 1
+#define FORM_T 2
+#define FORM_C 3
+#define STRU_F 1
+#define STRU_R 2
+#define STRU_P 3
+#define MODE_S 1
+#define MODE_B 2
+#define MODE_C 3
+#define REC_ESC '\377'
+#define REC_EOR '\001'
+#define REC_EOF '\002'
+#define BLK_EOR 0x80
+#define BLK_EOF 0x40
+#define BLK_ERRORS 0x20
+#define BLK_RESTART 0x10
+#define BLK_BYTECOUNT 2
+#ifdef FTP_NAMES
+char *modenames[] =  {"0", "Stream", "Block", "Compressed" };
+char *strunames[] =  {"0", "File", "Record", "Page" };
+char *typenames[] =  {"0", "ASCII", "EBCDIC", "Image", "Local" };
+char *formnames[] =  {"0", "Nonprint", "Telnet", "Carriage-control" };
+#endif
+#endif
diff --git a/i686-linux-musl/include/arpa/inet.h b/i686-linux-musl/include/arpa/inet.h
new file mode 100644
index 0000000..9d20a15
--- /dev/null
+++ b/i686-linux-musl/include/arpa/inet.h
@@ -0,0 +1,31 @@
+#ifndef _ARPA_INET_H
+#define	_ARPA_INET_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <netinet/in.h>
+
+uint32_t htonl(uint32_t);
+uint16_t htons(uint16_t);
+uint32_t ntohl(uint32_t);
+uint16_t ntohs(uint16_t);
+
+in_addr_t inet_addr (const char *);
+in_addr_t inet_network (const char *);
+char *inet_ntoa (struct in_addr);
+int inet_pton (int, const char *__restrict, void *__restrict);
+const char *inet_ntop (int, const void *__restrict, char *__restrict, socklen_t);
+
+int inet_aton (const char *, struct in_addr *);
+struct in_addr inet_makeaddr(in_addr_t, in_addr_t);
+in_addr_t inet_lnaof(struct in_addr);
+in_addr_t inet_netof(struct in_addr);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/arpa/nameser.h b/i686-linux-musl/include/arpa/nameser.h
new file mode 100644
index 0000000..581925a
--- /dev/null
+++ b/i686-linux-musl/include/arpa/nameser.h
@@ -0,0 +1,455 @@
+#ifndef _ARPA_NAMESER_H
+#define _ARPA_NAMESER_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stddef.h>
+#include <stdint.h>
+
+#define __NAMESER	19991006
+#define NS_PACKETSZ	512
+#define NS_MAXDNAME	1025
+#define NS_MAXMSG	65535
+#define NS_MAXCDNAME	255
+#define NS_MAXLABEL	63
+#define NS_HFIXEDSZ	12
+#define NS_QFIXEDSZ	4
+#define NS_RRFIXEDSZ	10
+#define NS_INT32SZ	4
+#define NS_INT16SZ	2
+#define NS_INT8SZ	1
+#define NS_INADDRSZ	4
+#define NS_IN6ADDRSZ	16
+#define NS_CMPRSFLGS	0xc0
+#define NS_DEFAULTPORT	53
+
+typedef enum __ns_sect {
+	ns_s_qd = 0,
+	ns_s_zn = 0,
+	ns_s_an = 1,
+	ns_s_pr = 1,
+	ns_s_ns = 2,
+	ns_s_ud = 2,
+	ns_s_ar = 3,
+	ns_s_max = 4
+} ns_sect;
+
+typedef struct __ns_msg {
+	const unsigned char *_msg, *_eom;
+	uint16_t _id, _flags, _counts[ns_s_max];
+	const unsigned char *_sections[ns_s_max];
+	ns_sect _sect;
+	int _rrnum;
+	const unsigned char *_msg_ptr;
+} ns_msg;
+
+struct _ns_flagdata {  int mask, shift;  };
+extern const struct _ns_flagdata _ns_flagdata[];
+
+#define ns_msg_id(handle) ((handle)._id + 0)
+#define ns_msg_base(handle) ((handle)._msg + 0)
+#define ns_msg_end(handle) ((handle)._eom + 0)
+#define ns_msg_size(handle) ((handle)._eom - (handle)._msg)
+#define ns_msg_count(handle, section) ((handle)._counts[section] + 0)
+#define ns_msg_getflag(handle, flag) \
+	(((handle)._flags & _ns_flagdata[flag].mask) >> _ns_flagdata[flag].shift)
+
+typedef	struct __ns_rr {
+	char		name[NS_MAXDNAME];
+	uint16_t	type;
+	uint16_t	rr_class;
+	uint32_t	ttl;
+	uint16_t	rdlength;
+	const unsigned char *rdata;
+} ns_rr;
+
+#define ns_rr_name(rr)	(((rr).name[0] != '\0') ? (rr).name : ".")
+#define ns_rr_type(rr)	((ns_type)((rr).type + 0))
+#define ns_rr_class(rr)	((ns_class)((rr).rr_class + 0))
+#define ns_rr_ttl(rr)	((rr).ttl + 0)
+#define ns_rr_rdlen(rr)	((rr).rdlength + 0)
+#define ns_rr_rdata(rr)	((rr).rdata + 0)
+
+typedef enum __ns_flag {
+	ns_f_qr,
+	ns_f_opcode,
+	ns_f_aa,
+	ns_f_tc,
+	ns_f_rd,
+	ns_f_ra,
+	ns_f_z,
+	ns_f_ad,
+	ns_f_cd,
+	ns_f_rcode,
+	ns_f_max
+} ns_flag;
+
+typedef enum __ns_opcode {
+	ns_o_query = 0,
+	ns_o_iquery = 1,
+	ns_o_status = 2,
+	ns_o_notify = 4,
+	ns_o_update = 5,
+	ns_o_max = 6
+} ns_opcode;
+
+typedef	enum __ns_rcode {
+	ns_r_noerror = 0,
+	ns_r_formerr = 1,
+	ns_r_servfail = 2,
+	ns_r_nxdomain = 3,
+	ns_r_notimpl = 4,
+	ns_r_refused = 5,
+	ns_r_yxdomain = 6,
+	ns_r_yxrrset = 7,
+	ns_r_nxrrset = 8,
+	ns_r_notauth = 9,
+	ns_r_notzone = 10,
+	ns_r_max = 11,
+	ns_r_badvers = 16,
+	ns_r_badsig = 16,
+	ns_r_badkey = 17,
+	ns_r_badtime = 18
+} ns_rcode;
+
+typedef enum __ns_update_operation {
+	ns_uop_delete = 0,
+	ns_uop_add = 1,
+	ns_uop_max = 2
+} ns_update_operation;
+
+struct ns_tsig_key {
+        char name[NS_MAXDNAME], alg[NS_MAXDNAME];
+        unsigned char *data;
+        int len;
+};
+typedef struct ns_tsig_key ns_tsig_key;
+
+struct ns_tcp_tsig_state {
+	int counter;
+	struct dst_key *key;
+	void *ctx;
+	unsigned char sig[NS_PACKETSZ];
+	int siglen;
+};
+typedef struct ns_tcp_tsig_state ns_tcp_tsig_state;
+
+#define NS_TSIG_FUDGE 300
+#define NS_TSIG_TCP_COUNT 100
+#define NS_TSIG_ALG_HMAC_MD5 "HMAC-MD5.SIG-ALG.REG.INT"
+
+#define NS_TSIG_ERROR_NO_TSIG -10
+#define NS_TSIG_ERROR_NO_SPACE -11
+#define NS_TSIG_ERROR_FORMERR -12
+
+typedef enum __ns_type {
+	ns_t_invalid = 0,
+	ns_t_a = 1,
+	ns_t_ns = 2,
+	ns_t_md = 3,
+	ns_t_mf = 4,
+	ns_t_cname = 5,
+	ns_t_soa = 6,
+	ns_t_mb = 7,
+	ns_t_mg = 8,
+	ns_t_mr = 9,
+	ns_t_null = 10,
+	ns_t_wks = 11,
+	ns_t_ptr = 12,
+	ns_t_hinfo = 13,
+	ns_t_minfo = 14,
+	ns_t_mx = 15,
+	ns_t_txt = 16,
+	ns_t_rp = 17,
+	ns_t_afsdb = 18,
+	ns_t_x25 = 19,
+	ns_t_isdn = 20,
+	ns_t_rt = 21,
+	ns_t_nsap = 22,
+	ns_t_nsap_ptr = 23,
+	ns_t_sig = 24,
+	ns_t_key = 25,
+	ns_t_px = 26,
+	ns_t_gpos = 27,
+	ns_t_aaaa = 28,
+	ns_t_loc = 29,
+	ns_t_nxt = 30,
+	ns_t_eid = 31,
+	ns_t_nimloc = 32,
+	ns_t_srv = 33,
+	ns_t_atma = 34,
+	ns_t_naptr = 35,
+	ns_t_kx = 36,
+	ns_t_cert = 37,
+	ns_t_a6 = 38,
+	ns_t_dname = 39,
+	ns_t_sink = 40,
+	ns_t_opt = 41,
+	ns_t_apl = 42,
+	ns_t_tkey = 249,
+	ns_t_tsig = 250,
+	ns_t_ixfr = 251,
+	ns_t_axfr = 252,
+	ns_t_mailb = 253,
+	ns_t_maila = 254,
+	ns_t_any = 255,
+	ns_t_zxfr = 256,
+	ns_t_max = 65536
+} ns_type;
+
+#define	ns_t_qt_p(t) (ns_t_xfr_p(t) || (t) == ns_t_any || \
+		      (t) == ns_t_mailb || (t) == ns_t_maila)
+#define	ns_t_mrr_p(t) ((t) == ns_t_tsig || (t) == ns_t_opt)
+#define ns_t_rr_p(t) (!ns_t_qt_p(t) && !ns_t_mrr_p(t))
+#define ns_t_udp_p(t) ((t) != ns_t_axfr && (t) != ns_t_zxfr)
+#define ns_t_xfr_p(t) ((t) == ns_t_axfr || (t) == ns_t_ixfr || \
+		       (t) == ns_t_zxfr)
+
+typedef enum __ns_class {
+	ns_c_invalid = 0,
+	ns_c_in = 1,
+	ns_c_2 = 2,
+	ns_c_chaos = 3,
+	ns_c_hs = 4,
+	ns_c_none = 254,
+	ns_c_any = 255,
+	ns_c_max = 65536
+} ns_class;
+
+typedef enum __ns_key_types {
+	ns_kt_rsa = 1,
+	ns_kt_dh  = 2,
+	ns_kt_dsa = 3,
+	ns_kt_private = 254
+} ns_key_types;
+
+typedef enum __ns_cert_types {
+	cert_t_pkix = 1,
+	cert_t_spki = 2,
+	cert_t_pgp  = 3,
+	cert_t_url  = 253,
+	cert_t_oid  = 254
+} ns_cert_types;
+
+#define	NS_KEY_TYPEMASK		0xC000
+#define	NS_KEY_TYPE_AUTH_CONF	0x0000
+#define	NS_KEY_TYPE_CONF_ONLY	0x8000
+#define	NS_KEY_TYPE_AUTH_ONLY	0x4000
+#define	NS_KEY_TYPE_NO_KEY	0xC000
+#define	NS_KEY_NO_AUTH		0x8000
+#define	NS_KEY_NO_CONF		0x4000
+#define	NS_KEY_RESERVED2	0x2000
+#define	NS_KEY_EXTENDED_FLAGS	0x1000
+#define	NS_KEY_RESERVED4	0x0800
+#define	NS_KEY_RESERVED5	0x0400
+#define	NS_KEY_NAME_TYPE	0x0300
+#define	NS_KEY_NAME_USER	0x0000
+#define	NS_KEY_NAME_ENTITY	0x0200
+#define	NS_KEY_NAME_ZONE	0x0100
+#define	NS_KEY_NAME_RESERVED	0x0300
+#define	NS_KEY_RESERVED8	0x0080
+#define	NS_KEY_RESERVED9	0x0040
+#define	NS_KEY_RESERVED10	0x0020
+#define	NS_KEY_RESERVED11	0x0010
+#define	NS_KEY_SIGNATORYMASK	0x000F
+#define	NS_KEY_RESERVED_BITMASK ( NS_KEY_RESERVED2 | \
+				  NS_KEY_RESERVED4 | \
+				  NS_KEY_RESERVED5 | \
+				  NS_KEY_RESERVED8 | \
+				  NS_KEY_RESERVED9 | \
+				  NS_KEY_RESERVED10 | \
+				  NS_KEY_RESERVED11 )
+#define NS_KEY_RESERVED_BITMASK2 0xFFFF
+#define	NS_ALG_MD5RSA		1
+#define	NS_ALG_DH               2
+#define	NS_ALG_DSA              3
+#define	NS_ALG_DSS              NS_ALG_DSA
+#define	NS_ALG_EXPIRE_ONLY	253
+#define	NS_ALG_PRIVATE_OID	254
+
+#define NS_KEY_PROT_TLS         1
+#define NS_KEY_PROT_EMAIL       2
+#define NS_KEY_PROT_DNSSEC      3
+#define NS_KEY_PROT_IPSEC       4
+#define NS_KEY_PROT_ANY		255
+
+#define	NS_MD5RSA_MIN_BITS	 512
+#define	NS_MD5RSA_MAX_BITS	4096
+#define	NS_MD5RSA_MAX_BYTES	((NS_MD5RSA_MAX_BITS+7/8)*2+3)
+#define	NS_MD5RSA_MAX_BASE64	(((NS_MD5RSA_MAX_BYTES+2)/3)*4)
+#define NS_MD5RSA_MIN_SIZE	((NS_MD5RSA_MIN_BITS+7)/8)
+#define NS_MD5RSA_MAX_SIZE	((NS_MD5RSA_MAX_BITS+7)/8)
+
+#define NS_DSA_SIG_SIZE         41
+#define NS_DSA_MIN_SIZE         213
+#define NS_DSA_MAX_BYTES        405
+
+#define	NS_SIG_TYPE	0
+#define	NS_SIG_ALG	2
+#define	NS_SIG_LABELS	3
+#define	NS_SIG_OTTL	4
+#define	NS_SIG_EXPIR	8
+#define	NS_SIG_SIGNED	12
+#define	NS_SIG_FOOT	16
+#define	NS_SIG_SIGNER	18
+#define	NS_NXT_BITS 8
+#define	NS_NXT_BIT_SET(  n,p) (p[(n)/NS_NXT_BITS] |=  (0x80>>((n)%NS_NXT_BITS)))
+#define	NS_NXT_BIT_CLEAR(n,p) (p[(n)/NS_NXT_BITS] &= ~(0x80>>((n)%NS_NXT_BITS)))
+#define	NS_NXT_BIT_ISSET(n,p) (p[(n)/NS_NXT_BITS] &   (0x80>>((n)%NS_NXT_BITS)))
+#define NS_NXT_MAX 127
+
+#define NS_OPT_DNSSEC_OK        0x8000U
+#define NS_OPT_NSID		3
+
+#define NS_GET16(s, cp) (void)((s) = ns_get16(((cp)+=2)-2))
+#define NS_GET32(l, cp) (void)((l) = ns_get32(((cp)+=4)-4))
+#define NS_PUT16(s, cp) ns_put16((s), ((cp)+=2)-2)
+#define NS_PUT32(l, cp) ns_put32((l), ((cp)+=4)-4)
+
+unsigned ns_get16(const unsigned char *);
+unsigned long ns_get32(const unsigned char *);
+void ns_put16(unsigned, unsigned char *);
+void ns_put32(unsigned long, unsigned char *);
+
+int ns_initparse(const unsigned char *, int, ns_msg *);
+int ns_parserr(ns_msg *, ns_sect, int, ns_rr *);
+int ns_skiprr(const unsigned char *, const unsigned char *, ns_sect, int);
+int ns_name_uncompress(const unsigned char *, const unsigned char *, const unsigned char *, char *, size_t);
+
+
+#define	__BIND		19950621
+
+typedef struct {
+	unsigned	id :16;
+#if __BYTE_ORDER == __BIG_ENDIAN
+	unsigned	qr: 1;
+	unsigned	opcode: 4;
+	unsigned	aa: 1;
+	unsigned	tc: 1;
+	unsigned	rd: 1;
+	unsigned	ra: 1;
+	unsigned	unused :1;
+	unsigned	ad: 1;
+	unsigned	cd: 1;
+	unsigned	rcode :4;
+#else
+	unsigned	rd :1;
+	unsigned	tc :1;
+	unsigned	aa :1;
+	unsigned	opcode :4;
+	unsigned	qr :1;
+	unsigned	rcode :4;
+	unsigned	cd: 1;
+	unsigned	ad: 1;
+	unsigned	unused :1;
+	unsigned	ra :1;
+#endif
+	unsigned	qdcount :16;
+	unsigned	ancount :16;
+	unsigned	nscount :16;
+	unsigned	arcount :16;
+} HEADER;
+
+#define PACKETSZ	NS_PACKETSZ
+#define MAXDNAME	NS_MAXDNAME
+#define MAXCDNAME	NS_MAXCDNAME
+#define MAXLABEL	NS_MAXLABEL
+#define	HFIXEDSZ	NS_HFIXEDSZ
+#define QFIXEDSZ	NS_QFIXEDSZ
+#define RRFIXEDSZ	NS_RRFIXEDSZ
+#define	INT32SZ		NS_INT32SZ
+#define	INT16SZ		NS_INT16SZ
+#define INT8SZ		NS_INT8SZ
+#define	INADDRSZ	NS_INADDRSZ
+#define	IN6ADDRSZ	NS_IN6ADDRSZ
+#define	INDIR_MASK	NS_CMPRSFLGS
+#define NAMESERVER_PORT	NS_DEFAULTPORT
+
+#define S_ZONE		ns_s_zn
+#define S_PREREQ	ns_s_pr
+#define S_UPDATE	ns_s_ud
+#define S_ADDT		ns_s_ar
+
+#define QUERY		ns_o_query
+#define IQUERY		ns_o_iquery
+#define STATUS		ns_o_status
+#define	NS_NOTIFY_OP	ns_o_notify
+#define	NS_UPDATE_OP	ns_o_update
+
+#define NOERROR		ns_r_noerror
+#define FORMERR		ns_r_formerr
+#define SERVFAIL	ns_r_servfail
+#define NXDOMAIN	ns_r_nxdomain
+#define NOTIMP		ns_r_notimpl
+#define REFUSED		ns_r_refused
+#define YXDOMAIN	ns_r_yxdomain
+#define YXRRSET		ns_r_yxrrset
+#define NXRRSET		ns_r_nxrrset
+#define NOTAUTH		ns_r_notauth
+#define NOTZONE		ns_r_notzone
+
+#define DELETE		ns_uop_delete
+#define ADD		ns_uop_add
+
+#define T_A		ns_t_a
+#define T_NS		ns_t_ns
+#define T_MD		ns_t_md
+#define T_MF		ns_t_mf
+#define T_CNAME		ns_t_cname
+#define T_SOA		ns_t_soa
+#define T_MB		ns_t_mb
+#define T_MG		ns_t_mg
+#define T_MR		ns_t_mr
+#define T_NULL		ns_t_null
+#define T_WKS		ns_t_wks
+#define T_PTR		ns_t_ptr
+#define T_HINFO		ns_t_hinfo
+#define T_MINFO		ns_t_minfo
+#define T_MX		ns_t_mx
+#define T_TXT		ns_t_txt
+#define	T_RP		ns_t_rp
+#define T_AFSDB		ns_t_afsdb
+#define T_X25		ns_t_x25
+#define T_ISDN		ns_t_isdn
+#define T_RT		ns_t_rt
+#define T_NSAP		ns_t_nsap
+#define T_NSAP_PTR	ns_t_nsap_ptr
+#define	T_SIG		ns_t_sig
+#define	T_KEY		ns_t_key
+#define	T_PX		ns_t_px
+#define	T_GPOS		ns_t_gpos
+#define	T_AAAA		ns_t_aaaa
+#define	T_LOC		ns_t_loc
+#define	T_NXT		ns_t_nxt
+#define	T_EID		ns_t_eid
+#define	T_NIMLOC	ns_t_nimloc
+#define	T_SRV		ns_t_srv
+#define T_ATMA		ns_t_atma
+#define T_NAPTR		ns_t_naptr
+#define T_A6		ns_t_a6
+#define T_DNAME		ns_t_dname
+#define	T_TSIG		ns_t_tsig
+#define	T_IXFR		ns_t_ixfr
+#define T_AXFR		ns_t_axfr
+#define T_MAILB		ns_t_mailb
+#define T_MAILA		ns_t_maila
+#define T_ANY		ns_t_any
+
+#define C_IN		ns_c_in
+#define C_CHAOS		ns_c_chaos
+#define C_HS		ns_c_hs
+#define C_NONE		ns_c_none
+#define C_ANY		ns_c_any
+
+#define	GETSHORT		NS_GET16
+#define	GETLONG			NS_GET32
+#define	PUTSHORT		NS_PUT16
+#define	PUTLONG			NS_PUT32
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/arpa/nameser_compat.h b/i686-linux-musl/include/arpa/nameser_compat.h
new file mode 100644
index 0000000..3aac25c
--- /dev/null
+++ b/i686-linux-musl/include/arpa/nameser_compat.h
@@ -0,0 +1,2 @@
+#include <arpa/nameser.h>
+
diff --git a/i686-linux-musl/include/arpa/telnet.h b/i686-linux-musl/include/arpa/telnet.h
new file mode 100644
index 0000000..e2ad974
--- /dev/null
+++ b/i686-linux-musl/include/arpa/telnet.h
@@ -0,0 +1,251 @@
+#ifndef _ARPA_TELNET_H
+#define	_ARPA_TELNET_H
+
+#define	IAC	255
+#define	DONT	254
+#define	DO	253
+#define	WONT	252
+#define	WILL	251
+#define	SB	250
+#define	GA	249
+#define	EL	248
+#define	EC	247
+#define	AYT	246
+#define	AO	245
+#define	IP	244
+#define	BREAK	243
+#define	DM	242
+#define	NOP	241
+#define	SE	240
+#define EOR     239
+#define	ABORT	238
+#define	SUSP	237
+#define	xEOF	236
+
+#define SYNCH	242
+
+#define telcmds ((char [][6]){ "EOF", "SUSP", "ABORT", "EOR", "SE", "NOP", "DMARK", "BRK", "IP", "AO", "AYT", "EC", "EL", "GA", "SB", "WILL", "WONT", "DO", "DONT", "IAC", 0 })
+
+#define	TELCMD_FIRST	xEOF
+#define	TELCMD_LAST	IAC
+#define	TELCMD_OK(x)	((unsigned int)(x) <= TELCMD_LAST && \
+			 (unsigned int)(x) >= TELCMD_FIRST)
+#define	TELCMD(x)	telcmds[(x)-TELCMD_FIRST]
+
+#define TELOPT_BINARY	0
+#define TELOPT_ECHO	1
+#define	TELOPT_RCP	2
+#define	TELOPT_SGA	3
+#define	TELOPT_NAMS	4
+#define	TELOPT_STATUS	5
+#define	TELOPT_TM	6
+#define	TELOPT_RCTE	7
+#define TELOPT_NAOL 	8
+#define TELOPT_NAOP 	9
+#define TELOPT_NAOCRD	10
+#define TELOPT_NAOHTS	11
+#define TELOPT_NAOHTD	12
+#define TELOPT_NAOFFD	13
+#define TELOPT_NAOVTS	14
+#define TELOPT_NAOVTD	15
+#define TELOPT_NAOLFD	16
+#define TELOPT_XASCII	17
+#define	TELOPT_LOGOUT	18
+#define	TELOPT_BM	19
+#define	TELOPT_DET	20
+#define	TELOPT_SUPDUP	21
+#define	TELOPT_SUPDUPOUTPUT 22
+#define	TELOPT_SNDLOC	23
+#define	TELOPT_TTYPE	24
+#define	TELOPT_EOR	25
+#define	TELOPT_TUID	26
+#define	TELOPT_OUTMRK	27
+#define	TELOPT_TTYLOC	28
+#define	TELOPT_3270REGIME 29
+#define	TELOPT_X3PAD	30
+#define	TELOPT_NAWS	31
+#define	TELOPT_TSPEED	32
+#define	TELOPT_LFLOW	33
+#define TELOPT_LINEMODE	34
+#define TELOPT_XDISPLOC	35
+#define TELOPT_OLD_ENVIRON 36
+#define	TELOPT_AUTHENTICATION 37/* Authenticate */
+#define	TELOPT_ENCRYPT	38
+#define TELOPT_NEW_ENVIRON 39
+#define	TELOPT_EXOPL	255
+
+
+#define	NTELOPTS	(1+TELOPT_NEW_ENVIRON)
+#ifdef TELOPTS
+char *telopts[NTELOPTS+1] = {
+	"BINARY", "ECHO", "RCP", "SUPPRESS GO AHEAD", "NAME",
+	"STATUS", "TIMING MARK", "RCTE", "NAOL", "NAOP",
+	"NAOCRD", "NAOHTS", "NAOHTD", "NAOFFD", "NAOVTS",
+	"NAOVTD", "NAOLFD", "EXTEND ASCII", "LOGOUT", "BYTE MACRO",
+	"DATA ENTRY TERMINAL", "SUPDUP", "SUPDUP OUTPUT",
+	"SEND LOCATION", "TERMINAL TYPE", "END OF RECORD",
+	"TACACS UID", "OUTPUT MARKING", "TTYLOC",
+	"3270 REGIME", "X.3 PAD", "NAWS", "TSPEED", "LFLOW",
+	"LINEMODE", "XDISPLOC", "OLD-ENVIRON", "AUTHENTICATION",
+	"ENCRYPT", "NEW-ENVIRON",
+	0,
+};
+#define	TELOPT_FIRST	TELOPT_BINARY
+#define	TELOPT_LAST	TELOPT_NEW_ENVIRON
+#define	TELOPT_OK(x)	((unsigned int)(x) <= TELOPT_LAST)
+#define	TELOPT(x)	telopts[(x)-TELOPT_FIRST]
+#endif
+
+#define	TELQUAL_IS	0
+#define	TELQUAL_SEND	1
+#define	TELQUAL_INFO	2
+#define	TELQUAL_REPLY	2
+#define	TELQUAL_NAME	3
+
+#define	LFLOW_OFF		0
+#define	LFLOW_ON		1
+#define	LFLOW_RESTART_ANY	2
+#define	LFLOW_RESTART_XON	3
+
+
+#define	LM_MODE		1
+#define	LM_FORWARDMASK	2
+#define	LM_SLC		3
+
+#define	MODE_EDIT	0x01
+#define	MODE_TRAPSIG	0x02
+#define	MODE_ACK	0x04
+#define MODE_SOFT_TAB	0x08
+#define MODE_LIT_ECHO	0x10
+
+#define	MODE_MASK	0x1f
+
+#define MODE_FLOW		0x0100
+#define MODE_ECHO		0x0200
+#define MODE_INBIN		0x0400
+#define MODE_OUTBIN		0x0800
+#define MODE_FORCE		0x1000
+
+#define	SLC_SYNCH	1
+#define	SLC_BRK		2
+#define	SLC_IP		3
+#define	SLC_AO		4
+#define	SLC_AYT		5
+#define	SLC_EOR		6
+#define	SLC_ABORT	7
+#define	SLC_EOF		8
+#define	SLC_SUSP	9
+#define	SLC_EC		10
+#define	SLC_EL		11
+#define	SLC_EW		12
+#define	SLC_RP		13
+#define	SLC_LNEXT	14
+#define	SLC_XON		15
+#define	SLC_XOFF	16
+#define	SLC_FORW1	17
+#define	SLC_FORW2	18
+
+#define	NSLC		18
+
+#define	SLC_NAMELIST	"0", "SYNCH", "BRK", "IP", "AO", "AYT", "EOR", \
+			"ABORT", "EOF", "SUSP", "EC", "EL", "EW", "RP", \
+			"LNEXT", "XON", "XOFF", "FORW1", "FORW2", 0,
+#ifdef	SLC_NAMES
+char *slc_names[] = {
+	SLC_NAMELIST
+};
+#else
+extern char *slc_names[];
+#define	SLC_NAMES SLC_NAMELIST
+#endif
+
+#define	SLC_NAME_OK(x)	((unsigned int)(x) <= NSLC)
+#define SLC_NAME(x)	slc_names[x]
+
+#define	SLC_NOSUPPORT	0
+#define	SLC_CANTCHANGE	1
+#define	SLC_VARIABLE	2
+#define	SLC_DEFAULT	3
+#define	SLC_LEVELBITS	0x03
+
+#define	SLC_FUNC	0
+#define	SLC_FLAGS	1
+#define	SLC_VALUE	2
+
+#define	SLC_ACK		0x80
+#define	SLC_FLUSHIN	0x40
+#define	SLC_FLUSHOUT	0x20
+
+#define	OLD_ENV_VAR	1
+#define	OLD_ENV_VALUE	0
+#define	NEW_ENV_VAR	0
+#define	NEW_ENV_VALUE	1
+#define	ENV_ESC		2
+#define ENV_USERVAR	3
+
+#define	AUTH_WHO_CLIENT		0
+#define	AUTH_WHO_SERVER		1
+#define	AUTH_WHO_MASK		1
+
+#define	AUTH_HOW_ONE_WAY	0
+#define	AUTH_HOW_MUTUAL		2
+#define	AUTH_HOW_MASK		2
+
+#define	AUTHTYPE_NULL		0
+#define	AUTHTYPE_KERBEROS_V4	1
+#define	AUTHTYPE_KERBEROS_V5	2
+#define	AUTHTYPE_SPX		3
+#define	AUTHTYPE_MINK		4
+#define	AUTHTYPE_CNT		5
+
+#define	AUTHTYPE_TEST		99
+
+#ifdef	AUTH_NAMES
+char *authtype_names[] = {
+	"NULL", "KERBEROS_V4", "KERBEROS_V5", "SPX", "MINK", 0,
+};
+#else
+extern char *authtype_names[];
+#endif
+
+#define	AUTHTYPE_NAME_OK(x)	((unsigned int)(x) < AUTHTYPE_CNT)
+#define	AUTHTYPE_NAME(x)	authtype_names[x]
+
+#define	ENCRYPT_IS		0
+#define	ENCRYPT_SUPPORT		1
+#define	ENCRYPT_REPLY		2
+#define	ENCRYPT_START		3
+#define	ENCRYPT_END		4
+#define	ENCRYPT_REQSTART	5
+#define	ENCRYPT_REQEND		6
+#define	ENCRYPT_ENC_KEYID	7
+#define	ENCRYPT_DEC_KEYID	8
+#define	ENCRYPT_CNT		9
+
+#define	ENCTYPE_ANY		0
+#define	ENCTYPE_DES_CFB64	1
+#define	ENCTYPE_DES_OFB64	2
+#define	ENCTYPE_CNT		3
+
+#ifdef	ENCRYPT_NAMES
+char *encrypt_names[] = {
+	"IS", "SUPPORT", "REPLY", "START", "END",
+	"REQUEST-START", "REQUEST-END", "ENC-KEYID", "DEC-KEYID",
+	0,
+};
+char *enctype_names[] = {
+	"ANY", "DES_CFB64",  "DES_OFB64",  0,
+};
+#else
+extern char *encrypt_names[];
+extern char *enctype_names[];
+#endif
+
+
+#define	ENCRYPT_NAME_OK(x)	((unsigned int)(x) < ENCRYPT_CNT)
+#define	ENCRYPT_NAME(x)		encrypt_names[x]
+
+#define	ENCTYPE_NAME_OK(x)	((unsigned int)(x) < ENCTYPE_CNT)
+#define	ENCTYPE_NAME(x)		enctype_names[x]
+
+#endif
diff --git a/i686-linux-musl/include/arpa/tftp.h b/i686-linux-musl/include/arpa/tftp.h
new file mode 100644
index 0000000..799c54f
--- /dev/null
+++ b/i686-linux-musl/include/arpa/tftp.h
@@ -0,0 +1,31 @@
+#ifndef _ARPA_TFTP_H
+#define _ARPA_TFTP_H
+#define SEGSIZE 512
+#define RRQ 01
+#define WRQ 02
+#define DATA 03
+#define ACK 04
+#define ERROR 05
+struct tftphdr {
+	short th_opcode;
+	union {
+		unsigned short tu_block;
+		short tu_code;
+		char tu_stuff[1];
+	} th_u;
+	char th_data[1];
+};
+#define th_block th_u.tu_block
+#define th_code th_u.tu_code
+#define th_stuff th_u.tu_stuff
+#define th_msg th_data
+#define EUNDEF 0
+#define ENOTFOUND 1
+#define EACCESS 2
+#define ENOSPACE 3
+#define EBADOP 4
+#define EBADID 5
+#define EEXISTS 6
+#define ENOUSER 7
+#endif
+
diff --git a/i686-linux-musl/include/asm-arm/asm/auxvec.h b/i686-linux-musl/include/asm-arm/asm/auxvec.h
new file mode 100644
index 0000000..ae03ed3
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/auxvec.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 __ASM_AUXVEC_H
+#define __ASM_AUXVEC_H
+#define AT_SYSINFO_EHDR 33
+#endif
diff --git a/i686-linux-musl/include/asm-arm/asm/bitsperlong.h b/i686-linux-musl/include/asm-arm/asm/bitsperlong.h
new file mode 100644
index 0000000..5dc5060
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/bitsperlong.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-generic/bitsperlong.h>
diff --git a/i686-linux-musl/include/asm-arm/asm/bpf_perf_event.h b/i686-linux-musl/include/asm-arm/asm/bpf_perf_event.h
new file mode 100644
index 0000000..fa7bc48
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/bpf_perf_event.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-generic/bpf_perf_event.h>
diff --git a/i686-linux-musl/include/asm-arm/asm/byteorder.h b/i686-linux-musl/include/asm-arm/asm/byteorder.h
new file mode 100644
index 0000000..a253654
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/byteorder.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 __ASM_ARM_BYTEORDER_H
+#define __ASM_ARM_BYTEORDER_H
+#include <linux/byteorder/little_endian.h>
+#endif
diff --git a/i686-linux-musl/include/asm-arm/asm/errno.h b/i686-linux-musl/include/asm-arm/asm/errno.h
new file mode 100644
index 0000000..392cd94
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/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-generic/errno.h>
diff --git a/i686-linux-musl/include/asm-arm/asm/fcntl.h b/i686-linux-musl/include/asm-arm/asm/fcntl.h
new file mode 100644
index 0000000..f2f14c3
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/fcntl.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 _ARM_FCNTL_H
+#define _ARM_FCNTL_H
+#define O_DIRECTORY 040000
+#define O_NOFOLLOW 0100000
+#define O_DIRECT 0200000
+#define O_LARGEFILE 0400000
+#include <asm-generic/fcntl.h>
+#endif
diff --git a/i686-linux-musl/include/asm-arm/asm/hwcap.h b/i686-linux-musl/include/asm-arm/asm/hwcap.h
new file mode 100644
index 0000000..fdc5405
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/hwcap.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__ASMARM_HWCAP_H
+#define _UAPI__ASMARM_HWCAP_H
+#define HWCAP_SWP (1 << 0)
+#define HWCAP_HALF (1 << 1)
+#define HWCAP_THUMB (1 << 2)
+#define HWCAP_26BIT (1 << 3)
+#define HWCAP_FAST_MULT (1 << 4)
+#define HWCAP_FPA (1 << 5)
+#define HWCAP_VFP (1 << 6)
+#define HWCAP_EDSP (1 << 7)
+#define HWCAP_JAVA (1 << 8)
+#define HWCAP_IWMMXT (1 << 9)
+#define HWCAP_CRUNCH (1 << 10)
+#define HWCAP_THUMBEE (1 << 11)
+#define HWCAP_NEON (1 << 12)
+#define HWCAP_VFPv3 (1 << 13)
+#define HWCAP_VFPv3D16 (1 << 14)
+#define HWCAP_TLS (1 << 15)
+#define HWCAP_VFPv4 (1 << 16)
+#define HWCAP_IDIVA (1 << 17)
+#define HWCAP_IDIVT (1 << 18)
+#define HWCAP_VFPD32 (1 << 19)
+#define HWCAP_IDIV (HWCAP_IDIVA | HWCAP_IDIVT)
+#define HWCAP_LPAE (1 << 20)
+#define HWCAP_EVTSTRM (1 << 21)
+#define HWCAP2_AES (1 << 0)
+#define HWCAP2_PMULL (1 << 1)
+#define HWCAP2_SHA1 (1 << 2)
+#define HWCAP2_SHA2 (1 << 3)
+#define HWCAP2_CRC32 (1 << 4)
+#endif
diff --git a/i686-linux-musl/include/asm-arm/asm/ioctl.h b/i686-linux-musl/include/asm-arm/asm/ioctl.h
new file mode 100644
index 0000000..7b7bd37
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/ioctl.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-generic/ioctl.h>
diff --git a/i686-linux-musl/include/asm-arm/asm/ioctls.h b/i686-linux-musl/include/asm-arm/asm/ioctls.h
new file mode 100644
index 0000000..e83b2cc
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/ioctls.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 __ASM_ARM_IOCTLS_H
+#define __ASM_ARM_IOCTLS_H
+#define FIOQSIZE 0x545E
+#include <asm-generic/ioctls.h>
+#endif
diff --git a/i686-linux-musl/include/asm-arm/asm/ipcbuf.h b/i686-linux-musl/include/asm-arm/asm/ipcbuf.h
new file mode 100644
index 0000000..0021f14
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/ipcbuf.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-generic/ipcbuf.h>
diff --git a/i686-linux-musl/include/asm-arm/asm/kvm_para.h b/i686-linux-musl/include/asm-arm/asm/kvm_para.h
new file mode 100644
index 0000000..e19f7a0
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/kvm_para.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-generic/kvm_para.h>
diff --git a/i686-linux-musl/include/asm-arm/asm/mman.h b/i686-linux-musl/include/asm-arm/asm/mman.h
new file mode 100644
index 0000000..ec9453d
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/mman.h
@@ -0,0 +1,20 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/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-generic/mman.h>
+#define arch_mmap_check(addr,len,flags) (((flags) & MAP_FIXED && (addr) < FIRST_USER_ADDRESS) ? - EINVAL : 0)
diff --git a/i686-linux-musl/include/asm-arm/asm/msgbuf.h b/i686-linux-musl/include/asm-arm/asm/msgbuf.h
new file mode 100644
index 0000000..7809e3c
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/msgbuf.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-generic/msgbuf.h>
diff --git a/i686-linux-musl/include/asm-arm/asm/param.h b/i686-linux-musl/include/asm-arm/asm/param.h
new file mode 100644
index 0000000..5ccf935
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/param.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-generic/param.h>
diff --git a/i686-linux-musl/include/asm-arm/asm/perf_regs.h b/i686-linux-musl/include/asm-arm/asm/perf_regs.h
new file mode 100644
index 0000000..ea2ff81
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/perf_regs.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 _ASM_ARM_PERF_REGS_H
+#define _ASM_ARM_PERF_REGS_H
+enum perf_event_arm_regs {
+  PERF_REG_ARM_R0,
+  PERF_REG_ARM_R1,
+  PERF_REG_ARM_R2,
+  PERF_REG_ARM_R3,
+  PERF_REG_ARM_R4,
+  PERF_REG_ARM_R5,
+  PERF_REG_ARM_R6,
+  PERF_REG_ARM_R7,
+  PERF_REG_ARM_R8,
+  PERF_REG_ARM_R9,
+  PERF_REG_ARM_R10,
+  PERF_REG_ARM_FP,
+  PERF_REG_ARM_IP,
+  PERF_REG_ARM_SP,
+  PERF_REG_ARM_LR,
+  PERF_REG_ARM_PC,
+  PERF_REG_ARM_MAX,
+};
+#endif
diff --git a/i686-linux-musl/include/asm-arm/asm/poll.h b/i686-linux-musl/include/asm-arm/asm/poll.h
new file mode 100644
index 0000000..d7e8adc
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/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-generic/poll.h>
diff --git a/i686-linux-musl/include/asm-arm/asm/posix_types.h b/i686-linux-musl/include/asm-arm/asm/posix_types.h
new file mode 100644
index 0000000..ff5138b
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/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 __ARCH_ARM_POSIX_TYPES_H
+#define __ARCH_ARM_POSIX_TYPES_H
+typedef unsigned short __kernel_mode_t;
+#define __kernel_mode_t __kernel_mode_t
+typedef unsigned short __kernel_ipc_pid_t;
+#define __kernel_ipc_pid_t __kernel_ipc_pid_t
+typedef unsigned short __kernel_uid_t;
+typedef unsigned short __kernel_gid_t;
+#define __kernel_uid_t __kernel_uid_t
+typedef unsigned short __kernel_old_dev_t;
+#define __kernel_old_dev_t __kernel_old_dev_t
+#include <asm-generic/posix_types.h>
+#endif
diff --git a/i686-linux-musl/include/asm-arm/asm/ptrace.h b/i686-linux-musl/include/asm-arm/asm/ptrace.h
new file mode 100644
index 0000000..b0291dc
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/ptrace.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 _UAPI__ASM_ARM_PTRACE_H
+#define _UAPI__ASM_ARM_PTRACE_H
+#include <asm/hwcap.h>
+#define PTRACE_GETREGS 12
+#define PTRACE_SETREGS 13
+#define PTRACE_GETFPREGS 14
+#define PTRACE_SETFPREGS 15
+#define PTRACE_GETWMMXREGS 18
+#define PTRACE_SETWMMXREGS 19
+#define PTRACE_OLDSETOPTIONS 21
+#define PTRACE_GET_THREAD_AREA 22
+#define PTRACE_SET_SYSCALL 23
+#define PTRACE_GETCRUNCHREGS 25
+#define PTRACE_SETCRUNCHREGS 26
+#define PTRACE_GETVFPREGS 27
+#define PTRACE_SETVFPREGS 28
+#define PTRACE_GETHBPREGS 29
+#define PTRACE_SETHBPREGS 30
+#define PTRACE_GETFDPIC 31
+#define PTRACE_GETFDPIC_EXEC 0
+#define PTRACE_GETFDPIC_INTERP 1
+#define USR26_MODE 0x00000000
+#define FIQ26_MODE 0x00000001
+#define IRQ26_MODE 0x00000002
+#define SVC26_MODE 0x00000003
+#define USR_MODE 0x00000010
+#define SVC_MODE 0x00000013
+#define FIQ_MODE 0x00000011
+#define IRQ_MODE 0x00000012
+#define MON_MODE 0x00000016
+#define ABT_MODE 0x00000017
+#define HYP_MODE 0x0000001a
+#define UND_MODE 0x0000001b
+#define SYSTEM_MODE 0x0000001f
+#define MODE32_BIT 0x00000010
+#define MODE_MASK 0x0000001f
+#define V4_PSR_T_BIT 0x00000020
+#define V7M_PSR_T_BIT 0x01000000
+#define PSR_T_BIT V4_PSR_T_BIT
+#define PSR_F_BIT 0x00000040
+#define PSR_I_BIT 0x00000080
+#define PSR_A_BIT 0x00000100
+#define PSR_E_BIT 0x00000200
+#define PSR_J_BIT 0x01000000
+#define PSR_Q_BIT 0x08000000
+#define PSR_V_BIT 0x10000000
+#define PSR_C_BIT 0x20000000
+#define PSR_Z_BIT 0x40000000
+#define PSR_N_BIT 0x80000000
+#define PSR_f 0xff000000
+#define PSR_s 0x00ff0000
+#define PSR_x 0x0000ff00
+#define PSR_c 0x000000ff
+#define APSR_MASK 0xf80f0000
+#define PSR_ISET_MASK 0x01000010
+#define PSR_IT_MASK 0x0600fc00
+#define PSR_ENDIAN_MASK 0x00000200
+#define PSR_ENDSTATE 0
+#define PT_TEXT_ADDR 0x10000
+#define PT_DATA_ADDR 0x10004
+#define PT_TEXT_END_ADDR 0x10008
+#ifndef __ASSEMBLY__
+struct pt_regs {
+  long uregs[18];
+};
+#define ARM_cpsr uregs[16]
+#define ARM_pc uregs[15]
+#define ARM_lr uregs[14]
+#define ARM_sp uregs[13]
+#define ARM_ip uregs[12]
+#define ARM_fp uregs[11]
+#define ARM_r10 uregs[10]
+#define ARM_r9 uregs[9]
+#define ARM_r8 uregs[8]
+#define ARM_r7 uregs[7]
+#define ARM_r6 uregs[6]
+#define ARM_r5 uregs[5]
+#define ARM_r4 uregs[4]
+#define ARM_r3 uregs[3]
+#define ARM_r2 uregs[2]
+#define ARM_r1 uregs[1]
+#define ARM_r0 uregs[0]
+#define ARM_ORIG_r0 uregs[17]
+#define ARM_VFPREGS_SIZE (32 * 8 + 4)
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-arm/asm/resource.h b/i686-linux-musl/include/asm-arm/asm/resource.h
new file mode 100644
index 0000000..371adb5
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/resource.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-generic/resource.h>
diff --git a/i686-linux-musl/include/asm-arm/asm/sembuf.h b/i686-linux-musl/include/asm-arm/asm/sembuf.h
new file mode 100644
index 0000000..6ce6549
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/sembuf.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-generic/sembuf.h>
diff --git a/i686-linux-musl/include/asm-arm/asm/setup.h b/i686-linux-musl/include/asm-arm/asm/setup.h
new file mode 100644
index 0000000..672a72a
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/setup.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__ASMARM_SETUP_H
+#define _UAPI__ASMARM_SETUP_H
+#include <linux/types.h>
+#define COMMAND_LINE_SIZE 1024
+#define ATAG_NONE 0x00000000
+struct tag_header {
+  __u32 size;
+  __u32 tag;
+};
+#define ATAG_CORE 0x54410001
+struct tag_core {
+  __u32 flags;
+  __u32 pagesize;
+  __u32 rootdev;
+};
+#define ATAG_MEM 0x54410002
+struct tag_mem32 {
+  __u32 size;
+  __u32 start;
+};
+#define ATAG_VIDEOTEXT 0x54410003
+struct tag_videotext {
+  __u8 x;
+  __u8 y;
+  __u16 video_page;
+  __u8 video_mode;
+  __u8 video_cols;
+  __u16 video_ega_bx;
+  __u8 video_lines;
+  __u8 video_isvga;
+  __u16 video_points;
+};
+#define ATAG_RAMDISK 0x54410004
+struct tag_ramdisk {
+  __u32 flags;
+  __u32 size;
+  __u32 start;
+};
+#define ATAG_INITRD 0x54410005
+#define ATAG_INITRD2 0x54420005
+struct tag_initrd {
+  __u32 start;
+  __u32 size;
+};
+#define ATAG_SERIAL 0x54410006
+struct tag_serialnr {
+  __u32 low;
+  __u32 high;
+};
+#define ATAG_REVISION 0x54410007
+struct tag_revision {
+  __u32 rev;
+};
+#define ATAG_VIDEOLFB 0x54410008
+struct tag_videolfb {
+  __u16 lfb_width;
+  __u16 lfb_height;
+  __u16 lfb_depth;
+  __u16 lfb_linelength;
+  __u32 lfb_base;
+  __u32 lfb_size;
+  __u8 red_size;
+  __u8 red_pos;
+  __u8 green_size;
+  __u8 green_pos;
+  __u8 blue_size;
+  __u8 blue_pos;
+  __u8 rsvd_size;
+  __u8 rsvd_pos;
+};
+#define ATAG_CMDLINE 0x54410009
+struct tag_cmdline {
+  char cmdline[1];
+};
+#define ATAG_ACORN 0x41000101
+struct tag_acorn {
+  __u32 memc_control_reg;
+  __u32 vram_pages;
+  __u8 sounddefault;
+  __u8 adfsdrives;
+};
+#define ATAG_MEMCLK 0x41000402
+struct tag_memclk {
+  __u32 fmemclk;
+};
+struct tag {
+  struct tag_header hdr;
+  union {
+    struct tag_core core;
+    struct tag_mem32 mem;
+    struct tag_videotext videotext;
+    struct tag_ramdisk ramdisk;
+    struct tag_initrd initrd;
+    struct tag_serialnr serialnr;
+    struct tag_revision revision;
+    struct tag_videolfb videolfb;
+    struct tag_cmdline cmdline;
+    struct tag_acorn acorn;
+    struct tag_memclk memclk;
+  } u;
+};
+struct tagtable {
+  __u32 tag;
+  int(* parse) (const struct tag *);
+};
+#define tag_member_present(tag,member) ((unsigned long) (& ((struct tag *) 0L)->member + 1) <= (tag)->hdr.size * 4)
+#define tag_next(t) ((struct tag *) ((__u32 *) (t) + (t)->hdr.size))
+#define tag_size(type) ((sizeof(struct tag_header) + sizeof(struct type)) >> 2)
+#define for_each_tag(t,base) for(t = base; t->hdr.size; t = tag_next(t))
+#endif
diff --git a/i686-linux-musl/include/asm-arm/asm/shmbuf.h b/i686-linux-musl/include/asm-arm/asm/shmbuf.h
new file mode 100644
index 0000000..fe8b1be
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/shmbuf.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-generic/shmbuf.h>
diff --git a/i686-linux-musl/include/asm-arm/asm/sigcontext.h b/i686-linux-musl/include/asm-arm/asm/sigcontext.h
new file mode 100644
index 0000000..b7504d6
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/sigcontext.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 _ASMARM_SIGCONTEXT_H
+#define _ASMARM_SIGCONTEXT_H
+struct sigcontext {
+  unsigned long trap_no;
+  unsigned long error_code;
+  unsigned long oldmask;
+  unsigned long arm_r0;
+  unsigned long arm_r1;
+  unsigned long arm_r2;
+  unsigned long arm_r3;
+  unsigned long arm_r4;
+  unsigned long arm_r5;
+  unsigned long arm_r6;
+  unsigned long arm_r7;
+  unsigned long arm_r8;
+  unsigned long arm_r9;
+  unsigned long arm_r10;
+  unsigned long arm_fp;
+  unsigned long arm_ip;
+  unsigned long arm_sp;
+  unsigned long arm_lr;
+  unsigned long arm_pc;
+  unsigned long arm_cpsr;
+  unsigned long fault_address;
+};
+#endif
diff --git a/i686-linux-musl/include/asm-arm/asm/siginfo.h b/i686-linux-musl/include/asm-arm/asm/siginfo.h
new file mode 100644
index 0000000..a31ebb2
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/siginfo.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-generic/siginfo.h>
diff --git a/i686-linux-musl/include/asm-arm/asm/signal.h b/i686-linux-musl/include/asm-arm/asm/signal.h
new file mode 100644
index 0000000..5f7e0c5
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/signal.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_ASMARM_SIGNAL_H
+#define _UAPI_ASMARM_SIGNAL_H
+#include <linux/types.h>
+struct siginfo;
+#define _KERNEL_NSIG 32
+typedef unsigned long sigset_t;
+#define SIGHUP 1
+#define SIGINT 2
+#define SIGQUIT 3
+#define SIGILL 4
+#define SIGTRAP 5
+#define SIGABRT 6
+#define SIGIOT 6
+#define SIGBUS 7
+#define SIGFPE 8
+#define SIGKILL 9
+#define SIGUSR1 10
+#define SIGSEGV 11
+#define SIGUSR2 12
+#define SIGPIPE 13
+#define SIGALRM 14
+#define SIGTERM 15
+#define SIGSTKFLT 16
+#define SIGCHLD 17
+#define SIGCONT 18
+#define SIGSTOP 19
+#define SIGTSTP 20
+#define SIGTTIN 21
+#define SIGTTOU 22
+#define SIGURG 23
+#define SIGXCPU 24
+#define SIGXFSZ 25
+#define SIGVTALRM 26
+#define SIGPROF 27
+#define SIGWINCH 28
+#define SIGIO 29
+#define SIGPOLL SIGIO
+#define SIGPWR 30
+#define SIGSYS 31
+#define SIGUNUSED 31
+#define __SIGRTMIN 32
+#define __SIGRTMAX _KERNEL__NSIG
+#define SIGSWI 32
+#define SA_THIRTYTWO 0x02000000
+#define SA_RESTORER 0x04000000
+#define MINSIGSTKSZ 2048
+#define SIGSTKSZ 8192
+#include <asm-generic/signal-defs.h>
+struct sigaction {
+  union {
+    __sighandler_t _sa_handler;
+    void(* _sa_sigaction) (int, struct siginfo *, void *);
+  } _u;
+  sigset_t sa_mask;
+  unsigned long sa_flags;
+  void(* sa_restorer) (void);
+};
+#define sa_handler _u._sa_handler
+#define sa_sigaction _u._sa_sigaction
+typedef struct sigaltstack {
+  void __user * ss_sp;
+  int ss_flags;
+  size_t ss_size;
+} stack_t;
+#endif
diff --git a/i686-linux-musl/include/asm-arm/asm/socket.h b/i686-linux-musl/include/asm-arm/asm/socket.h
new file mode 100644
index 0000000..50a9874
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/socket.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-generic/socket.h>
diff --git a/i686-linux-musl/include/asm-arm/asm/sockios.h b/i686-linux-musl/include/asm-arm/asm/sockios.h
new file mode 100644
index 0000000..710db92
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/sockios.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-generic/sockios.h>
diff --git a/i686-linux-musl/include/asm-arm/asm/stat.h b/i686-linux-musl/include/asm-arm/asm/stat.h
new file mode 100644
index 0000000..27ec243
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/stat.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 _ASMARM_STAT_H
+#define _ASMARM_STAT_H
+struct __old_kernel_stat {
+  unsigned short st_dev;
+  unsigned short st_ino;
+  unsigned short st_mode;
+  unsigned short st_nlink;
+  unsigned short st_uid;
+  unsigned short st_gid;
+  unsigned short st_rdev;
+  unsigned long st_size;
+  unsigned long st_atime;
+  unsigned long st_mtime;
+  unsigned long st_ctime;
+};
+#define STAT_HAVE_NSEC
+struct stat {
+  unsigned long st_dev;
+  unsigned long st_ino;
+  unsigned short st_mode;
+  unsigned short st_nlink;
+  unsigned short st_uid;
+  unsigned short st_gid;
+  unsigned long st_rdev;
+  unsigned long st_size;
+  unsigned long st_blksize;
+  unsigned long st_blocks;
+  unsigned long st_atime;
+  unsigned long st_atime_nsec;
+  unsigned long st_mtime;
+  unsigned long st_mtime_nsec;
+  unsigned long st_ctime;
+  unsigned long st_ctime_nsec;
+  unsigned long __unused4;
+  unsigned long __unused5;
+};
+struct stat64 {
+  unsigned long long st_dev;
+  unsigned char __pad0[4];
+#define STAT64_HAS_BROKEN_ST_INO 1
+  unsigned long __st_ino;
+  unsigned int st_mode;
+  unsigned int st_nlink;
+  unsigned long st_uid;
+  unsigned long st_gid;
+  unsigned long long st_rdev;
+  unsigned char __pad3[4];
+  long long st_size;
+  unsigned long st_blksize;
+  unsigned long long st_blocks;
+  unsigned long st_atime;
+  unsigned long st_atime_nsec;
+  unsigned long st_mtime;
+  unsigned long st_mtime_nsec;
+  unsigned long st_ctime;
+  unsigned long st_ctime_nsec;
+  unsigned long long st_ino;
+};
+#endif
diff --git a/i686-linux-musl/include/asm-arm/asm/statfs.h b/i686-linux-musl/include/asm-arm/asm/statfs.h
new file mode 100644
index 0000000..7e44ad1
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/statfs.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 _ASMARM_STATFS_H
+#define _ASMARM_STATFS_H
+#define ARCH_PACK_STATFS64 __attribute__((packed, aligned(4)))
+#include <asm-generic/statfs.h>
+#endif
diff --git a/i686-linux-musl/include/asm-arm/asm/swab.h b/i686-linux-musl/include/asm-arm/asm/swab.h
new file mode 100644
index 0000000..081a76e
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/swab.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__ASM_ARM_SWAB_H
+#define _UAPI__ASM_ARM_SWAB_H
+#include <linux/compiler.h>
+#include <linux/types.h>
+#ifndef __STRICT_ANSI__
+#define __SWAB_64_THRU_32__
+#endif
+#ifndef __thumb__
+#endif
+#define __arch_swab32 __arch_swab32
+#endif
diff --git a/i686-linux-musl/include/asm-arm/asm/termbits.h b/i686-linux-musl/include/asm-arm/asm/termbits.h
new file mode 100644
index 0000000..42af6fe
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/termbits.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-generic/termbits.h>
diff --git a/i686-linux-musl/include/asm-arm/asm/termios.h b/i686-linux-musl/include/asm-arm/asm/termios.h
new file mode 100644
index 0000000..feca4c6
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/termios.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-generic/termios.h>
diff --git a/i686-linux-musl/include/asm-arm/asm/types.h b/i686-linux-musl/include/asm-arm/asm/types.h
new file mode 100644
index 0000000..461e485
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/types.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_ASM_TYPES_H
+#define _UAPI_ASM_TYPES_H
+#include <asm-generic/int-ll64.h>
+#ifdef __INT32_TYPE__
+#undef __INT32_TYPE__
+#define __INT32_TYPE__ int
+#endif
+#ifdef __UINT32_TYPE__
+#undef __UINT32_TYPE__
+#define __UINT32_TYPE__ unsigned int
+#endif
+#ifdef __UINTPTR_TYPE__
+#undef __UINTPTR_TYPE__
+#define __UINTPTR_TYPE__ unsigned long
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-arm/asm/unistd-eabi.h b/i686-linux-musl/include/asm-arm/asm/unistd-eabi.h
new file mode 100644
index 0000000..2af0e97
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/unistd-eabi.h
@@ -0,0 +1,423 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_UNISTD_EABI_H
+#define _UAPI_ASM_UNISTD_EABI_H
+#define __NR_restart_syscall (__NR_SYSCALL_BASE + 0)
+#define __NR_exit (__NR_SYSCALL_BASE + 1)
+#define __NR_fork (__NR_SYSCALL_BASE + 2)
+#define __NR_read (__NR_SYSCALL_BASE + 3)
+#define __NR_write (__NR_SYSCALL_BASE + 4)
+#define __NR_open (__NR_SYSCALL_BASE + 5)
+#define __NR_close (__NR_SYSCALL_BASE + 6)
+#define __NR_creat (__NR_SYSCALL_BASE + 8)
+#define __NR_link (__NR_SYSCALL_BASE + 9)
+#define __NR_unlink (__NR_SYSCALL_BASE + 10)
+#define __NR_execve (__NR_SYSCALL_BASE + 11)
+#define __NR_chdir (__NR_SYSCALL_BASE + 12)
+#define __NR_mknod (__NR_SYSCALL_BASE + 14)
+#define __NR_chmod (__NR_SYSCALL_BASE + 15)
+#define __NR_lchown (__NR_SYSCALL_BASE + 16)
+#define __NR_lseek (__NR_SYSCALL_BASE + 19)
+#define __NR_getpid (__NR_SYSCALL_BASE + 20)
+#define __NR_mount (__NR_SYSCALL_BASE + 21)
+#define __NR_setuid (__NR_SYSCALL_BASE + 23)
+#define __NR_getuid (__NR_SYSCALL_BASE + 24)
+#define __NR_ptrace (__NR_SYSCALL_BASE + 26)
+#define __NR_pause (__NR_SYSCALL_BASE + 29)
+#define __NR_access (__NR_SYSCALL_BASE + 33)
+#define __NR_nice (__NR_SYSCALL_BASE + 34)
+#define __NR_sync (__NR_SYSCALL_BASE + 36)
+#define __NR_kill (__NR_SYSCALL_BASE + 37)
+#define __NR_rename (__NR_SYSCALL_BASE + 38)
+#define __NR_mkdir (__NR_SYSCALL_BASE + 39)
+#define __NR_rmdir (__NR_SYSCALL_BASE + 40)
+#define __NR_dup (__NR_SYSCALL_BASE + 41)
+#define __NR_pipe (__NR_SYSCALL_BASE + 42)
+#define __NR_times (__NR_SYSCALL_BASE + 43)
+#define __NR_brk (__NR_SYSCALL_BASE + 45)
+#define __NR_setgid (__NR_SYSCALL_BASE + 46)
+#define __NR_getgid (__NR_SYSCALL_BASE + 47)
+#define __NR_geteuid (__NR_SYSCALL_BASE + 49)
+#define __NR_getegid (__NR_SYSCALL_BASE + 50)
+#define __NR_acct (__NR_SYSCALL_BASE + 51)
+#define __NR_umount2 (__NR_SYSCALL_BASE + 52)
+#define __NR_ioctl (__NR_SYSCALL_BASE + 54)
+#define __NR_fcntl (__NR_SYSCALL_BASE + 55)
+#define __NR_setpgid (__NR_SYSCALL_BASE + 57)
+#define __NR_umask (__NR_SYSCALL_BASE + 60)
+#define __NR_chroot (__NR_SYSCALL_BASE + 61)
+#define __NR_ustat (__NR_SYSCALL_BASE + 62)
+#define __NR_dup2 (__NR_SYSCALL_BASE + 63)
+#define __NR_getppid (__NR_SYSCALL_BASE + 64)
+#define __NR_getpgrp (__NR_SYSCALL_BASE + 65)
+#define __NR_setsid (__NR_SYSCALL_BASE + 66)
+#define __NR_sigaction (__NR_SYSCALL_BASE + 67)
+#define __NR_setreuid (__NR_SYSCALL_BASE + 70)
+#define __NR_setregid (__NR_SYSCALL_BASE + 71)
+#define __NR_sigsuspend (__NR_SYSCALL_BASE + 72)
+#define __NR_sigpending (__NR_SYSCALL_BASE + 73)
+#define __NR_sethostname (__NR_SYSCALL_BASE + 74)
+#define __NR_setrlimit (__NR_SYSCALL_BASE + 75)
+#define __NR_getrusage (__NR_SYSCALL_BASE + 77)
+#define __NR_gettimeofday (__NR_SYSCALL_BASE + 78)
+#define __NR_settimeofday (__NR_SYSCALL_BASE + 79)
+#define __NR_getgroups (__NR_SYSCALL_BASE + 80)
+#define __NR_setgroups (__NR_SYSCALL_BASE + 81)
+#define __NR_symlink (__NR_SYSCALL_BASE + 83)
+#define __NR_readlink (__NR_SYSCALL_BASE + 85)
+#define __NR_uselib (__NR_SYSCALL_BASE + 86)
+#define __NR_swapon (__NR_SYSCALL_BASE + 87)
+#define __NR_reboot (__NR_SYSCALL_BASE + 88)
+#define __NR_munmap (__NR_SYSCALL_BASE + 91)
+#define __NR_truncate (__NR_SYSCALL_BASE + 92)
+#define __NR_ftruncate (__NR_SYSCALL_BASE + 93)
+#define __NR_fchmod (__NR_SYSCALL_BASE + 94)
+#define __NR_fchown (__NR_SYSCALL_BASE + 95)
+#define __NR_getpriority (__NR_SYSCALL_BASE + 96)
+#define __NR_setpriority (__NR_SYSCALL_BASE + 97)
+#define __NR_statfs (__NR_SYSCALL_BASE + 99)
+#define __NR_fstatfs (__NR_SYSCALL_BASE + 100)
+#define __NR_syslog (__NR_SYSCALL_BASE + 103)
+#define __NR_setitimer (__NR_SYSCALL_BASE + 104)
+#define __NR_getitimer (__NR_SYSCALL_BASE + 105)
+#define __NR_stat (__NR_SYSCALL_BASE + 106)
+#define __NR_lstat (__NR_SYSCALL_BASE + 107)
+#define __NR_fstat (__NR_SYSCALL_BASE + 108)
+#define __NR_vhangup (__NR_SYSCALL_BASE + 111)
+#define __NR_wait4 (__NR_SYSCALL_BASE + 114)
+#define __NR_swapoff (__NR_SYSCALL_BASE + 115)
+#define __NR_sysinfo (__NR_SYSCALL_BASE + 116)
+#define __NR_fsync (__NR_SYSCALL_BASE + 118)
+#define __NR_sigreturn (__NR_SYSCALL_BASE + 119)
+#define __NR_clone (__NR_SYSCALL_BASE + 120)
+#define __NR_setdomainname (__NR_SYSCALL_BASE + 121)
+#define __NR_uname (__NR_SYSCALL_BASE + 122)
+#define __NR_adjtimex (__NR_SYSCALL_BASE + 124)
+#define __NR_mprotect (__NR_SYSCALL_BASE + 125)
+#define __NR_sigprocmask (__NR_SYSCALL_BASE + 126)
+#define __NR_init_module (__NR_SYSCALL_BASE + 128)
+#define __NR_delete_module (__NR_SYSCALL_BASE + 129)
+#define __NR_quotactl (__NR_SYSCALL_BASE + 131)
+#define __NR_getpgid (__NR_SYSCALL_BASE + 132)
+#define __NR_fchdir (__NR_SYSCALL_BASE + 133)
+#define __NR_bdflush (__NR_SYSCALL_BASE + 134)
+#define __NR_sysfs (__NR_SYSCALL_BASE + 135)
+#define __NR_personality (__NR_SYSCALL_BASE + 136)
+#define __NR_setfsuid (__NR_SYSCALL_BASE + 138)
+#define __NR_setfsgid (__NR_SYSCALL_BASE + 139)
+#define __NR__llseek (__NR_SYSCALL_BASE + 140)
+#define __NR_getdents (__NR_SYSCALL_BASE + 141)
+#define __NR__newselect (__NR_SYSCALL_BASE + 142)
+#define __NR_flock (__NR_SYSCALL_BASE + 143)
+#define __NR_msync (__NR_SYSCALL_BASE + 144)
+#define __NR_readv (__NR_SYSCALL_BASE + 145)
+#define __NR_writev (__NR_SYSCALL_BASE + 146)
+#define __NR_getsid (__NR_SYSCALL_BASE + 147)
+#define __NR_fdatasync (__NR_SYSCALL_BASE + 148)
+#define __NR__sysctl (__NR_SYSCALL_BASE + 149)
+#define __NR_mlock (__NR_SYSCALL_BASE + 150)
+#define __NR_munlock (__NR_SYSCALL_BASE + 151)
+#define __NR_mlockall (__NR_SYSCALL_BASE + 152)
+#define __NR_munlockall (__NR_SYSCALL_BASE + 153)
+#define __NR_sched_setparam (__NR_SYSCALL_BASE + 154)
+#define __NR_sched_getparam (__NR_SYSCALL_BASE + 155)
+#define __NR_sched_setscheduler (__NR_SYSCALL_BASE + 156)
+#define __NR_sched_getscheduler (__NR_SYSCALL_BASE + 157)
+#define __NR_sched_yield (__NR_SYSCALL_BASE + 158)
+#define __NR_sched_get_priority_max (__NR_SYSCALL_BASE + 159)
+#define __NR_sched_get_priority_min (__NR_SYSCALL_BASE + 160)
+#define __NR_sched_rr_get_interval (__NR_SYSCALL_BASE + 161)
+#define __NR_nanosleep (__NR_SYSCALL_BASE + 162)
+#define __NR_mremap (__NR_SYSCALL_BASE + 163)
+#define __NR_setresuid (__NR_SYSCALL_BASE + 164)
+#define __NR_getresuid (__NR_SYSCALL_BASE + 165)
+#define __NR_poll (__NR_SYSCALL_BASE + 168)
+#define __NR_nfsservctl (__NR_SYSCALL_BASE + 169)
+#define __NR_setresgid (__NR_SYSCALL_BASE + 170)
+#define __NR_getresgid (__NR_SYSCALL_BASE + 171)
+#define __NR_prctl (__NR_SYSCALL_BASE + 172)
+#define __NR_rt_sigreturn (__NR_SYSCALL_BASE + 173)
+#define __NR_rt_sigaction (__NR_SYSCALL_BASE + 174)
+#define __NR_rt_sigprocmask (__NR_SYSCALL_BASE + 175)
+#define __NR_rt_sigpending (__NR_SYSCALL_BASE + 176)
+#define __NR_rt_sigtimedwait (__NR_SYSCALL_BASE + 177)
+#define __NR_rt_sigqueueinfo (__NR_SYSCALL_BASE + 178)
+#define __NR_rt_sigsuspend (__NR_SYSCALL_BASE + 179)
+#define __NR_pread64 (__NR_SYSCALL_BASE + 180)
+#define __NR_pwrite64 (__NR_SYSCALL_BASE + 181)
+#define __NR_chown (__NR_SYSCALL_BASE + 182)
+#define __NR_getcwd (__NR_SYSCALL_BASE + 183)
+#define __NR_capget (__NR_SYSCALL_BASE + 184)
+#define __NR_capset (__NR_SYSCALL_BASE + 185)
+#define __NR_sigaltstack (__NR_SYSCALL_BASE + 186)
+#define __NR_sendfile (__NR_SYSCALL_BASE + 187)
+#define __NR_vfork (__NR_SYSCALL_BASE + 190)
+#define __NR_ugetrlimit (__NR_SYSCALL_BASE + 191)
+#define __NR_mmap2 (__NR_SYSCALL_BASE + 192)
+#define __NR_truncate64 (__NR_SYSCALL_BASE + 193)
+#define __NR_ftruncate64 (__NR_SYSCALL_BASE + 194)
+#define __NR_stat64 (__NR_SYSCALL_BASE + 195)
+#define __NR_lstat64 (__NR_SYSCALL_BASE + 196)
+#define __NR_fstat64 (__NR_SYSCALL_BASE + 197)
+#define __NR_lchown32 (__NR_SYSCALL_BASE + 198)
+#define __NR_getuid32 (__NR_SYSCALL_BASE + 199)
+#define __NR_getgid32 (__NR_SYSCALL_BASE + 200)
+#define __NR_geteuid32 (__NR_SYSCALL_BASE + 201)
+#define __NR_getegid32 (__NR_SYSCALL_BASE + 202)
+#define __NR_setreuid32 (__NR_SYSCALL_BASE + 203)
+#define __NR_setregid32 (__NR_SYSCALL_BASE + 204)
+#define __NR_getgroups32 (__NR_SYSCALL_BASE + 205)
+#define __NR_setgroups32 (__NR_SYSCALL_BASE + 206)
+#define __NR_fchown32 (__NR_SYSCALL_BASE + 207)
+#define __NR_setresuid32 (__NR_SYSCALL_BASE + 208)
+#define __NR_getresuid32 (__NR_SYSCALL_BASE + 209)
+#define __NR_setresgid32 (__NR_SYSCALL_BASE + 210)
+#define __NR_getresgid32 (__NR_SYSCALL_BASE + 211)
+#define __NR_chown32 (__NR_SYSCALL_BASE + 212)
+#define __NR_setuid32 (__NR_SYSCALL_BASE + 213)
+#define __NR_setgid32 (__NR_SYSCALL_BASE + 214)
+#define __NR_setfsuid32 (__NR_SYSCALL_BASE + 215)
+#define __NR_setfsgid32 (__NR_SYSCALL_BASE + 216)
+#define __NR_getdents64 (__NR_SYSCALL_BASE + 217)
+#define __NR_pivot_root (__NR_SYSCALL_BASE + 218)
+#define __NR_mincore (__NR_SYSCALL_BASE + 219)
+#define __NR_madvise (__NR_SYSCALL_BASE + 220)
+#define __NR_fcntl64 (__NR_SYSCALL_BASE + 221)
+#define __NR_gettid (__NR_SYSCALL_BASE + 224)
+#define __NR_readahead (__NR_SYSCALL_BASE + 225)
+#define __NR_setxattr (__NR_SYSCALL_BASE + 226)
+#define __NR_lsetxattr (__NR_SYSCALL_BASE + 227)
+#define __NR_fsetxattr (__NR_SYSCALL_BASE + 228)
+#define __NR_getxattr (__NR_SYSCALL_BASE + 229)
+#define __NR_lgetxattr (__NR_SYSCALL_BASE + 230)
+#define __NR_fgetxattr (__NR_SYSCALL_BASE + 231)
+#define __NR_listxattr (__NR_SYSCALL_BASE + 232)
+#define __NR_llistxattr (__NR_SYSCALL_BASE + 233)
+#define __NR_flistxattr (__NR_SYSCALL_BASE + 234)
+#define __NR_removexattr (__NR_SYSCALL_BASE + 235)
+#define __NR_lremovexattr (__NR_SYSCALL_BASE + 236)
+#define __NR_fremovexattr (__NR_SYSCALL_BASE + 237)
+#define __NR_tkill (__NR_SYSCALL_BASE + 238)
+#define __NR_sendfile64 (__NR_SYSCALL_BASE + 239)
+#define __NR_futex (__NR_SYSCALL_BASE + 240)
+#define __NR_sched_setaffinity (__NR_SYSCALL_BASE + 241)
+#define __NR_sched_getaffinity (__NR_SYSCALL_BASE + 242)
+#define __NR_io_setup (__NR_SYSCALL_BASE + 243)
+#define __NR_io_destroy (__NR_SYSCALL_BASE + 244)
+#define __NR_io_getevents (__NR_SYSCALL_BASE + 245)
+#define __NR_io_submit (__NR_SYSCALL_BASE + 246)
+#define __NR_io_cancel (__NR_SYSCALL_BASE + 247)
+#define __NR_exit_group (__NR_SYSCALL_BASE + 248)
+#define __NR_lookup_dcookie (__NR_SYSCALL_BASE + 249)
+#define __NR_epoll_create (__NR_SYSCALL_BASE + 250)
+#define __NR_epoll_ctl (__NR_SYSCALL_BASE + 251)
+#define __NR_epoll_wait (__NR_SYSCALL_BASE + 252)
+#define __NR_remap_file_pages (__NR_SYSCALL_BASE + 253)
+#define __NR_set_tid_address (__NR_SYSCALL_BASE + 256)
+#define __NR_timer_create (__NR_SYSCALL_BASE + 257)
+#define __NR_timer_settime (__NR_SYSCALL_BASE + 258)
+#define __NR_timer_gettime (__NR_SYSCALL_BASE + 259)
+#define __NR_timer_getoverrun (__NR_SYSCALL_BASE + 260)
+#define __NR_timer_delete (__NR_SYSCALL_BASE + 261)
+#define __NR_clock_settime (__NR_SYSCALL_BASE + 262)
+#define __NR_clock_gettime (__NR_SYSCALL_BASE + 263)
+#define __NR_clock_getres (__NR_SYSCALL_BASE + 264)
+#define __NR_clock_nanosleep (__NR_SYSCALL_BASE + 265)
+#define __NR_statfs64 (__NR_SYSCALL_BASE + 266)
+#define __NR_fstatfs64 (__NR_SYSCALL_BASE + 267)
+#define __NR_tgkill (__NR_SYSCALL_BASE + 268)
+#define __NR_utimes (__NR_SYSCALL_BASE + 269)
+#define __NR_arm_fadvise64_64 (__NR_SYSCALL_BASE + 270)
+#define __NR_pciconfig_iobase (__NR_SYSCALL_BASE + 271)
+#define __NR_pciconfig_read (__NR_SYSCALL_BASE + 272)
+#define __NR_pciconfig_write (__NR_SYSCALL_BASE + 273)
+#define __NR_mq_open (__NR_SYSCALL_BASE + 274)
+#define __NR_mq_unlink (__NR_SYSCALL_BASE + 275)
+#define __NR_mq_timedsend (__NR_SYSCALL_BASE + 276)
+#define __NR_mq_timedreceive (__NR_SYSCALL_BASE + 277)
+#define __NR_mq_notify (__NR_SYSCALL_BASE + 278)
+#define __NR_mq_getsetattr (__NR_SYSCALL_BASE + 279)
+#define __NR_waitid (__NR_SYSCALL_BASE + 280)
+#define __NR_socket (__NR_SYSCALL_BASE + 281)
+#define __NR_bind (__NR_SYSCALL_BASE + 282)
+#define __NR_connect (__NR_SYSCALL_BASE + 283)
+#define __NR_listen (__NR_SYSCALL_BASE + 284)
+#define __NR_accept (__NR_SYSCALL_BASE + 285)
+#define __NR_getsockname (__NR_SYSCALL_BASE + 286)
+#define __NR_getpeername (__NR_SYSCALL_BASE + 287)
+#define __NR_socketpair (__NR_SYSCALL_BASE + 288)
+#define __NR_send (__NR_SYSCALL_BASE + 289)
+#define __NR_sendto (__NR_SYSCALL_BASE + 290)
+#define __NR_recv (__NR_SYSCALL_BASE + 291)
+#define __NR_recvfrom (__NR_SYSCALL_BASE + 292)
+#define __NR_shutdown (__NR_SYSCALL_BASE + 293)
+#define __NR_setsockopt (__NR_SYSCALL_BASE + 294)
+#define __NR_getsockopt (__NR_SYSCALL_BASE + 295)
+#define __NR_sendmsg (__NR_SYSCALL_BASE + 296)
+#define __NR_recvmsg (__NR_SYSCALL_BASE + 297)
+#define __NR_semop (__NR_SYSCALL_BASE + 298)
+#define __NR_semget (__NR_SYSCALL_BASE + 299)
+#define __NR_semctl (__NR_SYSCALL_BASE + 300)
+#define __NR_msgsnd (__NR_SYSCALL_BASE + 301)
+#define __NR_msgrcv (__NR_SYSCALL_BASE + 302)
+#define __NR_msgget (__NR_SYSCALL_BASE + 303)
+#define __NR_msgctl (__NR_SYSCALL_BASE + 304)
+#define __NR_shmat (__NR_SYSCALL_BASE + 305)
+#define __NR_shmdt (__NR_SYSCALL_BASE + 306)
+#define __NR_shmget (__NR_SYSCALL_BASE + 307)
+#define __NR_shmctl (__NR_SYSCALL_BASE + 308)
+#define __NR_add_key (__NR_SYSCALL_BASE + 309)
+#define __NR_request_key (__NR_SYSCALL_BASE + 310)
+#define __NR_keyctl (__NR_SYSCALL_BASE + 311)
+#define __NR_semtimedop (__NR_SYSCALL_BASE + 312)
+#define __NR_vserver (__NR_SYSCALL_BASE + 313)
+#define __NR_ioprio_set (__NR_SYSCALL_BASE + 314)
+#define __NR_ioprio_get (__NR_SYSCALL_BASE + 315)
+#define __NR_inotify_init (__NR_SYSCALL_BASE + 316)
+#define __NR_inotify_add_watch (__NR_SYSCALL_BASE + 317)
+#define __NR_inotify_rm_watch (__NR_SYSCALL_BASE + 318)
+#define __NR_mbind (__NR_SYSCALL_BASE + 319)
+#define __NR_get_mempolicy (__NR_SYSCALL_BASE + 320)
+#define __NR_set_mempolicy (__NR_SYSCALL_BASE + 321)
+#define __NR_openat (__NR_SYSCALL_BASE + 322)
+#define __NR_mkdirat (__NR_SYSCALL_BASE + 323)
+#define __NR_mknodat (__NR_SYSCALL_BASE + 324)
+#define __NR_fchownat (__NR_SYSCALL_BASE + 325)
+#define __NR_futimesat (__NR_SYSCALL_BASE + 326)
+#define __NR_fstatat64 (__NR_SYSCALL_BASE + 327)
+#define __NR_unlinkat (__NR_SYSCALL_BASE + 328)
+#define __NR_renameat (__NR_SYSCALL_BASE + 329)
+#define __NR_linkat (__NR_SYSCALL_BASE + 330)
+#define __NR_symlinkat (__NR_SYSCALL_BASE + 331)
+#define __NR_readlinkat (__NR_SYSCALL_BASE + 332)
+#define __NR_fchmodat (__NR_SYSCALL_BASE + 333)
+#define __NR_faccessat (__NR_SYSCALL_BASE + 334)
+#define __NR_pselect6 (__NR_SYSCALL_BASE + 335)
+#define __NR_ppoll (__NR_SYSCALL_BASE + 336)
+#define __NR_unshare (__NR_SYSCALL_BASE + 337)
+#define __NR_set_robust_list (__NR_SYSCALL_BASE + 338)
+#define __NR_get_robust_list (__NR_SYSCALL_BASE + 339)
+#define __NR_splice (__NR_SYSCALL_BASE + 340)
+#define __NR_arm_sync_file_range (__NR_SYSCALL_BASE + 341)
+#define __NR_tee (__NR_SYSCALL_BASE + 342)
+#define __NR_vmsplice (__NR_SYSCALL_BASE + 343)
+#define __NR_move_pages (__NR_SYSCALL_BASE + 344)
+#define __NR_getcpu (__NR_SYSCALL_BASE + 345)
+#define __NR_epoll_pwait (__NR_SYSCALL_BASE + 346)
+#define __NR_kexec_load (__NR_SYSCALL_BASE + 347)
+#define __NR_utimensat (__NR_SYSCALL_BASE + 348)
+#define __NR_signalfd (__NR_SYSCALL_BASE + 349)
+#define __NR_timerfd_create (__NR_SYSCALL_BASE + 350)
+#define __NR_eventfd (__NR_SYSCALL_BASE + 351)
+#define __NR_fallocate (__NR_SYSCALL_BASE + 352)
+#define __NR_timerfd_settime (__NR_SYSCALL_BASE + 353)
+#define __NR_timerfd_gettime (__NR_SYSCALL_BASE + 354)
+#define __NR_signalfd4 (__NR_SYSCALL_BASE + 355)
+#define __NR_eventfd2 (__NR_SYSCALL_BASE + 356)
+#define __NR_epoll_create1 (__NR_SYSCALL_BASE + 357)
+#define __NR_dup3 (__NR_SYSCALL_BASE + 358)
+#define __NR_pipe2 (__NR_SYSCALL_BASE + 359)
+#define __NR_inotify_init1 (__NR_SYSCALL_BASE + 360)
+#define __NR_preadv (__NR_SYSCALL_BASE + 361)
+#define __NR_pwritev (__NR_SYSCALL_BASE + 362)
+#define __NR_rt_tgsigqueueinfo (__NR_SYSCALL_BASE + 363)
+#define __NR_perf_event_open (__NR_SYSCALL_BASE + 364)
+#define __NR_recvmmsg (__NR_SYSCALL_BASE + 365)
+#define __NR_accept4 (__NR_SYSCALL_BASE + 366)
+#define __NR_fanotify_init (__NR_SYSCALL_BASE + 367)
+#define __NR_fanotify_mark (__NR_SYSCALL_BASE + 368)
+#define __NR_prlimit64 (__NR_SYSCALL_BASE + 369)
+#define __NR_name_to_handle_at (__NR_SYSCALL_BASE + 370)
+#define __NR_open_by_handle_at (__NR_SYSCALL_BASE + 371)
+#define __NR_clock_adjtime (__NR_SYSCALL_BASE + 372)
+#define __NR_syncfs (__NR_SYSCALL_BASE + 373)
+#define __NR_sendmmsg (__NR_SYSCALL_BASE + 374)
+#define __NR_setns (__NR_SYSCALL_BASE + 375)
+#define __NR_process_vm_readv (__NR_SYSCALL_BASE + 376)
+#define __NR_process_vm_writev (__NR_SYSCALL_BASE + 377)
+#define __NR_kcmp (__NR_SYSCALL_BASE + 378)
+#define __NR_finit_module (__NR_SYSCALL_BASE + 379)
+#define __NR_sched_setattr (__NR_SYSCALL_BASE + 380)
+#define __NR_sched_getattr (__NR_SYSCALL_BASE + 381)
+#define __NR_renameat2 (__NR_SYSCALL_BASE + 382)
+#define __NR_seccomp (__NR_SYSCALL_BASE + 383)
+#define __NR_getrandom (__NR_SYSCALL_BASE + 384)
+#define __NR_memfd_create (__NR_SYSCALL_BASE + 385)
+#define __NR_bpf (__NR_SYSCALL_BASE + 386)
+#define __NR_execveat (__NR_SYSCALL_BASE + 387)
+#define __NR_userfaultfd (__NR_SYSCALL_BASE + 388)
+#define __NR_membarrier (__NR_SYSCALL_BASE + 389)
+#define __NR_mlock2 (__NR_SYSCALL_BASE + 390)
+#define __NR_copy_file_range (__NR_SYSCALL_BASE + 391)
+#define __NR_preadv2 (__NR_SYSCALL_BASE + 392)
+#define __NR_pwritev2 (__NR_SYSCALL_BASE + 393)
+#define __NR_pkey_mprotect (__NR_SYSCALL_BASE + 394)
+#define __NR_pkey_alloc (__NR_SYSCALL_BASE + 395)
+#define __NR_pkey_free (__NR_SYSCALL_BASE + 396)
+#define __NR_statx (__NR_SYSCALL_BASE + 397)
+#define __NR_rseq (__NR_SYSCALL_BASE + 398)
+#define __NR_io_pgetevents (__NR_SYSCALL_BASE + 399)
+#define __NR_migrate_pages (__NR_SYSCALL_BASE + 400)
+#define __NR_kexec_file_load (__NR_SYSCALL_BASE + 401)
+#define __NR_clock_gettime64 (__NR_SYSCALL_BASE + 403)
+#define __NR_clock_settime64 (__NR_SYSCALL_BASE + 404)
+#define __NR_clock_adjtime64 (__NR_SYSCALL_BASE + 405)
+#define __NR_clock_getres_time64 (__NR_SYSCALL_BASE + 406)
+#define __NR_clock_nanosleep_time64 (__NR_SYSCALL_BASE + 407)
+#define __NR_timer_gettime64 (__NR_SYSCALL_BASE + 408)
+#define __NR_timer_settime64 (__NR_SYSCALL_BASE + 409)
+#define __NR_timerfd_gettime64 (__NR_SYSCALL_BASE + 410)
+#define __NR_timerfd_settime64 (__NR_SYSCALL_BASE + 411)
+#define __NR_utimensat_time64 (__NR_SYSCALL_BASE + 412)
+#define __NR_pselect6_time64 (__NR_SYSCALL_BASE + 413)
+#define __NR_ppoll_time64 (__NR_SYSCALL_BASE + 414)
+#define __NR_io_pgetevents_time64 (__NR_SYSCALL_BASE + 416)
+#define __NR_recvmmsg_time64 (__NR_SYSCALL_BASE + 417)
+#define __NR_mq_timedsend_time64 (__NR_SYSCALL_BASE + 418)
+#define __NR_mq_timedreceive_time64 (__NR_SYSCALL_BASE + 419)
+#define __NR_semtimedop_time64 (__NR_SYSCALL_BASE + 420)
+#define __NR_rt_sigtimedwait_time64 (__NR_SYSCALL_BASE + 421)
+#define __NR_futex_time64 (__NR_SYSCALL_BASE + 422)
+#define __NR_sched_rr_get_interval_time64 (__NR_SYSCALL_BASE + 423)
+#define __NR_pidfd_send_signal (__NR_SYSCALL_BASE + 424)
+#define __NR_io_uring_setup (__NR_SYSCALL_BASE + 425)
+#define __NR_io_uring_enter (__NR_SYSCALL_BASE + 426)
+#define __NR_io_uring_register (__NR_SYSCALL_BASE + 427)
+#define __NR_open_tree (__NR_SYSCALL_BASE + 428)
+#define __NR_move_mount (__NR_SYSCALL_BASE + 429)
+#define __NR_fsopen (__NR_SYSCALL_BASE + 430)
+#define __NR_fsconfig (__NR_SYSCALL_BASE + 431)
+#define __NR_fsmount (__NR_SYSCALL_BASE + 432)
+#define __NR_fspick (__NR_SYSCALL_BASE + 433)
+#define __NR_pidfd_open (__NR_SYSCALL_BASE + 434)
+#define __NR_clone3 (__NR_SYSCALL_BASE + 435)
+#define __NR_close_range (__NR_SYSCALL_BASE + 436)
+#define __NR_openat2 (__NR_SYSCALL_BASE + 437)
+#define __NR_pidfd_getfd (__NR_SYSCALL_BASE + 438)
+#define __NR_faccessat2 (__NR_SYSCALL_BASE + 439)
+#define __NR_process_madvise (__NR_SYSCALL_BASE + 440)
+#define __NR_epoll_pwait2 (__NR_SYSCALL_BASE + 441)
+#define __NR_mount_setattr (__NR_SYSCALL_BASE + 442)
+#define __NR_quotactl_fd (__NR_SYSCALL_BASE + 443)
+#define __NR_landlock_create_ruleset (__NR_SYSCALL_BASE + 444)
+#define __NR_landlock_add_rule (__NR_SYSCALL_BASE + 445)
+#define __NR_landlock_restrict_self (__NR_SYSCALL_BASE + 446)
+#define __NR_process_mrelease (__NR_SYSCALL_BASE + 448)
+#define __NR_futex_waitv (__NR_SYSCALL_BASE + 449)
+#endif
diff --git a/i686-linux-musl/include/asm-arm/asm/unistd-oabi.h b/i686-linux-musl/include/asm-arm/asm/unistd-oabi.h
new file mode 100644
index 0000000..20870bb
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/unistd-oabi.h
@@ -0,0 +1,435 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_UNISTD_OABI_H
+#define _UAPI_ASM_UNISTD_OABI_H
+#define __NR_restart_syscall (__NR_SYSCALL_BASE + 0)
+#define __NR_exit (__NR_SYSCALL_BASE + 1)
+#define __NR_fork (__NR_SYSCALL_BASE + 2)
+#define __NR_read (__NR_SYSCALL_BASE + 3)
+#define __NR_write (__NR_SYSCALL_BASE + 4)
+#define __NR_open (__NR_SYSCALL_BASE + 5)
+#define __NR_close (__NR_SYSCALL_BASE + 6)
+#define __NR_creat (__NR_SYSCALL_BASE + 8)
+#define __NR_link (__NR_SYSCALL_BASE + 9)
+#define __NR_unlink (__NR_SYSCALL_BASE + 10)
+#define __NR_execve (__NR_SYSCALL_BASE + 11)
+#define __NR_chdir (__NR_SYSCALL_BASE + 12)
+#define __NR_time (__NR_SYSCALL_BASE + 13)
+#define __NR_mknod (__NR_SYSCALL_BASE + 14)
+#define __NR_chmod (__NR_SYSCALL_BASE + 15)
+#define __NR_lchown (__NR_SYSCALL_BASE + 16)
+#define __NR_lseek (__NR_SYSCALL_BASE + 19)
+#define __NR_getpid (__NR_SYSCALL_BASE + 20)
+#define __NR_mount (__NR_SYSCALL_BASE + 21)
+#define __NR_umount (__NR_SYSCALL_BASE + 22)
+#define __NR_setuid (__NR_SYSCALL_BASE + 23)
+#define __NR_getuid (__NR_SYSCALL_BASE + 24)
+#define __NR_stime (__NR_SYSCALL_BASE + 25)
+#define __NR_ptrace (__NR_SYSCALL_BASE + 26)
+#define __NR_alarm (__NR_SYSCALL_BASE + 27)
+#define __NR_pause (__NR_SYSCALL_BASE + 29)
+#define __NR_utime (__NR_SYSCALL_BASE + 30)
+#define __NR_access (__NR_SYSCALL_BASE + 33)
+#define __NR_nice (__NR_SYSCALL_BASE + 34)
+#define __NR_sync (__NR_SYSCALL_BASE + 36)
+#define __NR_kill (__NR_SYSCALL_BASE + 37)
+#define __NR_rename (__NR_SYSCALL_BASE + 38)
+#define __NR_mkdir (__NR_SYSCALL_BASE + 39)
+#define __NR_rmdir (__NR_SYSCALL_BASE + 40)
+#define __NR_dup (__NR_SYSCALL_BASE + 41)
+#define __NR_pipe (__NR_SYSCALL_BASE + 42)
+#define __NR_times (__NR_SYSCALL_BASE + 43)
+#define __NR_brk (__NR_SYSCALL_BASE + 45)
+#define __NR_setgid (__NR_SYSCALL_BASE + 46)
+#define __NR_getgid (__NR_SYSCALL_BASE + 47)
+#define __NR_geteuid (__NR_SYSCALL_BASE + 49)
+#define __NR_getegid (__NR_SYSCALL_BASE + 50)
+#define __NR_acct (__NR_SYSCALL_BASE + 51)
+#define __NR_umount2 (__NR_SYSCALL_BASE + 52)
+#define __NR_ioctl (__NR_SYSCALL_BASE + 54)
+#define __NR_fcntl (__NR_SYSCALL_BASE + 55)
+#define __NR_setpgid (__NR_SYSCALL_BASE + 57)
+#define __NR_umask (__NR_SYSCALL_BASE + 60)
+#define __NR_chroot (__NR_SYSCALL_BASE + 61)
+#define __NR_ustat (__NR_SYSCALL_BASE + 62)
+#define __NR_dup2 (__NR_SYSCALL_BASE + 63)
+#define __NR_getppid (__NR_SYSCALL_BASE + 64)
+#define __NR_getpgrp (__NR_SYSCALL_BASE + 65)
+#define __NR_setsid (__NR_SYSCALL_BASE + 66)
+#define __NR_sigaction (__NR_SYSCALL_BASE + 67)
+#define __NR_setreuid (__NR_SYSCALL_BASE + 70)
+#define __NR_setregid (__NR_SYSCALL_BASE + 71)
+#define __NR_sigsuspend (__NR_SYSCALL_BASE + 72)
+#define __NR_sigpending (__NR_SYSCALL_BASE + 73)
+#define __NR_sethostname (__NR_SYSCALL_BASE + 74)
+#define __NR_setrlimit (__NR_SYSCALL_BASE + 75)
+#define __NR_getrlimit (__NR_SYSCALL_BASE + 76)
+#define __NR_getrusage (__NR_SYSCALL_BASE + 77)
+#define __NR_gettimeofday (__NR_SYSCALL_BASE + 78)
+#define __NR_settimeofday (__NR_SYSCALL_BASE + 79)
+#define __NR_getgroups (__NR_SYSCALL_BASE + 80)
+#define __NR_setgroups (__NR_SYSCALL_BASE + 81)
+#define __NR_select (__NR_SYSCALL_BASE + 82)
+#define __NR_symlink (__NR_SYSCALL_BASE + 83)
+#define __NR_readlink (__NR_SYSCALL_BASE + 85)
+#define __NR_uselib (__NR_SYSCALL_BASE + 86)
+#define __NR_swapon (__NR_SYSCALL_BASE + 87)
+#define __NR_reboot (__NR_SYSCALL_BASE + 88)
+#define __NR_readdir (__NR_SYSCALL_BASE + 89)
+#define __NR_mmap (__NR_SYSCALL_BASE + 90)
+#define __NR_munmap (__NR_SYSCALL_BASE + 91)
+#define __NR_truncate (__NR_SYSCALL_BASE + 92)
+#define __NR_ftruncate (__NR_SYSCALL_BASE + 93)
+#define __NR_fchmod (__NR_SYSCALL_BASE + 94)
+#define __NR_fchown (__NR_SYSCALL_BASE + 95)
+#define __NR_getpriority (__NR_SYSCALL_BASE + 96)
+#define __NR_setpriority (__NR_SYSCALL_BASE + 97)
+#define __NR_statfs (__NR_SYSCALL_BASE + 99)
+#define __NR_fstatfs (__NR_SYSCALL_BASE + 100)
+#define __NR_socketcall (__NR_SYSCALL_BASE + 102)
+#define __NR_syslog (__NR_SYSCALL_BASE + 103)
+#define __NR_setitimer (__NR_SYSCALL_BASE + 104)
+#define __NR_getitimer (__NR_SYSCALL_BASE + 105)
+#define __NR_stat (__NR_SYSCALL_BASE + 106)
+#define __NR_lstat (__NR_SYSCALL_BASE + 107)
+#define __NR_fstat (__NR_SYSCALL_BASE + 108)
+#define __NR_vhangup (__NR_SYSCALL_BASE + 111)
+#define __NR_syscall (__NR_SYSCALL_BASE + 113)
+#define __NR_wait4 (__NR_SYSCALL_BASE + 114)
+#define __NR_swapoff (__NR_SYSCALL_BASE + 115)
+#define __NR_sysinfo (__NR_SYSCALL_BASE + 116)
+#define __NR_ipc (__NR_SYSCALL_BASE + 117)
+#define __NR_fsync (__NR_SYSCALL_BASE + 118)
+#define __NR_sigreturn (__NR_SYSCALL_BASE + 119)
+#define __NR_clone (__NR_SYSCALL_BASE + 120)
+#define __NR_setdomainname (__NR_SYSCALL_BASE + 121)
+#define __NR_uname (__NR_SYSCALL_BASE + 122)
+#define __NR_adjtimex (__NR_SYSCALL_BASE + 124)
+#define __NR_mprotect (__NR_SYSCALL_BASE + 125)
+#define __NR_sigprocmask (__NR_SYSCALL_BASE + 126)
+#define __NR_init_module (__NR_SYSCALL_BASE + 128)
+#define __NR_delete_module (__NR_SYSCALL_BASE + 129)
+#define __NR_quotactl (__NR_SYSCALL_BASE + 131)
+#define __NR_getpgid (__NR_SYSCALL_BASE + 132)
+#define __NR_fchdir (__NR_SYSCALL_BASE + 133)
+#define __NR_bdflush (__NR_SYSCALL_BASE + 134)
+#define __NR_sysfs (__NR_SYSCALL_BASE + 135)
+#define __NR_personality (__NR_SYSCALL_BASE + 136)
+#define __NR_setfsuid (__NR_SYSCALL_BASE + 138)
+#define __NR_setfsgid (__NR_SYSCALL_BASE + 139)
+#define __NR__llseek (__NR_SYSCALL_BASE + 140)
+#define __NR_getdents (__NR_SYSCALL_BASE + 141)
+#define __NR__newselect (__NR_SYSCALL_BASE + 142)
+#define __NR_flock (__NR_SYSCALL_BASE + 143)
+#define __NR_msync (__NR_SYSCALL_BASE + 144)
+#define __NR_readv (__NR_SYSCALL_BASE + 145)
+#define __NR_writev (__NR_SYSCALL_BASE + 146)
+#define __NR_getsid (__NR_SYSCALL_BASE + 147)
+#define __NR_fdatasync (__NR_SYSCALL_BASE + 148)
+#define __NR__sysctl (__NR_SYSCALL_BASE + 149)
+#define __NR_mlock (__NR_SYSCALL_BASE + 150)
+#define __NR_munlock (__NR_SYSCALL_BASE + 151)
+#define __NR_mlockall (__NR_SYSCALL_BASE + 152)
+#define __NR_munlockall (__NR_SYSCALL_BASE + 153)
+#define __NR_sched_setparam (__NR_SYSCALL_BASE + 154)
+#define __NR_sched_getparam (__NR_SYSCALL_BASE + 155)
+#define __NR_sched_setscheduler (__NR_SYSCALL_BASE + 156)
+#define __NR_sched_getscheduler (__NR_SYSCALL_BASE + 157)
+#define __NR_sched_yield (__NR_SYSCALL_BASE + 158)
+#define __NR_sched_get_priority_max (__NR_SYSCALL_BASE + 159)
+#define __NR_sched_get_priority_min (__NR_SYSCALL_BASE + 160)
+#define __NR_sched_rr_get_interval (__NR_SYSCALL_BASE + 161)
+#define __NR_nanosleep (__NR_SYSCALL_BASE + 162)
+#define __NR_mremap (__NR_SYSCALL_BASE + 163)
+#define __NR_setresuid (__NR_SYSCALL_BASE + 164)
+#define __NR_getresuid (__NR_SYSCALL_BASE + 165)
+#define __NR_poll (__NR_SYSCALL_BASE + 168)
+#define __NR_nfsservctl (__NR_SYSCALL_BASE + 169)
+#define __NR_setresgid (__NR_SYSCALL_BASE + 170)
+#define __NR_getresgid (__NR_SYSCALL_BASE + 171)
+#define __NR_prctl (__NR_SYSCALL_BASE + 172)
+#define __NR_rt_sigreturn (__NR_SYSCALL_BASE + 173)
+#define __NR_rt_sigaction (__NR_SYSCALL_BASE + 174)
+#define __NR_rt_sigprocmask (__NR_SYSCALL_BASE + 175)
+#define __NR_rt_sigpending (__NR_SYSCALL_BASE + 176)
+#define __NR_rt_sigtimedwait (__NR_SYSCALL_BASE + 177)
+#define __NR_rt_sigqueueinfo (__NR_SYSCALL_BASE + 178)
+#define __NR_rt_sigsuspend (__NR_SYSCALL_BASE + 179)
+#define __NR_pread64 (__NR_SYSCALL_BASE + 180)
+#define __NR_pwrite64 (__NR_SYSCALL_BASE + 181)
+#define __NR_chown (__NR_SYSCALL_BASE + 182)
+#define __NR_getcwd (__NR_SYSCALL_BASE + 183)
+#define __NR_capget (__NR_SYSCALL_BASE + 184)
+#define __NR_capset (__NR_SYSCALL_BASE + 185)
+#define __NR_sigaltstack (__NR_SYSCALL_BASE + 186)
+#define __NR_sendfile (__NR_SYSCALL_BASE + 187)
+#define __NR_vfork (__NR_SYSCALL_BASE + 190)
+#define __NR_ugetrlimit (__NR_SYSCALL_BASE + 191)
+#define __NR_mmap2 (__NR_SYSCALL_BASE + 192)
+#define __NR_truncate64 (__NR_SYSCALL_BASE + 193)
+#define __NR_ftruncate64 (__NR_SYSCALL_BASE + 194)
+#define __NR_stat64 (__NR_SYSCALL_BASE + 195)
+#define __NR_lstat64 (__NR_SYSCALL_BASE + 196)
+#define __NR_fstat64 (__NR_SYSCALL_BASE + 197)
+#define __NR_lchown32 (__NR_SYSCALL_BASE + 198)
+#define __NR_getuid32 (__NR_SYSCALL_BASE + 199)
+#define __NR_getgid32 (__NR_SYSCALL_BASE + 200)
+#define __NR_geteuid32 (__NR_SYSCALL_BASE + 201)
+#define __NR_getegid32 (__NR_SYSCALL_BASE + 202)
+#define __NR_setreuid32 (__NR_SYSCALL_BASE + 203)
+#define __NR_setregid32 (__NR_SYSCALL_BASE + 204)
+#define __NR_getgroups32 (__NR_SYSCALL_BASE + 205)
+#define __NR_setgroups32 (__NR_SYSCALL_BASE + 206)
+#define __NR_fchown32 (__NR_SYSCALL_BASE + 207)
+#define __NR_setresuid32 (__NR_SYSCALL_BASE + 208)
+#define __NR_getresuid32 (__NR_SYSCALL_BASE + 209)
+#define __NR_setresgid32 (__NR_SYSCALL_BASE + 210)
+#define __NR_getresgid32 (__NR_SYSCALL_BASE + 211)
+#define __NR_chown32 (__NR_SYSCALL_BASE + 212)
+#define __NR_setuid32 (__NR_SYSCALL_BASE + 213)
+#define __NR_setgid32 (__NR_SYSCALL_BASE + 214)
+#define __NR_setfsuid32 (__NR_SYSCALL_BASE + 215)
+#define __NR_setfsgid32 (__NR_SYSCALL_BASE + 216)
+#define __NR_getdents64 (__NR_SYSCALL_BASE + 217)
+#define __NR_pivot_root (__NR_SYSCALL_BASE + 218)
+#define __NR_mincore (__NR_SYSCALL_BASE + 219)
+#define __NR_madvise (__NR_SYSCALL_BASE + 220)
+#define __NR_fcntl64 (__NR_SYSCALL_BASE + 221)
+#define __NR_gettid (__NR_SYSCALL_BASE + 224)
+#define __NR_readahead (__NR_SYSCALL_BASE + 225)
+#define __NR_setxattr (__NR_SYSCALL_BASE + 226)
+#define __NR_lsetxattr (__NR_SYSCALL_BASE + 227)
+#define __NR_fsetxattr (__NR_SYSCALL_BASE + 228)
+#define __NR_getxattr (__NR_SYSCALL_BASE + 229)
+#define __NR_lgetxattr (__NR_SYSCALL_BASE + 230)
+#define __NR_fgetxattr (__NR_SYSCALL_BASE + 231)
+#define __NR_listxattr (__NR_SYSCALL_BASE + 232)
+#define __NR_llistxattr (__NR_SYSCALL_BASE + 233)
+#define __NR_flistxattr (__NR_SYSCALL_BASE + 234)
+#define __NR_removexattr (__NR_SYSCALL_BASE + 235)
+#define __NR_lremovexattr (__NR_SYSCALL_BASE + 236)
+#define __NR_fremovexattr (__NR_SYSCALL_BASE + 237)
+#define __NR_tkill (__NR_SYSCALL_BASE + 238)
+#define __NR_sendfile64 (__NR_SYSCALL_BASE + 239)
+#define __NR_futex (__NR_SYSCALL_BASE + 240)
+#define __NR_sched_setaffinity (__NR_SYSCALL_BASE + 241)
+#define __NR_sched_getaffinity (__NR_SYSCALL_BASE + 242)
+#define __NR_io_setup (__NR_SYSCALL_BASE + 243)
+#define __NR_io_destroy (__NR_SYSCALL_BASE + 244)
+#define __NR_io_getevents (__NR_SYSCALL_BASE + 245)
+#define __NR_io_submit (__NR_SYSCALL_BASE + 246)
+#define __NR_io_cancel (__NR_SYSCALL_BASE + 247)
+#define __NR_exit_group (__NR_SYSCALL_BASE + 248)
+#define __NR_lookup_dcookie (__NR_SYSCALL_BASE + 249)
+#define __NR_epoll_create (__NR_SYSCALL_BASE + 250)
+#define __NR_epoll_ctl (__NR_SYSCALL_BASE + 251)
+#define __NR_epoll_wait (__NR_SYSCALL_BASE + 252)
+#define __NR_remap_file_pages (__NR_SYSCALL_BASE + 253)
+#define __NR_set_tid_address (__NR_SYSCALL_BASE + 256)
+#define __NR_timer_create (__NR_SYSCALL_BASE + 257)
+#define __NR_timer_settime (__NR_SYSCALL_BASE + 258)
+#define __NR_timer_gettime (__NR_SYSCALL_BASE + 259)
+#define __NR_timer_getoverrun (__NR_SYSCALL_BASE + 260)
+#define __NR_timer_delete (__NR_SYSCALL_BASE + 261)
+#define __NR_clock_settime (__NR_SYSCALL_BASE + 262)
+#define __NR_clock_gettime (__NR_SYSCALL_BASE + 263)
+#define __NR_clock_getres (__NR_SYSCALL_BASE + 264)
+#define __NR_clock_nanosleep (__NR_SYSCALL_BASE + 265)
+#define __NR_statfs64 (__NR_SYSCALL_BASE + 266)
+#define __NR_fstatfs64 (__NR_SYSCALL_BASE + 267)
+#define __NR_tgkill (__NR_SYSCALL_BASE + 268)
+#define __NR_utimes (__NR_SYSCALL_BASE + 269)
+#define __NR_arm_fadvise64_64 (__NR_SYSCALL_BASE + 270)
+#define __NR_pciconfig_iobase (__NR_SYSCALL_BASE + 271)
+#define __NR_pciconfig_read (__NR_SYSCALL_BASE + 272)
+#define __NR_pciconfig_write (__NR_SYSCALL_BASE + 273)
+#define __NR_mq_open (__NR_SYSCALL_BASE + 274)
+#define __NR_mq_unlink (__NR_SYSCALL_BASE + 275)
+#define __NR_mq_timedsend (__NR_SYSCALL_BASE + 276)
+#define __NR_mq_timedreceive (__NR_SYSCALL_BASE + 277)
+#define __NR_mq_notify (__NR_SYSCALL_BASE + 278)
+#define __NR_mq_getsetattr (__NR_SYSCALL_BASE + 279)
+#define __NR_waitid (__NR_SYSCALL_BASE + 280)
+#define __NR_socket (__NR_SYSCALL_BASE + 281)
+#define __NR_bind (__NR_SYSCALL_BASE + 282)
+#define __NR_connect (__NR_SYSCALL_BASE + 283)
+#define __NR_listen (__NR_SYSCALL_BASE + 284)
+#define __NR_accept (__NR_SYSCALL_BASE + 285)
+#define __NR_getsockname (__NR_SYSCALL_BASE + 286)
+#define __NR_getpeername (__NR_SYSCALL_BASE + 287)
+#define __NR_socketpair (__NR_SYSCALL_BASE + 288)
+#define __NR_send (__NR_SYSCALL_BASE + 289)
+#define __NR_sendto (__NR_SYSCALL_BASE + 290)
+#define __NR_recv (__NR_SYSCALL_BASE + 291)
+#define __NR_recvfrom (__NR_SYSCALL_BASE + 292)
+#define __NR_shutdown (__NR_SYSCALL_BASE + 293)
+#define __NR_setsockopt (__NR_SYSCALL_BASE + 294)
+#define __NR_getsockopt (__NR_SYSCALL_BASE + 295)
+#define __NR_sendmsg (__NR_SYSCALL_BASE + 296)
+#define __NR_recvmsg (__NR_SYSCALL_BASE + 297)
+#define __NR_semop (__NR_SYSCALL_BASE + 298)
+#define __NR_semget (__NR_SYSCALL_BASE + 299)
+#define __NR_semctl (__NR_SYSCALL_BASE + 300)
+#define __NR_msgsnd (__NR_SYSCALL_BASE + 301)
+#define __NR_msgrcv (__NR_SYSCALL_BASE + 302)
+#define __NR_msgget (__NR_SYSCALL_BASE + 303)
+#define __NR_msgctl (__NR_SYSCALL_BASE + 304)
+#define __NR_shmat (__NR_SYSCALL_BASE + 305)
+#define __NR_shmdt (__NR_SYSCALL_BASE + 306)
+#define __NR_shmget (__NR_SYSCALL_BASE + 307)
+#define __NR_shmctl (__NR_SYSCALL_BASE + 308)
+#define __NR_add_key (__NR_SYSCALL_BASE + 309)
+#define __NR_request_key (__NR_SYSCALL_BASE + 310)
+#define __NR_keyctl (__NR_SYSCALL_BASE + 311)
+#define __NR_semtimedop (__NR_SYSCALL_BASE + 312)
+#define __NR_vserver (__NR_SYSCALL_BASE + 313)
+#define __NR_ioprio_set (__NR_SYSCALL_BASE + 314)
+#define __NR_ioprio_get (__NR_SYSCALL_BASE + 315)
+#define __NR_inotify_init (__NR_SYSCALL_BASE + 316)
+#define __NR_inotify_add_watch (__NR_SYSCALL_BASE + 317)
+#define __NR_inotify_rm_watch (__NR_SYSCALL_BASE + 318)
+#define __NR_mbind (__NR_SYSCALL_BASE + 319)
+#define __NR_get_mempolicy (__NR_SYSCALL_BASE + 320)
+#define __NR_set_mempolicy (__NR_SYSCALL_BASE + 321)
+#define __NR_openat (__NR_SYSCALL_BASE + 322)
+#define __NR_mkdirat (__NR_SYSCALL_BASE + 323)
+#define __NR_mknodat (__NR_SYSCALL_BASE + 324)
+#define __NR_fchownat (__NR_SYSCALL_BASE + 325)
+#define __NR_futimesat (__NR_SYSCALL_BASE + 326)
+#define __NR_fstatat64 (__NR_SYSCALL_BASE + 327)
+#define __NR_unlinkat (__NR_SYSCALL_BASE + 328)
+#define __NR_renameat (__NR_SYSCALL_BASE + 329)
+#define __NR_linkat (__NR_SYSCALL_BASE + 330)
+#define __NR_symlinkat (__NR_SYSCALL_BASE + 331)
+#define __NR_readlinkat (__NR_SYSCALL_BASE + 332)
+#define __NR_fchmodat (__NR_SYSCALL_BASE + 333)
+#define __NR_faccessat (__NR_SYSCALL_BASE + 334)
+#define __NR_pselect6 (__NR_SYSCALL_BASE + 335)
+#define __NR_ppoll (__NR_SYSCALL_BASE + 336)
+#define __NR_unshare (__NR_SYSCALL_BASE + 337)
+#define __NR_set_robust_list (__NR_SYSCALL_BASE + 338)
+#define __NR_get_robust_list (__NR_SYSCALL_BASE + 339)
+#define __NR_splice (__NR_SYSCALL_BASE + 340)
+#define __NR_arm_sync_file_range (__NR_SYSCALL_BASE + 341)
+#define __NR_tee (__NR_SYSCALL_BASE + 342)
+#define __NR_vmsplice (__NR_SYSCALL_BASE + 343)
+#define __NR_move_pages (__NR_SYSCALL_BASE + 344)
+#define __NR_getcpu (__NR_SYSCALL_BASE + 345)
+#define __NR_epoll_pwait (__NR_SYSCALL_BASE + 346)
+#define __NR_kexec_load (__NR_SYSCALL_BASE + 347)
+#define __NR_utimensat (__NR_SYSCALL_BASE + 348)
+#define __NR_signalfd (__NR_SYSCALL_BASE + 349)
+#define __NR_timerfd_create (__NR_SYSCALL_BASE + 350)
+#define __NR_eventfd (__NR_SYSCALL_BASE + 351)
+#define __NR_fallocate (__NR_SYSCALL_BASE + 352)
+#define __NR_timerfd_settime (__NR_SYSCALL_BASE + 353)
+#define __NR_timerfd_gettime (__NR_SYSCALL_BASE + 354)
+#define __NR_signalfd4 (__NR_SYSCALL_BASE + 355)
+#define __NR_eventfd2 (__NR_SYSCALL_BASE + 356)
+#define __NR_epoll_create1 (__NR_SYSCALL_BASE + 357)
+#define __NR_dup3 (__NR_SYSCALL_BASE + 358)
+#define __NR_pipe2 (__NR_SYSCALL_BASE + 359)
+#define __NR_inotify_init1 (__NR_SYSCALL_BASE + 360)
+#define __NR_preadv (__NR_SYSCALL_BASE + 361)
+#define __NR_pwritev (__NR_SYSCALL_BASE + 362)
+#define __NR_rt_tgsigqueueinfo (__NR_SYSCALL_BASE + 363)
+#define __NR_perf_event_open (__NR_SYSCALL_BASE + 364)
+#define __NR_recvmmsg (__NR_SYSCALL_BASE + 365)
+#define __NR_accept4 (__NR_SYSCALL_BASE + 366)
+#define __NR_fanotify_init (__NR_SYSCALL_BASE + 367)
+#define __NR_fanotify_mark (__NR_SYSCALL_BASE + 368)
+#define __NR_prlimit64 (__NR_SYSCALL_BASE + 369)
+#define __NR_name_to_handle_at (__NR_SYSCALL_BASE + 370)
+#define __NR_open_by_handle_at (__NR_SYSCALL_BASE + 371)
+#define __NR_clock_adjtime (__NR_SYSCALL_BASE + 372)
+#define __NR_syncfs (__NR_SYSCALL_BASE + 373)
+#define __NR_sendmmsg (__NR_SYSCALL_BASE + 374)
+#define __NR_setns (__NR_SYSCALL_BASE + 375)
+#define __NR_process_vm_readv (__NR_SYSCALL_BASE + 376)
+#define __NR_process_vm_writev (__NR_SYSCALL_BASE + 377)
+#define __NR_kcmp (__NR_SYSCALL_BASE + 378)
+#define __NR_finit_module (__NR_SYSCALL_BASE + 379)
+#define __NR_sched_setattr (__NR_SYSCALL_BASE + 380)
+#define __NR_sched_getattr (__NR_SYSCALL_BASE + 381)
+#define __NR_renameat2 (__NR_SYSCALL_BASE + 382)
+#define __NR_seccomp (__NR_SYSCALL_BASE + 383)
+#define __NR_getrandom (__NR_SYSCALL_BASE + 384)
+#define __NR_memfd_create (__NR_SYSCALL_BASE + 385)
+#define __NR_bpf (__NR_SYSCALL_BASE + 386)
+#define __NR_execveat (__NR_SYSCALL_BASE + 387)
+#define __NR_userfaultfd (__NR_SYSCALL_BASE + 388)
+#define __NR_membarrier (__NR_SYSCALL_BASE + 389)
+#define __NR_mlock2 (__NR_SYSCALL_BASE + 390)
+#define __NR_copy_file_range (__NR_SYSCALL_BASE + 391)
+#define __NR_preadv2 (__NR_SYSCALL_BASE + 392)
+#define __NR_pwritev2 (__NR_SYSCALL_BASE + 393)
+#define __NR_pkey_mprotect (__NR_SYSCALL_BASE + 394)
+#define __NR_pkey_alloc (__NR_SYSCALL_BASE + 395)
+#define __NR_pkey_free (__NR_SYSCALL_BASE + 396)
+#define __NR_statx (__NR_SYSCALL_BASE + 397)
+#define __NR_rseq (__NR_SYSCALL_BASE + 398)
+#define __NR_io_pgetevents (__NR_SYSCALL_BASE + 399)
+#define __NR_migrate_pages (__NR_SYSCALL_BASE + 400)
+#define __NR_kexec_file_load (__NR_SYSCALL_BASE + 401)
+#define __NR_clock_gettime64 (__NR_SYSCALL_BASE + 403)
+#define __NR_clock_settime64 (__NR_SYSCALL_BASE + 404)
+#define __NR_clock_adjtime64 (__NR_SYSCALL_BASE + 405)
+#define __NR_clock_getres_time64 (__NR_SYSCALL_BASE + 406)
+#define __NR_clock_nanosleep_time64 (__NR_SYSCALL_BASE + 407)
+#define __NR_timer_gettime64 (__NR_SYSCALL_BASE + 408)
+#define __NR_timer_settime64 (__NR_SYSCALL_BASE + 409)
+#define __NR_timerfd_gettime64 (__NR_SYSCALL_BASE + 410)
+#define __NR_timerfd_settime64 (__NR_SYSCALL_BASE + 411)
+#define __NR_utimensat_time64 (__NR_SYSCALL_BASE + 412)
+#define __NR_pselect6_time64 (__NR_SYSCALL_BASE + 413)
+#define __NR_ppoll_time64 (__NR_SYSCALL_BASE + 414)
+#define __NR_io_pgetevents_time64 (__NR_SYSCALL_BASE + 416)
+#define __NR_recvmmsg_time64 (__NR_SYSCALL_BASE + 417)
+#define __NR_mq_timedsend_time64 (__NR_SYSCALL_BASE + 418)
+#define __NR_mq_timedreceive_time64 (__NR_SYSCALL_BASE + 419)
+#define __NR_semtimedop_time64 (__NR_SYSCALL_BASE + 420)
+#define __NR_rt_sigtimedwait_time64 (__NR_SYSCALL_BASE + 421)
+#define __NR_futex_time64 (__NR_SYSCALL_BASE + 422)
+#define __NR_sched_rr_get_interval_time64 (__NR_SYSCALL_BASE + 423)
+#define __NR_pidfd_send_signal (__NR_SYSCALL_BASE + 424)
+#define __NR_io_uring_setup (__NR_SYSCALL_BASE + 425)
+#define __NR_io_uring_enter (__NR_SYSCALL_BASE + 426)
+#define __NR_io_uring_register (__NR_SYSCALL_BASE + 427)
+#define __NR_open_tree (__NR_SYSCALL_BASE + 428)
+#define __NR_move_mount (__NR_SYSCALL_BASE + 429)
+#define __NR_fsopen (__NR_SYSCALL_BASE + 430)
+#define __NR_fsconfig (__NR_SYSCALL_BASE + 431)
+#define __NR_fsmount (__NR_SYSCALL_BASE + 432)
+#define __NR_fspick (__NR_SYSCALL_BASE + 433)
+#define __NR_pidfd_open (__NR_SYSCALL_BASE + 434)
+#define __NR_clone3 (__NR_SYSCALL_BASE + 435)
+#define __NR_close_range (__NR_SYSCALL_BASE + 436)
+#define __NR_openat2 (__NR_SYSCALL_BASE + 437)
+#define __NR_pidfd_getfd (__NR_SYSCALL_BASE + 438)
+#define __NR_faccessat2 (__NR_SYSCALL_BASE + 439)
+#define __NR_process_madvise (__NR_SYSCALL_BASE + 440)
+#define __NR_epoll_pwait2 (__NR_SYSCALL_BASE + 441)
+#define __NR_mount_setattr (__NR_SYSCALL_BASE + 442)
+#define __NR_quotactl_fd (__NR_SYSCALL_BASE + 443)
+#define __NR_landlock_create_ruleset (__NR_SYSCALL_BASE + 444)
+#define __NR_landlock_add_rule (__NR_SYSCALL_BASE + 445)
+#define __NR_landlock_restrict_self (__NR_SYSCALL_BASE + 446)
+#define __NR_process_mrelease (__NR_SYSCALL_BASE + 448)
+#define __NR_futex_waitv (__NR_SYSCALL_BASE + 449)
+#endif
diff --git a/i686-linux-musl/include/asm-arm/asm/unistd.h b/i686-linux-musl/include/asm-arm/asm/unistd.h
new file mode 100644
index 0000000..8bb0f58
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm/asm/unistd.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__ASM_ARM_UNISTD_H
+#define _UAPI__ASM_ARM_UNISTD_H
+#define __NR_OABI_SYSCALL_BASE 0x900000
+#define __NR_SYSCALL_MASK 0x0fffff
+#define __NR_SYSCALL_BASE 0
+#include <asm/unistd-eabi.h>
+#define __NR_sync_file_range2 __NR_arm_sync_file_range
+#define __ARM_NR_BASE (__NR_SYSCALL_BASE + 0x0f0000)
+#define __ARM_NR_breakpoint (__ARM_NR_BASE + 1)
+#define __ARM_NR_cacheflush (__ARM_NR_BASE + 2)
+#define __ARM_NR_usr26 (__ARM_NR_BASE + 3)
+#define __ARM_NR_usr32 (__ARM_NR_BASE + 4)
+#define __ARM_NR_set_tls (__ARM_NR_BASE + 5)
+#define __ARM_NR_get_tls (__ARM_NR_BASE + 6)
+#endif
diff --git a/i686-linux-musl/include/asm-arm64/asm/auxvec.h b/i686-linux-musl/include/asm-arm64/asm/auxvec.h
new file mode 100644
index 0000000..4735fd5
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/auxvec.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 __ASM_AUXVEC_H
+#define __ASM_AUXVEC_H
+#define AT_SYSINFO_EHDR 33
+#define AT_MINSIGSTKSZ 51
+#define AT_VECTOR_SIZE_ARCH 2
+#endif
diff --git a/i686-linux-musl/include/asm-arm64/asm/bitsperlong.h b/i686-linux-musl/include/asm-arm64/asm/bitsperlong.h
new file mode 100644
index 0000000..c409c19
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/bitsperlong.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 __ASM_BITSPERLONG_H
+#define __ASM_BITSPERLONG_H
+#define __BITS_PER_LONG 64
+#include <asm-generic/bitsperlong.h>
+#endif
diff --git a/i686-linux-musl/include/asm-arm64/asm/bpf_perf_event.h b/i686-linux-musl/include/asm-arm64/asm/bpf_perf_event.h
new file mode 100644
index 0000000..cad04bf
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/bpf_perf_event.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__ASM_BPF_PERF_EVENT_H__
+#define _UAPI__ASM_BPF_PERF_EVENT_H__
+#include <asm/ptrace.h>
+typedef struct user_pt_regs bpf_user_pt_regs_t;
+#endif
diff --git a/i686-linux-musl/include/asm-arm64/asm/byteorder.h b/i686-linux-musl/include/asm-arm64/asm/byteorder.h
new file mode 100644
index 0000000..c3174b1
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/byteorder.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 __ASM_BYTEORDER_H
+#define __ASM_BYTEORDER_H
+#ifdef __AARCH64EB__
+#include <linux/byteorder/big_endian.h>
+#else
+#include <linux/byteorder/little_endian.h>
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-arm64/asm/errno.h b/i686-linux-musl/include/asm-arm64/asm/errno.h
new file mode 100644
index 0000000..392cd94
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/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-generic/errno.h>
diff --git a/i686-linux-musl/include/asm-arm64/asm/fcntl.h b/i686-linux-musl/include/asm-arm64/asm/fcntl.h
new file mode 100644
index 0000000..e9e0e01
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/fcntl.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 __ASM_FCNTL_H
+#define __ASM_FCNTL_H
+#define O_DIRECTORY 040000
+#define O_NOFOLLOW 0100000
+#define O_DIRECT 0200000
+#define O_LARGEFILE 0400000
+#include <asm-generic/fcntl.h>
+#endif
diff --git a/i686-linux-musl/include/asm-arm64/asm/hwcap.h b/i686-linux-musl/include/asm-arm64/asm/hwcap.h
new file mode 100644
index 0000000..d4d4324
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/hwcap.h
@@ -0,0 +1,73 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__ASM_HWCAP_H
+#define _UAPI__ASM_HWCAP_H
+#define HWCAP_FP (1 << 0)
+#define HWCAP_ASIMD (1 << 1)
+#define HWCAP_EVTSTRM (1 << 2)
+#define HWCAP_AES (1 << 3)
+#define HWCAP_PMULL (1 << 4)
+#define HWCAP_SHA1 (1 << 5)
+#define HWCAP_SHA2 (1 << 6)
+#define HWCAP_CRC32 (1 << 7)
+#define HWCAP_ATOMICS (1 << 8)
+#define HWCAP_FPHP (1 << 9)
+#define HWCAP_ASIMDHP (1 << 10)
+#define HWCAP_CPUID (1 << 11)
+#define HWCAP_ASIMDRDM (1 << 12)
+#define HWCAP_JSCVT (1 << 13)
+#define HWCAP_FCMA (1 << 14)
+#define HWCAP_LRCPC (1 << 15)
+#define HWCAP_DCPOP (1 << 16)
+#define HWCAP_SHA3 (1 << 17)
+#define HWCAP_SM3 (1 << 18)
+#define HWCAP_SM4 (1 << 19)
+#define HWCAP_ASIMDDP (1 << 20)
+#define HWCAP_SHA512 (1 << 21)
+#define HWCAP_SVE (1 << 22)
+#define HWCAP_ASIMDFHM (1 << 23)
+#define HWCAP_DIT (1 << 24)
+#define HWCAP_USCAT (1 << 25)
+#define HWCAP_ILRCPC (1 << 26)
+#define HWCAP_FLAGM (1 << 27)
+#define HWCAP_SSBS (1 << 28)
+#define HWCAP_SB (1 << 29)
+#define HWCAP_PACA (1 << 30)
+#define HWCAP_PACG (1UL << 31)
+#define HWCAP2_DCPODP (1 << 0)
+#define HWCAP2_SVE2 (1 << 1)
+#define HWCAP2_SVEAES (1 << 2)
+#define HWCAP2_SVEPMULL (1 << 3)
+#define HWCAP2_SVEBITPERM (1 << 4)
+#define HWCAP2_SVESHA3 (1 << 5)
+#define HWCAP2_SVESM4 (1 << 6)
+#define HWCAP2_FLAGM2 (1 << 7)
+#define HWCAP2_FRINT (1 << 8)
+#define HWCAP2_SVEI8MM (1 << 9)
+#define HWCAP2_SVEF32MM (1 << 10)
+#define HWCAP2_SVEF64MM (1 << 11)
+#define HWCAP2_SVEBF16 (1 << 12)
+#define HWCAP2_I8MM (1 << 13)
+#define HWCAP2_BF16 (1 << 14)
+#define HWCAP2_DGH (1 << 15)
+#define HWCAP2_RNG (1 << 16)
+#define HWCAP2_BTI (1 << 17)
+#define HWCAP2_MTE (1 << 18)
+#define HWCAP2_ECV (1 << 19)
+#endif
diff --git a/i686-linux-musl/include/asm-arm64/asm/ioctl.h b/i686-linux-musl/include/asm-arm64/asm/ioctl.h
new file mode 100644
index 0000000..7b7bd37
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/ioctl.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-generic/ioctl.h>
diff --git a/i686-linux-musl/include/asm-arm64/asm/ioctls.h b/i686-linux-musl/include/asm-arm64/asm/ioctls.h
new file mode 100644
index 0000000..0c66935
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/ioctls.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-generic/ioctls.h>
diff --git a/i686-linux-musl/include/asm-arm64/asm/ipcbuf.h b/i686-linux-musl/include/asm-arm64/asm/ipcbuf.h
new file mode 100644
index 0000000..0021f14
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/ipcbuf.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-generic/ipcbuf.h>
diff --git a/i686-linux-musl/include/asm-arm64/asm/kvm.h b/i686-linux-musl/include/asm-arm64/asm/kvm.h
new file mode 100644
index 0000000..74aa7c6
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/kvm.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 __ARM_KVM_H__
+#define __ARM_KVM_H__
+#define KVM_SPSR_EL1 0
+#define KVM_SPSR_SVC KVM_SPSR_EL1
+#define KVM_SPSR_ABT 1
+#define KVM_SPSR_UND 2
+#define KVM_SPSR_IRQ 3
+#define KVM_SPSR_FIQ 4
+#define KVM_NR_SPSR 5
+#ifndef __ASSEMBLY__
+#include <linux/psci.h>
+#include <linux/types.h>
+#include <asm/ptrace.h>
+#include <asm/sve_context.h>
+#define __KVM_HAVE_GUEST_DEBUG
+#define __KVM_HAVE_IRQ_LINE
+#define __KVM_HAVE_READONLY_MEM
+#define __KVM_HAVE_VCPU_EVENTS
+#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
+#define KVM_REG_SIZE(id) (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
+struct kvm_regs {
+  struct user_pt_regs regs;
+  __u64 sp_el1;
+  __u64 elr_el1;
+  __u64 spsr[KVM_NR_SPSR];
+  struct user_fpsimd_state fp_regs;
+};
+#define KVM_ARM_TARGET_AEM_V8 0
+#define KVM_ARM_TARGET_FOUNDATION_V8 1
+#define KVM_ARM_TARGET_CORTEX_A57 2
+#define KVM_ARM_TARGET_XGENE_POTENZA 3
+#define KVM_ARM_TARGET_CORTEX_A53 4
+#define KVM_ARM_TARGET_GENERIC_V8 5
+#define KVM_ARM_NUM_TARGETS 6
+#define KVM_ARM_DEVICE_TYPE_SHIFT 0
+#define KVM_ARM_DEVICE_TYPE_MASK (0xffff << KVM_ARM_DEVICE_TYPE_SHIFT)
+#define KVM_ARM_DEVICE_ID_SHIFT 16
+#define KVM_ARM_DEVICE_ID_MASK (0xffff << KVM_ARM_DEVICE_ID_SHIFT)
+#define KVM_ARM_DEVICE_VGIC_V2 0
+#define KVM_VGIC_V2_ADDR_TYPE_DIST 0
+#define KVM_VGIC_V2_ADDR_TYPE_CPU 1
+#define KVM_VGIC_V2_DIST_SIZE 0x1000
+#define KVM_VGIC_V2_CPU_SIZE 0x2000
+#define KVM_VGIC_V3_ADDR_TYPE_DIST 2
+#define KVM_VGIC_V3_ADDR_TYPE_REDIST 3
+#define KVM_VGIC_ITS_ADDR_TYPE 4
+#define KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION 5
+#define KVM_VGIC_V3_DIST_SIZE SZ_64K
+#define KVM_VGIC_V3_REDIST_SIZE (2 * SZ_64K)
+#define KVM_VGIC_V3_ITS_SIZE (2 * SZ_64K)
+#define KVM_ARM_VCPU_POWER_OFF 0
+#define KVM_ARM_VCPU_EL1_32BIT 1
+#define KVM_ARM_VCPU_PSCI_0_2 2
+#define KVM_ARM_VCPU_PMU_V3 3
+#define KVM_ARM_VCPU_SVE 4
+#define KVM_ARM_VCPU_PTRAUTH_ADDRESS 5
+#define KVM_ARM_VCPU_PTRAUTH_GENERIC 6
+struct kvm_vcpu_init {
+  __u32 target;
+  __u32 features[7];
+};
+struct kvm_sregs {
+};
+struct kvm_fpu {
+};
+#define KVM_ARM_MAX_DBG_REGS 16
+struct kvm_guest_debug_arch {
+  __u64 dbg_bcr[KVM_ARM_MAX_DBG_REGS];
+  __u64 dbg_bvr[KVM_ARM_MAX_DBG_REGS];
+  __u64 dbg_wcr[KVM_ARM_MAX_DBG_REGS];
+  __u64 dbg_wvr[KVM_ARM_MAX_DBG_REGS];
+};
+struct kvm_debug_exit_arch {
+  __u32 hsr;
+  __u64 far;
+};
+#define KVM_GUESTDBG_USE_SW_BP (1 << 16)
+#define KVM_GUESTDBG_USE_HW (1 << 17)
+struct kvm_sync_regs {
+  __u64 device_irq_level;
+};
+struct kvm_pmu_event_filter {
+  __u16 base_event;
+  __u16 nevents;
+#define KVM_PMU_EVENT_ALLOW 0
+#define KVM_PMU_EVENT_DENY 1
+  __u8 action;
+  __u8 pad[3];
+};
+struct kvm_vcpu_events {
+  struct {
+    __u8 serror_pending;
+    __u8 serror_has_esr;
+    __u8 ext_dabt_pending;
+    __u8 pad[5];
+    __u64 serror_esr;
+  } exception;
+  __u32 reserved[12];
+};
+struct kvm_arm_copy_mte_tags {
+  __u64 guest_ipa;
+  __u64 length;
+  void __user * addr;
+  __u64 flags;
+  __u64 reserved[2];
+};
+#define KVM_ARM_TAGS_TO_GUEST 0
+#define KVM_ARM_TAGS_FROM_GUEST 1
+#define KVM_REG_ARM_COPROC_MASK 0x000000000FFF0000
+#define KVM_REG_ARM_COPROC_SHIFT 16
+#define KVM_REG_ARM_CORE (0x0010 << KVM_REG_ARM_COPROC_SHIFT)
+#define KVM_REG_ARM_CORE_REG(name) (offsetof(struct kvm_regs, name) / sizeof(__u32))
+#define KVM_REG_ARM_DEMUX (0x0011 << KVM_REG_ARM_COPROC_SHIFT)
+#define KVM_REG_ARM_DEMUX_ID_MASK 0x000000000000FF00
+#define KVM_REG_ARM_DEMUX_ID_SHIFT 8
+#define KVM_REG_ARM_DEMUX_ID_CCSIDR (0x00 << KVM_REG_ARM_DEMUX_ID_SHIFT)
+#define KVM_REG_ARM_DEMUX_VAL_MASK 0x00000000000000FF
+#define KVM_REG_ARM_DEMUX_VAL_SHIFT 0
+#define KVM_REG_ARM64_SYSREG (0x0013 << KVM_REG_ARM_COPROC_SHIFT)
+#define KVM_REG_ARM64_SYSREG_OP0_MASK 0x000000000000c000
+#define KVM_REG_ARM64_SYSREG_OP0_SHIFT 14
+#define KVM_REG_ARM64_SYSREG_OP1_MASK 0x0000000000003800
+#define KVM_REG_ARM64_SYSREG_OP1_SHIFT 11
+#define KVM_REG_ARM64_SYSREG_CRN_MASK 0x0000000000000780
+#define KVM_REG_ARM64_SYSREG_CRN_SHIFT 7
+#define KVM_REG_ARM64_SYSREG_CRM_MASK 0x0000000000000078
+#define KVM_REG_ARM64_SYSREG_CRM_SHIFT 3
+#define KVM_REG_ARM64_SYSREG_OP2_MASK 0x0000000000000007
+#define KVM_REG_ARM64_SYSREG_OP2_SHIFT 0
+#define ARM64_SYS_REG_SHIFT_MASK(x,n) (((x) << KVM_REG_ARM64_SYSREG_ ##n ##_SHIFT) & KVM_REG_ARM64_SYSREG_ ##n ##_MASK)
+#define __ARM64_SYS_REG(op0,op1,crn,crm,op2) (KVM_REG_ARM64 | KVM_REG_ARM64_SYSREG | ARM64_SYS_REG_SHIFT_MASK(op0, OP0) | ARM64_SYS_REG_SHIFT_MASK(op1, OP1) | ARM64_SYS_REG_SHIFT_MASK(crn, CRN) | ARM64_SYS_REG_SHIFT_MASK(crm, CRM) | ARM64_SYS_REG_SHIFT_MASK(op2, OP2))
+#define ARM64_SYS_REG(...) (__ARM64_SYS_REG(__VA_ARGS__) | KVM_REG_SIZE_U64)
+#define KVM_REG_ARM_PTIMER_CTL ARM64_SYS_REG(3, 3, 14, 2, 1)
+#define KVM_REG_ARM_PTIMER_CVAL ARM64_SYS_REG(3, 3, 14, 2, 2)
+#define KVM_REG_ARM_PTIMER_CNT ARM64_SYS_REG(3, 3, 14, 0, 1)
+#define KVM_REG_ARM_TIMER_CTL ARM64_SYS_REG(3, 3, 14, 3, 1)
+#define KVM_REG_ARM_TIMER_CVAL ARM64_SYS_REG(3, 3, 14, 0, 2)
+#define KVM_REG_ARM_TIMER_CNT ARM64_SYS_REG(3, 3, 14, 3, 2)
+#define KVM_REG_ARM_FW (0x0014 << KVM_REG_ARM_COPROC_SHIFT)
+#define KVM_REG_ARM_FW_REG(r) (KVM_REG_ARM64 | KVM_REG_SIZE_U64 | KVM_REG_ARM_FW | ((r) & 0xffff))
+#define KVM_REG_ARM_PSCI_VERSION KVM_REG_ARM_FW_REG(0)
+#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1 KVM_REG_ARM_FW_REG(1)
+#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_AVAIL 0
+#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_AVAIL 1
+#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_REQUIRED 2
+#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2 KVM_REG_ARM_FW_REG(2)
+#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_NOT_AVAIL 0
+#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_UNKNOWN 1
+#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_AVAIL 2
+#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_NOT_REQUIRED 3
+#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_ENABLED (1U << 4)
+#define KVM_REG_ARM64_SVE (0x15 << KVM_REG_ARM_COPROC_SHIFT)
+#define KVM_REG_ARM64_SVE_ZREG_BASE 0
+#define KVM_REG_ARM64_SVE_PREG_BASE 0x400
+#define KVM_REG_ARM64_SVE_FFR_BASE 0x600
+#define KVM_ARM64_SVE_NUM_ZREGS __SVE_NUM_ZREGS
+#define KVM_ARM64_SVE_NUM_PREGS __SVE_NUM_PREGS
+#define KVM_ARM64_SVE_MAX_SLICES 32
+#define KVM_REG_ARM64_SVE_ZREG(n,i) (KVM_REG_ARM64 | KVM_REG_ARM64_SVE | KVM_REG_ARM64_SVE_ZREG_BASE | KVM_REG_SIZE_U2048 | (((n) & (KVM_ARM64_SVE_NUM_ZREGS - 1)) << 5) | ((i) & (KVM_ARM64_SVE_MAX_SLICES - 1)))
+#define KVM_REG_ARM64_SVE_PREG(n,i) (KVM_REG_ARM64 | KVM_REG_ARM64_SVE | KVM_REG_ARM64_SVE_PREG_BASE | KVM_REG_SIZE_U256 | (((n) & (KVM_ARM64_SVE_NUM_PREGS - 1)) << 5) | ((i) & (KVM_ARM64_SVE_MAX_SLICES - 1)))
+#define KVM_REG_ARM64_SVE_FFR(i) (KVM_REG_ARM64 | KVM_REG_ARM64_SVE | KVM_REG_ARM64_SVE_FFR_BASE | KVM_REG_SIZE_U256 | ((i) & (KVM_ARM64_SVE_MAX_SLICES - 1)))
+#define KVM_ARM64_SVE_VQ_MIN __SVE_VQ_MIN
+#define KVM_ARM64_SVE_VQ_MAX __SVE_VQ_MAX
+#define KVM_REG_ARM64_SVE_VLS (KVM_REG_ARM64 | KVM_REG_ARM64_SVE | KVM_REG_SIZE_U512 | 0xffff)
+#define KVM_ARM64_SVE_VLS_WORDS ((KVM_ARM64_SVE_VQ_MAX - KVM_ARM64_SVE_VQ_MIN) / 64 + 1)
+#define KVM_DEV_ARM_VGIC_GRP_ADDR 0
+#define KVM_DEV_ARM_VGIC_GRP_DIST_REGS 1
+#define KVM_DEV_ARM_VGIC_GRP_CPU_REGS 2
+#define KVM_DEV_ARM_VGIC_CPUID_SHIFT 32
+#define KVM_DEV_ARM_VGIC_CPUID_MASK (0xffULL << KVM_DEV_ARM_VGIC_CPUID_SHIFT)
+#define KVM_DEV_ARM_VGIC_V3_MPIDR_SHIFT 32
+#define KVM_DEV_ARM_VGIC_V3_MPIDR_MASK (0xffffffffULL << KVM_DEV_ARM_VGIC_V3_MPIDR_SHIFT)
+#define KVM_DEV_ARM_VGIC_OFFSET_SHIFT 0
+#define KVM_DEV_ARM_VGIC_OFFSET_MASK (0xffffffffULL << KVM_DEV_ARM_VGIC_OFFSET_SHIFT)
+#define KVM_DEV_ARM_VGIC_SYSREG_INSTR_MASK (0xffff)
+#define KVM_DEV_ARM_VGIC_GRP_NR_IRQS 3
+#define KVM_DEV_ARM_VGIC_GRP_CTRL 4
+#define KVM_DEV_ARM_VGIC_GRP_REDIST_REGS 5
+#define KVM_DEV_ARM_VGIC_GRP_CPU_SYSREGS 6
+#define KVM_DEV_ARM_VGIC_GRP_LEVEL_INFO 7
+#define KVM_DEV_ARM_VGIC_GRP_ITS_REGS 8
+#define KVM_DEV_ARM_VGIC_LINE_LEVEL_INFO_SHIFT 10
+#define KVM_DEV_ARM_VGIC_LINE_LEVEL_INFO_MASK (0x3fffffULL << KVM_DEV_ARM_VGIC_LINE_LEVEL_INFO_SHIFT)
+#define KVM_DEV_ARM_VGIC_LINE_LEVEL_INTID_MASK 0x3ff
+#define VGIC_LEVEL_INFO_LINE_LEVEL 0
+#define KVM_DEV_ARM_VGIC_CTRL_INIT 0
+#define KVM_DEV_ARM_ITS_SAVE_TABLES 1
+#define KVM_DEV_ARM_ITS_RESTORE_TABLES 2
+#define KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES 3
+#define KVM_DEV_ARM_ITS_CTRL_RESET 4
+#define KVM_ARM_VCPU_PMU_V3_CTRL 0
+#define KVM_ARM_VCPU_PMU_V3_IRQ 0
+#define KVM_ARM_VCPU_PMU_V3_INIT 1
+#define KVM_ARM_VCPU_PMU_V3_FILTER 2
+#define KVM_ARM_VCPU_TIMER_CTRL 1
+#define KVM_ARM_VCPU_TIMER_IRQ_VTIMER 0
+#define KVM_ARM_VCPU_TIMER_IRQ_PTIMER 1
+#define KVM_ARM_VCPU_PVTIME_CTRL 2
+#define KVM_ARM_VCPU_PVTIME_IPA 0
+#define KVM_ARM_IRQ_VCPU2_SHIFT 28
+#define KVM_ARM_IRQ_VCPU2_MASK 0xf
+#define KVM_ARM_IRQ_TYPE_SHIFT 24
+#define KVM_ARM_IRQ_TYPE_MASK 0xf
+#define KVM_ARM_IRQ_VCPU_SHIFT 16
+#define KVM_ARM_IRQ_VCPU_MASK 0xff
+#define KVM_ARM_IRQ_NUM_SHIFT 0
+#define KVM_ARM_IRQ_NUM_MASK 0xffff
+#define KVM_ARM_IRQ_TYPE_CPU 0
+#define KVM_ARM_IRQ_TYPE_SPI 1
+#define KVM_ARM_IRQ_TYPE_PPI 2
+#define KVM_ARM_IRQ_CPU_IRQ 0
+#define KVM_ARM_IRQ_CPU_FIQ 1
+#define KVM_ARM_IRQ_GIC_MAX 127
+#define KVM_NR_IRQCHIPS 1
+#define KVM_PSCI_FN_BASE 0x95c1ba5e
+#define KVM_PSCI_FN(n) (KVM_PSCI_FN_BASE + (n))
+#define KVM_PSCI_FN_CPU_SUSPEND KVM_PSCI_FN(0)
+#define KVM_PSCI_FN_CPU_OFF KVM_PSCI_FN(1)
+#define KVM_PSCI_FN_CPU_ON KVM_PSCI_FN(2)
+#define KVM_PSCI_FN_MIGRATE KVM_PSCI_FN(3)
+#define KVM_PSCI_RET_SUCCESS PSCI_RET_SUCCESS
+#define KVM_PSCI_RET_NI PSCI_RET_NOT_SUPPORTED
+#define KVM_PSCI_RET_INVAL PSCI_RET_INVALID_PARAMS
+#define KVM_PSCI_RET_DENIED PSCI_RET_DENIED
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-arm64/asm/kvm_para.h b/i686-linux-musl/include/asm-arm64/asm/kvm_para.h
new file mode 100644
index 0000000..e19f7a0
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/kvm_para.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-generic/kvm_para.h>
diff --git a/i686-linux-musl/include/asm-arm64/asm/mman.h b/i686-linux-musl/include/asm-arm64/asm/mman.h
new file mode 100644
index 0000000..98f72cf
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/mman.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__ASM_MMAN_H
+#define _UAPI__ASM_MMAN_H
+#include <asm-generic/mman.h>
+#define PROT_BTI 0x10
+#define PROT_MTE 0x20
+#endif
diff --git a/i686-linux-musl/include/asm-arm64/asm/msgbuf.h b/i686-linux-musl/include/asm-arm64/asm/msgbuf.h
new file mode 100644
index 0000000..7809e3c
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/msgbuf.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-generic/msgbuf.h>
diff --git a/i686-linux-musl/include/asm-arm64/asm/param.h b/i686-linux-musl/include/asm-arm64/asm/param.h
new file mode 100644
index 0000000..3bd70ed
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/param.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 __ASM_PARAM_H
+#define __ASM_PARAM_H
+#define EXEC_PAGESIZE 65536
+#include <asm-generic/param.h>
+#endif
diff --git a/i686-linux-musl/include/asm-arm64/asm/perf_regs.h b/i686-linux-musl/include/asm-arm64/asm/perf_regs.h
new file mode 100644
index 0000000..71d496f
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/perf_regs.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 _ASM_ARM64_PERF_REGS_H
+#define _ASM_ARM64_PERF_REGS_H
+enum perf_event_arm_regs {
+  PERF_REG_ARM64_X0,
+  PERF_REG_ARM64_X1,
+  PERF_REG_ARM64_X2,
+  PERF_REG_ARM64_X3,
+  PERF_REG_ARM64_X4,
+  PERF_REG_ARM64_X5,
+  PERF_REG_ARM64_X6,
+  PERF_REG_ARM64_X7,
+  PERF_REG_ARM64_X8,
+  PERF_REG_ARM64_X9,
+  PERF_REG_ARM64_X10,
+  PERF_REG_ARM64_X11,
+  PERF_REG_ARM64_X12,
+  PERF_REG_ARM64_X13,
+  PERF_REG_ARM64_X14,
+  PERF_REG_ARM64_X15,
+  PERF_REG_ARM64_X16,
+  PERF_REG_ARM64_X17,
+  PERF_REG_ARM64_X18,
+  PERF_REG_ARM64_X19,
+  PERF_REG_ARM64_X20,
+  PERF_REG_ARM64_X21,
+  PERF_REG_ARM64_X22,
+  PERF_REG_ARM64_X23,
+  PERF_REG_ARM64_X24,
+  PERF_REG_ARM64_X25,
+  PERF_REG_ARM64_X26,
+  PERF_REG_ARM64_X27,
+  PERF_REG_ARM64_X28,
+  PERF_REG_ARM64_X29,
+  PERF_REG_ARM64_LR,
+  PERF_REG_ARM64_SP,
+  PERF_REG_ARM64_PC,
+  PERF_REG_ARM64_MAX,
+};
+#endif
diff --git a/i686-linux-musl/include/asm-arm64/asm/poll.h b/i686-linux-musl/include/asm-arm64/asm/poll.h
new file mode 100644
index 0000000..d7e8adc
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/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-generic/poll.h>
diff --git a/i686-linux-musl/include/asm-arm64/asm/posix_types.h b/i686-linux-musl/include/asm-arm64/asm/posix_types.h
new file mode 100644
index 0000000..9ae7bfc
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/posix_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 __ASM_POSIX_TYPES_H
+#define __ASM_POSIX_TYPES_H
+typedef unsigned short __kernel_old_uid_t;
+typedef unsigned short __kernel_old_gid_t;
+#define __kernel_old_uid_t __kernel_old_uid_t
+#include <asm-generic/posix_types.h>
+#endif
diff --git a/i686-linux-musl/include/asm-arm64/asm/ptrace.h b/i686-linux-musl/include/asm-arm64/asm/ptrace.h
new file mode 100644
index 0000000..480efcf
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/ptrace.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__ASM_PTRACE_H
+#define _UAPI__ASM_PTRACE_H
+#include <linux/types.h>
+#include <asm/hwcap.h>
+#include <asm/sve_context.h>
+#define PSR_MODE_EL0t 0x00000000
+#define PSR_MODE_EL1t 0x00000004
+#define PSR_MODE_EL1h 0x00000005
+#define PSR_MODE_EL2t 0x00000008
+#define PSR_MODE_EL2h 0x00000009
+#define PSR_MODE_EL3t 0x0000000c
+#define PSR_MODE_EL3h 0x0000000d
+#define PSR_MODE_MASK 0x0000000f
+#define PSR_MODE32_BIT 0x00000010
+#define PSR_F_BIT 0x00000040
+#define PSR_I_BIT 0x00000080
+#define PSR_A_BIT 0x00000100
+#define PSR_D_BIT 0x00000200
+#define PSR_BTYPE_MASK 0x00000c00
+#define PSR_SSBS_BIT 0x00001000
+#define PSR_PAN_BIT 0x00400000
+#define PSR_UAO_BIT 0x00800000
+#define PSR_DIT_BIT 0x01000000
+#define PSR_TCO_BIT 0x02000000
+#define PSR_V_BIT 0x10000000
+#define PSR_C_BIT 0x20000000
+#define PSR_Z_BIT 0x40000000
+#define PSR_N_BIT 0x80000000
+#define PSR_BTYPE_SHIFT 10
+#define PSR_f 0xff000000
+#define PSR_s 0x00ff0000
+#define PSR_x 0x0000ff00
+#define PSR_c 0x000000ff
+#define PSR_BTYPE_NONE (0b00 << PSR_BTYPE_SHIFT)
+#define PSR_BTYPE_JC (0b01 << PSR_BTYPE_SHIFT)
+#define PSR_BTYPE_C (0b10 << PSR_BTYPE_SHIFT)
+#define PSR_BTYPE_J (0b11 << PSR_BTYPE_SHIFT)
+#define PTRACE_SYSEMU 31
+#define PTRACE_SYSEMU_SINGLESTEP 32
+#define PTRACE_PEEKMTETAGS 33
+#define PTRACE_POKEMTETAGS 34
+#ifndef __ASSEMBLY__
+struct user_pt_regs {
+  __u64 regs[31];
+  __u64 sp;
+  __u64 pc;
+  __u64 pstate;
+};
+struct user_fpsimd_state {
+  __uint128_t vregs[32];
+  __u32 fpsr;
+  __u32 fpcr;
+  __u32 __reserved[2];
+};
+struct user_hwdebug_state {
+  __u32 dbg_info;
+  __u32 pad;
+  struct {
+    __u64 addr;
+    __u32 ctrl;
+    __u32 pad;
+  } dbg_regs[16];
+};
+struct user_sve_header {
+  __u32 size;
+  __u32 max_size;
+  __u16 vl;
+  __u16 max_vl;
+  __u16 flags;
+  __u16 __reserved;
+};
+#define SVE_PT_REGS_MASK (1 << 0)
+#define SVE_PT_REGS_FPSIMD 0
+#define SVE_PT_REGS_SVE SVE_PT_REGS_MASK
+#define SVE_PT_VL_INHERIT ((1 << 17) >> 16)
+#define SVE_PT_VL_ONEXEC ((1 << 18) >> 16)
+#define SVE_PT_REGS_OFFSET ((sizeof(struct user_sve_header) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
+#define SVE_PT_FPSIMD_OFFSET SVE_PT_REGS_OFFSET
+#define SVE_PT_FPSIMD_SIZE(vq,flags) (sizeof(struct user_fpsimd_state))
+#define SVE_PT_SVE_ZREG_SIZE(vq) __SVE_ZREG_SIZE(vq)
+#define SVE_PT_SVE_PREG_SIZE(vq) __SVE_PREG_SIZE(vq)
+#define SVE_PT_SVE_FFR_SIZE(vq) __SVE_FFR_SIZE(vq)
+#define SVE_PT_SVE_FPSR_SIZE sizeof(__u32)
+#define SVE_PT_SVE_FPCR_SIZE sizeof(__u32)
+#define SVE_PT_SVE_OFFSET SVE_PT_REGS_OFFSET
+#define SVE_PT_SVE_ZREGS_OFFSET (SVE_PT_REGS_OFFSET + __SVE_ZREGS_OFFSET)
+#define SVE_PT_SVE_ZREG_OFFSET(vq,n) (SVE_PT_REGS_OFFSET + __SVE_ZREG_OFFSET(vq, n))
+#define SVE_PT_SVE_ZREGS_SIZE(vq) (SVE_PT_SVE_ZREG_OFFSET(vq, __SVE_NUM_ZREGS) - SVE_PT_SVE_ZREGS_OFFSET)
+#define SVE_PT_SVE_PREGS_OFFSET(vq) (SVE_PT_REGS_OFFSET + __SVE_PREGS_OFFSET(vq))
+#define SVE_PT_SVE_PREG_OFFSET(vq,n) (SVE_PT_REGS_OFFSET + __SVE_PREG_OFFSET(vq, n))
+#define SVE_PT_SVE_PREGS_SIZE(vq) (SVE_PT_SVE_PREG_OFFSET(vq, __SVE_NUM_PREGS) - SVE_PT_SVE_PREGS_OFFSET(vq))
+#define SVE_PT_SVE_FFR_OFFSET(vq) (SVE_PT_REGS_OFFSET + __SVE_FFR_OFFSET(vq))
+#define SVE_PT_SVE_FPSR_OFFSET(vq) ((SVE_PT_SVE_FFR_OFFSET(vq) + SVE_PT_SVE_FFR_SIZE(vq) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
+#define SVE_PT_SVE_FPCR_OFFSET(vq) (SVE_PT_SVE_FPSR_OFFSET(vq) + SVE_PT_SVE_FPSR_SIZE)
+#define SVE_PT_SVE_SIZE(vq,flags) ((SVE_PT_SVE_FPCR_OFFSET(vq) + SVE_PT_SVE_FPCR_SIZE - SVE_PT_SVE_OFFSET + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
+#define SVE_PT_SIZE(vq,flags) (((flags) & SVE_PT_REGS_MASK) == SVE_PT_REGS_SVE ? SVE_PT_SVE_OFFSET + SVE_PT_SVE_SIZE(vq, flags) : SVE_PT_FPSIMD_OFFSET + SVE_PT_FPSIMD_SIZE(vq, flags))
+struct user_pac_mask {
+  __u64 data_mask;
+  __u64 insn_mask;
+};
+struct user_pac_address_keys {
+  __uint128_t apiakey;
+  __uint128_t apibkey;
+  __uint128_t apdakey;
+  __uint128_t apdbkey;
+};
+struct user_pac_generic_keys {
+  __uint128_t apgakey;
+};
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-arm64/asm/resource.h b/i686-linux-musl/include/asm-arm64/asm/resource.h
new file mode 100644
index 0000000..371adb5
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/resource.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-generic/resource.h>
diff --git a/i686-linux-musl/include/asm-arm64/asm/sembuf.h b/i686-linux-musl/include/asm-arm64/asm/sembuf.h
new file mode 100644
index 0000000..6ce6549
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/sembuf.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-generic/sembuf.h>
diff --git a/i686-linux-musl/include/asm-arm64/asm/setup.h b/i686-linux-musl/include/asm-arm64/asm/setup.h
new file mode 100644
index 0000000..eac94e0
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/setup.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 __ASM_SETUP_H
+#define __ASM_SETUP_H
+#include <linux/types.h>
+#define COMMAND_LINE_SIZE 2048
+#endif
diff --git a/i686-linux-musl/include/asm-arm64/asm/shmbuf.h b/i686-linux-musl/include/asm-arm64/asm/shmbuf.h
new file mode 100644
index 0000000..fe8b1be
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/shmbuf.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-generic/shmbuf.h>
diff --git a/i686-linux-musl/include/asm-arm64/asm/sigcontext.h b/i686-linux-musl/include/asm-arm64/asm/sigcontext.h
new file mode 100644
index 0000000..518079d
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/sigcontext.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__ASM_SIGCONTEXT_H
+#define _UAPI__ASM_SIGCONTEXT_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+struct sigcontext {
+  __u64 fault_address;
+  __u64 regs[31];
+  __u64 sp;
+  __u64 pc;
+  __u64 pstate;
+  __u8 __reserved[4096] __attribute__((__aligned__(16)));
+};
+struct _aarch64_ctx {
+  __u32 magic;
+  __u32 size;
+};
+#define FPSIMD_MAGIC 0x46508001
+struct fpsimd_context {
+  struct _aarch64_ctx head;
+  __u32 fpsr;
+  __u32 fpcr;
+  __uint128_t vregs[32];
+};
+#define ESR_MAGIC 0x45535201
+struct esr_context {
+  struct _aarch64_ctx head;
+  __u64 esr;
+};
+#define EXTRA_MAGIC 0x45585401
+struct extra_context {
+  struct _aarch64_ctx head;
+  __u64 datap;
+  __u32 size;
+  __u32 __reserved[3];
+};
+#define SVE_MAGIC 0x53564501
+struct sve_context {
+  struct _aarch64_ctx head;
+  __u16 vl;
+  __u16 __reserved[3];
+};
+#endif
+#include <asm/sve_context.h>
+#define SVE_VQ_BYTES __SVE_VQ_BYTES
+#define SVE_VQ_MIN __SVE_VQ_MIN
+#define SVE_VQ_MAX __SVE_VQ_MAX
+#define SVE_VL_MIN __SVE_VL_MIN
+#define SVE_VL_MAX __SVE_VL_MAX
+#define SVE_NUM_ZREGS __SVE_NUM_ZREGS
+#define SVE_NUM_PREGS __SVE_NUM_PREGS
+#define sve_vl_valid(vl) __sve_vl_valid(vl)
+#define sve_vq_from_vl(vl) __sve_vq_from_vl(vl)
+#define sve_vl_from_vq(vq) __sve_vl_from_vq(vq)
+#define SVE_SIG_ZREG_SIZE(vq) __SVE_ZREG_SIZE(vq)
+#define SVE_SIG_PREG_SIZE(vq) __SVE_PREG_SIZE(vq)
+#define SVE_SIG_FFR_SIZE(vq) __SVE_FFR_SIZE(vq)
+#define SVE_SIG_REGS_OFFSET ((sizeof(struct sve_context) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
+#define SVE_SIG_ZREGS_OFFSET (SVE_SIG_REGS_OFFSET + __SVE_ZREGS_OFFSET)
+#define SVE_SIG_ZREG_OFFSET(vq,n) (SVE_SIG_REGS_OFFSET + __SVE_ZREG_OFFSET(vq, n))
+#define SVE_SIG_ZREGS_SIZE(vq) __SVE_ZREGS_SIZE(vq)
+#define SVE_SIG_PREGS_OFFSET(vq) (SVE_SIG_REGS_OFFSET + __SVE_PREGS_OFFSET(vq))
+#define SVE_SIG_PREG_OFFSET(vq,n) (SVE_SIG_REGS_OFFSET + __SVE_PREG_OFFSET(vq, n))
+#define SVE_SIG_PREGS_SIZE(vq) __SVE_PREGS_SIZE(vq)
+#define SVE_SIG_FFR_OFFSET(vq) (SVE_SIG_REGS_OFFSET + __SVE_FFR_OFFSET(vq))
+#define SVE_SIG_REGS_SIZE(vq) (__SVE_FFR_OFFSET(vq) + __SVE_FFR_SIZE(vq))
+#define SVE_SIG_CONTEXT_SIZE(vq) (SVE_SIG_REGS_OFFSET + SVE_SIG_REGS_SIZE(vq))
+#endif
diff --git a/i686-linux-musl/include/asm-arm64/asm/siginfo.h b/i686-linux-musl/include/asm-arm64/asm/siginfo.h
new file mode 100644
index 0000000..a31ebb2
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/siginfo.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-generic/siginfo.h>
diff --git a/i686-linux-musl/include/asm-arm64/asm/signal.h b/i686-linux-musl/include/asm-arm64/asm/signal.h
new file mode 100644
index 0000000..7630b75
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/signal.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 __ASM_SIGNAL_H
+#define __ASM_SIGNAL_H
+#define SA_RESTORER 0x04000000
+#define MINSIGSTKSZ 5120
+#define SIGSTKSZ 16384
+#include <asm-generic/signal.h>
+#endif
diff --git a/i686-linux-musl/include/asm-arm64/asm/socket.h b/i686-linux-musl/include/asm-arm64/asm/socket.h
new file mode 100644
index 0000000..50a9874
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/socket.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-generic/socket.h>
diff --git a/i686-linux-musl/include/asm-arm64/asm/sockios.h b/i686-linux-musl/include/asm-arm64/asm/sockios.h
new file mode 100644
index 0000000..710db92
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/sockios.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-generic/sockios.h>
diff --git a/i686-linux-musl/include/asm-arm64/asm/stat.h b/i686-linux-musl/include/asm-arm64/asm/stat.h
new file mode 100644
index 0000000..af7ebfc
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/stat.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-generic/stat.h>
diff --git a/i686-linux-musl/include/asm-arm64/asm/statfs.h b/i686-linux-musl/include/asm-arm64/asm/statfs.h
new file mode 100644
index 0000000..4a96c7e
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/statfs.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 __ASM_STATFS_H
+#define __ASM_STATFS_H
+#define ARCH_PACK_COMPAT_STATFS64 __attribute__((packed, aligned(4)))
+#include <asm-generic/statfs.h>
+#endif
diff --git a/i686-linux-musl/include/asm-arm64/asm/sve_context.h b/i686-linux-musl/include/asm-arm64/asm/sve_context.h
new file mode 100644
index 0000000..ff0063e
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/sve_context.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__ASM_SVE_CONTEXT_H
+#define _UAPI__ASM_SVE_CONTEXT_H
+#include <linux/types.h>
+#define __SVE_VQ_BYTES 16
+#define __SVE_VQ_MIN 1
+#define __SVE_VQ_MAX 512
+#define __SVE_VL_MIN (__SVE_VQ_MIN * __SVE_VQ_BYTES)
+#define __SVE_VL_MAX (__SVE_VQ_MAX * __SVE_VQ_BYTES)
+#define __SVE_NUM_ZREGS 32
+#define __SVE_NUM_PREGS 16
+#define __sve_vl_valid(vl) ((vl) % __SVE_VQ_BYTES == 0 && (vl) >= __SVE_VL_MIN && (vl) <= __SVE_VL_MAX)
+#define __sve_vq_from_vl(vl) ((vl) / __SVE_VQ_BYTES)
+#define __sve_vl_from_vq(vq) ((vq) * __SVE_VQ_BYTES)
+#define __SVE_ZREG_SIZE(vq) ((__u32) (vq) * __SVE_VQ_BYTES)
+#define __SVE_PREG_SIZE(vq) ((__u32) (vq) * (__SVE_VQ_BYTES / 8))
+#define __SVE_FFR_SIZE(vq) __SVE_PREG_SIZE(vq)
+#define __SVE_ZREGS_OFFSET 0
+#define __SVE_ZREG_OFFSET(vq,n) (__SVE_ZREGS_OFFSET + __SVE_ZREG_SIZE(vq) * (n))
+#define __SVE_ZREGS_SIZE(vq) (__SVE_ZREG_OFFSET(vq, __SVE_NUM_ZREGS) - __SVE_ZREGS_OFFSET)
+#define __SVE_PREGS_OFFSET(vq) (__SVE_ZREGS_OFFSET + __SVE_ZREGS_SIZE(vq))
+#define __SVE_PREG_OFFSET(vq,n) (__SVE_PREGS_OFFSET(vq) + __SVE_PREG_SIZE(vq) * (n))
+#define __SVE_PREGS_SIZE(vq) (__SVE_PREG_OFFSET(vq, __SVE_NUM_PREGS) - __SVE_PREGS_OFFSET(vq))
+#define __SVE_FFR_OFFSET(vq) (__SVE_PREGS_OFFSET(vq) + __SVE_PREGS_SIZE(vq))
+#endif
diff --git a/i686-linux-musl/include/asm-arm64/asm/swab.h b/i686-linux-musl/include/asm-arm64/asm/swab.h
new file mode 100644
index 0000000..0049f53
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/swab.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-generic/swab.h>
diff --git a/i686-linux-musl/include/asm-arm64/asm/termbits.h b/i686-linux-musl/include/asm-arm64/asm/termbits.h
new file mode 100644
index 0000000..42af6fe
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/termbits.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-generic/termbits.h>
diff --git a/i686-linux-musl/include/asm-arm64/asm/termios.h b/i686-linux-musl/include/asm-arm64/asm/termios.h
new file mode 100644
index 0000000..feca4c6
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/termios.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-generic/termios.h>
diff --git a/i686-linux-musl/include/asm-arm64/asm/types.h b/i686-linux-musl/include/asm-arm64/asm/types.h
new file mode 100644
index 0000000..8250f43
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/types.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-generic/types.h>
diff --git a/i686-linux-musl/include/asm-arm64/asm/ucontext.h b/i686-linux-musl/include/asm-arm64/asm/ucontext.h
new file mode 100644
index 0000000..24dc60a
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/ucontext.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__ASM_UCONTEXT_H
+#define _UAPI__ASM_UCONTEXT_H
+#include <linux/types.h>
+struct ucontext {
+  unsigned long uc_flags;
+  struct ucontext * uc_link;
+  stack_t uc_stack;
+  sigset_t uc_sigmask;
+  __u8 __linux_unused[1024 / 8 - sizeof(sigset_t)];
+  struct sigcontext uc_mcontext;
+};
+#endif
diff --git a/i686-linux-musl/include/asm-arm64/asm/unistd.h b/i686-linux-musl/include/asm-arm64/asm/unistd.h
new file mode 100644
index 0000000..06b85ed
--- /dev/null
+++ b/i686-linux-musl/include/asm-arm64/asm/unistd.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!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#define __ARCH_WANT_RENAMEAT
+#define __ARCH_WANT_NEW_STAT
+#define __ARCH_WANT_SET_GET_RLIMIT
+#define __ARCH_WANT_TIME32_SYSCALLS
+#define __ARCH_WANT_SYS_CLONE3
+#define __ARCH_WANT_MEMFD_SECRET
+#include <asm-generic/unistd.h>
diff --git a/i686-linux-musl/include/asm-generic/auxvec.h b/i686-linux-musl/include/asm-generic/auxvec.h
new file mode 100644
index 0000000..fad637b
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/auxvec.h
@@ -0,0 +1,21 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_GENERIC_AUXVEC_H
+#define __ASM_GENERIC_AUXVEC_H
+#endif
diff --git a/i686-linux-musl/include/asm-generic/bitsperlong.h b/i686-linux-musl/include/asm-generic/bitsperlong.h
new file mode 100644
index 0000000..8fb379f
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/bitsperlong.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__ASM_GENERIC_BITS_PER_LONG
+#define _UAPI__ASM_GENERIC_BITS_PER_LONG
+#ifndef __BITS_PER_LONG
+#define __BITS_PER_LONG 32
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-generic/bpf_perf_event.h b/i686-linux-musl/include/asm-generic/bpf_perf_event.h
new file mode 100644
index 0000000..794927b
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/bpf_perf_event.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__ASM_GENERIC_BPF_PERF_EVENT_H__
+#define _UAPI__ASM_GENERIC_BPF_PERF_EVENT_H__
+#include <linux/ptrace.h>
+typedef struct pt_regs bpf_user_pt_regs_t;
+#endif
diff --git a/i686-linux-musl/include/asm-generic/errno-base.h b/i686-linux-musl/include/asm-generic/errno-base.h
new file mode 100644
index 0000000..bdfb811
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/errno-base.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 _ASM_GENERIC_ERRNO_BASE_H
+#define _ASM_GENERIC_ERRNO_BASE_H
+#define EPERM 1
+#define ENOENT 2
+#define ESRCH 3
+#define EINTR 4
+#define EIO 5
+#define ENXIO 6
+#define E2BIG 7
+#define ENOEXEC 8
+#define EBADF 9
+#define ECHILD 10
+#define EAGAIN 11
+#define ENOMEM 12
+#define EACCES 13
+#define EFAULT 14
+#define ENOTBLK 15
+#define EBUSY 16
+#define EEXIST 17
+#define EXDEV 18
+#define ENODEV 19
+#define ENOTDIR 20
+#define EISDIR 21
+#define EINVAL 22
+#define ENFILE 23
+#define EMFILE 24
+#define ENOTTY 25
+#define ETXTBSY 26
+#define EFBIG 27
+#define ENOSPC 28
+#define ESPIPE 29
+#define EROFS 30
+#define EMLINK 31
+#define EPIPE 32
+#define EDOM 33
+#define ERANGE 34
+#endif
diff --git a/i686-linux-musl/include/asm-generic/errno.h b/i686-linux-musl/include/asm-generic/errno.h
new file mode 100644
index 0000000..6a2c285
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/errno.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 _ASM_GENERIC_ERRNO_H
+#define _ASM_GENERIC_ERRNO_H
+#include <asm-generic/errno-base.h>
+#define EDEADLK 35
+#define ENAMETOOLONG 36
+#define ENOLCK 37
+#define ENOSYS 38
+#define ENOTEMPTY 39
+#define ELOOP 40
+#define EWOULDBLOCK EAGAIN
+#define ENOMSG 42
+#define EIDRM 43
+#define ECHRNG 44
+#define EL2NSYNC 45
+#define EL3HLT 46
+#define EL3RST 47
+#define ELNRNG 48
+#define EUNATCH 49
+#define ENOCSI 50
+#define EL2HLT 51
+#define EBADE 52
+#define EBADR 53
+#define EXFULL 54
+#define ENOANO 55
+#define EBADRQC 56
+#define EBADSLT 57
+#define EDEADLOCK EDEADLK
+#define EBFONT 59
+#define ENOSTR 60
+#define ENODATA 61
+#define ETIME 62
+#define ENOSR 63
+#define ENONET 64
+#define ENOPKG 65
+#define EREMOTE 66
+#define ENOLINK 67
+#define EADV 68
+#define ESRMNT 69
+#define ECOMM 70
+#define EPROTO 71
+#define EMULTIHOP 72
+#define EDOTDOT 73
+#define EBADMSG 74
+#define EOVERFLOW 75
+#define ENOTUNIQ 76
+#define EBADFD 77
+#define EREMCHG 78
+#define ELIBACC 79
+#define ELIBBAD 80
+#define ELIBSCN 81
+#define ELIBMAX 82
+#define ELIBEXEC 83
+#define EILSEQ 84
+#define ERESTART 85
+#define ESTRPIPE 86
+#define EUSERS 87
+#define ENOTSOCK 88
+#define EDESTADDRREQ 89
+#define EMSGSIZE 90
+#define EPROTOTYPE 91
+#define ENOPROTOOPT 92
+#define EPROTONOSUPPORT 93
+#define ESOCKTNOSUPPORT 94
+#define EOPNOTSUPP 95
+#define EPFNOSUPPORT 96
+#define EAFNOSUPPORT 97
+#define EADDRINUSE 98
+#define EADDRNOTAVAIL 99
+#define ENETDOWN 100
+#define ENETUNREACH 101
+#define ENETRESET 102
+#define ECONNABORTED 103
+#define ECONNRESET 104
+#define ENOBUFS 105
+#define EISCONN 106
+#define ENOTCONN 107
+#define ESHUTDOWN 108
+#define ETOOMANYREFS 109
+#define ETIMEDOUT 110
+#define ECONNREFUSED 111
+#define EHOSTDOWN 112
+#define EHOSTUNREACH 113
+#define EALREADY 114
+#define EINPROGRESS 115
+#define ESTALE 116
+#define EUCLEAN 117
+#define ENOTNAM 118
+#define ENAVAIL 119
+#define EISNAM 120
+#define EREMOTEIO 121
+#define EDQUOT 122
+#define ENOMEDIUM 123
+#define EMEDIUMTYPE 124
+#define ECANCELED 125
+#define ENOKEY 126
+#define EKEYEXPIRED 127
+#define EKEYREVOKED 128
+#define EKEYREJECTED 129
+#define EOWNERDEAD 130
+#define ENOTRECOVERABLE 131
+#define ERFKILL 132
+#define EHWPOISON 133
+#endif
diff --git a/i686-linux-musl/include/asm-generic/fcntl.h b/i686-linux-musl/include/asm-generic/fcntl.h
new file mode 100644
index 0000000..a2cb5f4
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/fcntl.h
@@ -0,0 +1,156 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_GENERIC_FCNTL_H
+#define _ASM_GENERIC_FCNTL_H
+#include <bits/flock64.h>
+#include <bits/flock.h>
+#include <linux/types.h>
+#define O_ACCMODE 00000003
+#define O_RDONLY 00000000
+#define O_WRONLY 00000001
+#define O_RDWR 00000002
+#ifndef O_CREAT
+#define O_CREAT 00000100
+#endif
+#ifndef O_EXCL
+#define O_EXCL 00000200
+#endif
+#ifndef O_NOCTTY
+#define O_NOCTTY 00000400
+#endif
+#ifndef O_TRUNC
+#define O_TRUNC 00001000
+#endif
+#ifndef O_APPEND
+#define O_APPEND 00002000
+#endif
+#ifndef O_NONBLOCK
+#define O_NONBLOCK 00004000
+#endif
+#ifndef O_DSYNC
+#define O_DSYNC 00010000
+#endif
+#ifndef FASYNC
+#define FASYNC 00020000
+#endif
+#ifndef O_DIRECT
+#define O_DIRECT 00040000
+#endif
+#ifndef O_LARGEFILE
+#define O_LARGEFILE 00100000
+#endif
+#ifndef O_DIRECTORY
+#define O_DIRECTORY 00200000
+#endif
+#ifndef O_NOFOLLOW
+#define O_NOFOLLOW 00400000
+#endif
+#ifndef O_NOATIME
+#define O_NOATIME 01000000
+#endif
+#ifndef O_CLOEXEC
+#define O_CLOEXEC 02000000
+#endif
+#ifndef O_SYNC
+#define __O_SYNC 04000000
+#define O_SYNC (__O_SYNC | O_DSYNC)
+#endif
+#ifndef O_PATH
+#define O_PATH 010000000
+#endif
+#ifndef __O_TMPFILE
+#define __O_TMPFILE 020000000
+#endif
+#define O_TMPFILE (__O_TMPFILE | O_DIRECTORY)
+#define O_TMPFILE_MASK (__O_TMPFILE | O_DIRECTORY | O_CREAT)
+#ifndef O_NDELAY
+#define O_NDELAY O_NONBLOCK
+#endif
+#define F_DUPFD 0
+#define F_GETFD 1
+#define F_SETFD 2
+#define F_GETFL 3
+#define F_SETFL 4
+#ifndef F_GETLK
+#define F_GETLK 5
+#define F_SETLK 6
+#define F_SETLKW 7
+#endif
+#ifndef F_SETOWN
+#define F_SETOWN 8
+#define F_GETOWN 9
+#endif
+#ifndef F_SETSIG
+#define F_SETSIG 10
+#define F_GETSIG 11
+#endif
+#ifndef __LP64__
+#ifndef F_GETLK64
+#define F_GETLK64 12
+#define F_SETLK64 13
+#define F_SETLKW64 14
+#endif
+#endif
+#ifndef F_SETOWN_EX
+#define F_SETOWN_EX 15
+#define F_GETOWN_EX 16
+#endif
+#ifndef F_GETOWNER_UIDS
+#define F_GETOWNER_UIDS 17
+#endif
+#define F_OFD_GETLK 36
+#define F_OFD_SETLK 37
+#define F_OFD_SETLKW 38
+#define F_OWNER_TID 0
+#define F_OWNER_PID 1
+#define F_OWNER_PGRP 2
+struct f_owner_ex {
+  int type;
+  __kernel_pid_t pid;
+};
+#define FD_CLOEXEC 1
+#ifndef F_RDLCK
+#define F_RDLCK 0
+#define F_WRLCK 1
+#define F_UNLCK 2
+#endif
+#ifndef F_EXLCK
+#define F_EXLCK 4
+#define F_SHLCK 8
+#endif
+#define LOCK_SH 1
+#define LOCK_EX 2
+#define LOCK_NB 4
+#define LOCK_UN 8
+#define LOCK_MAND 32
+#define LOCK_READ 64
+#define LOCK_WRITE 128
+#define LOCK_RW 192
+#define F_LINUX_SPECIFIC_BASE 1024
+#ifndef HAVE_ARCH_STRUCT_FLOCK
+#ifndef __ARCH_FLOCK_PAD
+#define __ARCH_FLOCK_PAD
+#endif
+#endif
+#ifndef HAVE_ARCH_STRUCT_FLOCK64
+#ifndef __ARCH_FLOCK64_PAD
+#define __ARCH_FLOCK64_PAD
+#endif
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-generic/hugetlb_encode.h b/i686-linux-musl/include/asm-generic/hugetlb_encode.h
new file mode 100644
index 0000000..73d8180
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/hugetlb_encode.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 _ASM_GENERIC_HUGETLB_ENCODE_H_
+#define _ASM_GENERIC_HUGETLB_ENCODE_H_
+#define HUGETLB_FLAG_ENCODE_SHIFT 26
+#define HUGETLB_FLAG_ENCODE_MASK 0x3f
+#define HUGETLB_FLAG_ENCODE_16KB (14 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_64KB (16 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_512KB (19 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_1MB (20 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_2MB (21 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_8MB (23 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16MB (24 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_32MB (25 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_256MB (28 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_512MB (29 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_1GB (30 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_2GB (31 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16GB (34 << HUGETLB_FLAG_ENCODE_SHIFT)
+#endif
diff --git a/i686-linux-musl/include/asm-generic/int-l64.h b/i686-linux-musl/include/asm-generic/int-l64.h
new file mode 100644
index 0000000..6ddf740
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/int-l64.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_ASM_GENERIC_INT_L64_H
+#define _UAPI_ASM_GENERIC_INT_L64_H
+#include <asm/bitsperlong.h>
+#ifndef __ASSEMBLY__
+typedef __signed__ char __s8;
+typedef unsigned char __u8;
+typedef __signed__ short __s16;
+typedef unsigned short __u16;
+typedef __signed__ int __s32;
+typedef unsigned int __u32;
+typedef __signed__ long __s64;
+typedef unsigned long __u64;
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-generic/int-ll64.h b/i686-linux-musl/include/asm-generic/int-ll64.h
new file mode 100644
index 0000000..dcad2eb
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/int-ll64.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_ASM_GENERIC_INT_LL64_H
+#define _UAPI_ASM_GENERIC_INT_LL64_H
+#include <asm/bitsperlong.h>
+#ifndef __ASSEMBLY__
+typedef __signed__ char __s8;
+typedef unsigned char __u8;
+typedef __signed__ short __s16;
+typedef unsigned short __u16;
+typedef __signed__ int __s32;
+typedef unsigned int __u32;
+#ifdef __GNUC__
+__extension__ typedef __signed__ long long __s64;
+__extension__ typedef unsigned long long __u64;
+#else
+typedef __signed__ long long __s64;
+typedef unsigned long long __u64;
+#endif
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-generic/ioctl.h b/i686-linux-musl/include/asm-generic/ioctl.h
new file mode 100644
index 0000000..84c2ec8
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/ioctl.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_ASM_GENERIC_IOCTL_H
+#define _UAPI_ASM_GENERIC_IOCTL_H
+#define _IOC_NRBITS 8
+#define _IOC_TYPEBITS 8
+#ifndef _IOC_SIZEBITS
+#define _IOC_SIZEBITS 14
+#endif
+#ifndef _IOC_DIRBITS
+#define _IOC_DIRBITS 2
+#endif
+#define _IOC_NRMASK ((1 << _IOC_NRBITS) - 1)
+#define _IOC_TYPEMASK ((1 << _IOC_TYPEBITS) - 1)
+#define _IOC_SIZEMASK ((1 << _IOC_SIZEBITS) - 1)
+#define _IOC_DIRMASK ((1 << _IOC_DIRBITS) - 1)
+#define _IOC_NRSHIFT 0
+#define _IOC_TYPESHIFT (_IOC_NRSHIFT + _IOC_NRBITS)
+#define _IOC_SIZESHIFT (_IOC_TYPESHIFT + _IOC_TYPEBITS)
+#define _IOC_DIRSHIFT (_IOC_SIZESHIFT + _IOC_SIZEBITS)
+#ifndef _IOC_NONE
+#define _IOC_NONE 0U
+#endif
+#ifndef _IOC_WRITE
+#define _IOC_WRITE 1U
+#endif
+#ifndef _IOC_READ
+#define _IOC_READ 2U
+#endif
+#define _IOC(dir,type,nr,size) (((dir) << _IOC_DIRSHIFT) | ((type) << _IOC_TYPESHIFT) | ((nr) << _IOC_NRSHIFT) | ((size) << _IOC_SIZESHIFT))
+#define _IOC_TYPECHECK(t) (sizeof(t))
+#define _IO(type,nr) _IOC(_IOC_NONE, (type), (nr), 0)
+#define _IOR(type,nr,size) _IOC(_IOC_READ, (type), (nr), (_IOC_TYPECHECK(size)))
+#define _IOW(type,nr,size) _IOC(_IOC_WRITE, (type), (nr), (_IOC_TYPECHECK(size)))
+#define _IOWR(type,nr,size) _IOC(_IOC_READ | _IOC_WRITE, (type), (nr), (_IOC_TYPECHECK(size)))
+#define _IOR_BAD(type,nr,size) _IOC(_IOC_READ, (type), (nr), sizeof(size))
+#define _IOW_BAD(type,nr,size) _IOC(_IOC_WRITE, (type), (nr), sizeof(size))
+#define _IOWR_BAD(type,nr,size) _IOC(_IOC_READ | _IOC_WRITE, (type), (nr), sizeof(size))
+#define _IOC_DIR(nr) (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK)
+#define _IOC_TYPE(nr) (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK)
+#define _IOC_NR(nr) (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK)
+#define _IOC_SIZE(nr) (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK)
+#define IOC_IN (_IOC_WRITE << _IOC_DIRSHIFT)
+#define IOC_OUT (_IOC_READ << _IOC_DIRSHIFT)
+#define IOC_INOUT ((_IOC_WRITE | _IOC_READ) << _IOC_DIRSHIFT)
+#define IOCSIZE_MASK (_IOC_SIZEMASK << _IOC_SIZESHIFT)
+#define IOCSIZE_SHIFT (_IOC_SIZESHIFT)
+#endif
diff --git a/i686-linux-musl/include/asm-generic/ioctls.h b/i686-linux-musl/include/asm-generic/ioctls.h
new file mode 100644
index 0000000..f8a4357
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/ioctls.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 __ASM_GENERIC_IOCTLS_H
+#define __ASM_GENERIC_IOCTLS_H
+#include <linux/ioctl.h>
+#define TCGETS 0x5401
+#define TCSETS 0x5402
+#define TCSETSW 0x5403
+#define TCSETSF 0x5404
+#define TCGETA 0x5405
+#define TCSETA 0x5406
+#define TCSETAW 0x5407
+#define TCSETAF 0x5408
+#define TCSBRK 0x5409
+#define TCXONC 0x540A
+#define TCFLSH 0x540B
+#define TIOCEXCL 0x540C
+#define TIOCNXCL 0x540D
+#define TIOCSCTTY 0x540E
+#define TIOCGPGRP 0x540F
+#define TIOCSPGRP 0x5410
+#define TIOCOUTQ 0x5411
+#define TIOCSTI 0x5412
+#define TIOCGWINSZ 0x5413
+#define TIOCSWINSZ 0x5414
+#define TIOCMGET 0x5415
+#define TIOCMBIS 0x5416
+#define TIOCMBIC 0x5417
+#define TIOCMSET 0x5418
+#define TIOCGSOFTCAR 0x5419
+#define TIOCSSOFTCAR 0x541A
+#define FIONREAD 0x541B
+#define TIOCINQ FIONREAD
+#define TIOCLINUX 0x541C
+#define TIOCCONS 0x541D
+#define TIOCGSERIAL 0x541E
+#define TIOCSSERIAL 0x541F
+#define TIOCPKT 0x5420
+#define FIONBIO 0x5421
+#define TIOCNOTTY 0x5422
+#define TIOCSETD 0x5423
+#define TIOCGETD 0x5424
+#define TCSBRKP 0x5425
+#define TIOCSBRK 0x5427
+#define TIOCCBRK 0x5428
+#define TIOCGSID 0x5429
+#define TCGETS2 _IOR('T', 0x2A, struct termios2)
+#define TCSETS2 _IOW('T', 0x2B, struct termios2)
+#define TCSETSW2 _IOW('T', 0x2C, struct termios2)
+#define TCSETSF2 _IOW('T', 0x2D, struct termios2)
+#define TIOCGRS485 0x542E
+#ifndef TIOCSRS485
+#define TIOCSRS485 0x542F
+#endif
+#define TIOCGPTN _IOR('T', 0x30, unsigned int)
+#define TIOCSPTLCK _IOW('T', 0x31, int)
+#define TIOCGDEV _IOR('T', 0x32, unsigned int)
+#define TCGETX 0x5432
+#define TCSETX 0x5433
+#define TCSETXF 0x5434
+#define TCSETXW 0x5435
+#define TIOCSIG _IOW('T', 0x36, int)
+#define TIOCVHANGUP 0x5437
+#define TIOCGPKT _IOR('T', 0x38, int)
+#define TIOCGPTLCK _IOR('T', 0x39, int)
+#define TIOCGEXCL _IOR('T', 0x40, int)
+#define TIOCGPTPEER _IO('T', 0x41)
+#define TIOCGISO7816 _IOR('T', 0x42, struct serial_iso7816)
+#define TIOCSISO7816 _IOWR('T', 0x43, struct serial_iso7816)
+#define FIONCLEX 0x5450
+#define FIOCLEX 0x5451
+#define FIOASYNC 0x5452
+#define TIOCSERCONFIG 0x5453
+#define TIOCSERGWILD 0x5454
+#define TIOCSERSWILD 0x5455
+#define TIOCGLCKTRMIOS 0x5456
+#define TIOCSLCKTRMIOS 0x5457
+#define TIOCSERGSTRUCT 0x5458
+#define TIOCSERGETLSR 0x5459
+#define TIOCSERGETMULTI 0x545A
+#define TIOCSERSETMULTI 0x545B
+#define TIOCMIWAIT 0x545C
+#define TIOCGICOUNT 0x545D
+#ifndef FIOQSIZE
+#define FIOQSIZE 0x5460
+#endif
+#define TIOCPKT_DATA 0
+#define TIOCPKT_FLUSHREAD 1
+#define TIOCPKT_FLUSHWRITE 2
+#define TIOCPKT_STOP 4
+#define TIOCPKT_START 8
+#define TIOCPKT_NOSTOP 16
+#define TIOCPKT_DOSTOP 32
+#define TIOCPKT_IOCTL 64
+#define TIOCSER_TEMT 0x01
+#endif
diff --git a/i686-linux-musl/include/asm-generic/ipcbuf.h b/i686-linux-musl/include/asm-generic/ipcbuf.h
new file mode 100644
index 0000000..40c45ab
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/ipcbuf.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 __ASM_GENERIC_IPCBUF_H
+#define __ASM_GENERIC_IPCBUF_H
+#include <linux/posix_types.h>
+struct ipc64_perm {
+  __kernel_key_t key;
+  __kernel_uid32_t uid;
+  __kernel_gid32_t gid;
+  __kernel_uid32_t cuid;
+  __kernel_gid32_t cgid;
+  __kernel_mode_t mode;
+  unsigned char __pad1[4 - sizeof(__kernel_mode_t)];
+  unsigned short seq;
+  unsigned short __pad2;
+  __kernel_ulong_t __unused1;
+  __kernel_ulong_t __unused2;
+};
+#endif
diff --git a/i686-linux-musl/include/asm-generic/kvm_para.h b/i686-linux-musl/include/asm-generic/kvm_para.h
new file mode 100644
index 0000000..878419c
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/kvm_para.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/asm-generic/mman-common.h b/i686-linux-musl/include/asm-generic/mman-common.h
new file mode 100644
index 0000000..9440576
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/mman-common.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 __ASM_GENERIC_MMAN_COMMON_H
+#define __ASM_GENERIC_MMAN_COMMON_H
+#define PROT_READ 0x1
+#define PROT_WRITE 0x2
+#define PROT_EXEC 0x4
+#define PROT_SEM 0x8
+#define PROT_NONE 0x0
+#define PROT_GROWSDOWN 0x01000000
+#define PROT_GROWSUP 0x02000000
+#define MAP_TYPE 0x0f
+#define MAP_FIXED 0x10
+#define MAP_ANONYMOUS 0x20
+#define MAP_POPULATE 0x008000
+#define MAP_NONBLOCK 0x010000
+#define MAP_STACK 0x020000
+#define MAP_HUGETLB 0x040000
+#define MAP_SYNC 0x080000
+#define MAP_FIXED_NOREPLACE 0x100000
+#define MAP_UNINITIALIZED 0x4000000
+#define MLOCK_ONFAULT 0x01
+#define MS_ASYNC 1
+#define MS_INVALIDATE 2
+#define MS_SYNC 4
+#define MADV_NORMAL 0
+#define MADV_RANDOM 1
+#define MADV_SEQUENTIAL 2
+#define MADV_WILLNEED 3
+#define MADV_DONTNEED 4
+#define MADV_FREE 8
+#define MADV_REMOVE 9
+#define MADV_DONTFORK 10
+#define MADV_DOFORK 11
+#define MADV_HWPOISON 100
+#define MADV_SOFT_OFFLINE 101
+#define MADV_MERGEABLE 12
+#define MADV_UNMERGEABLE 13
+#define MADV_HUGEPAGE 14
+#define MADV_NOHUGEPAGE 15
+#define MADV_DONTDUMP 16
+#define MADV_DODUMP 17
+#define MADV_WIPEONFORK 18
+#define MADV_KEEPONFORK 19
+#define MADV_COLD 20
+#define MADV_PAGEOUT 21
+#define MADV_POPULATE_READ 22
+#define MADV_POPULATE_WRITE 23
+#define MAP_FILE 0
+#define PKEY_DISABLE_ACCESS 0x1
+#define PKEY_DISABLE_WRITE 0x2
+#define PKEY_ACCESS_MASK (PKEY_DISABLE_ACCESS | PKEY_DISABLE_WRITE)
+#endif
diff --git a/i686-linux-musl/include/asm-generic/mman.h b/i686-linux-musl/include/asm-generic/mman.h
new file mode 100644
index 0000000..33d43f7
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/mman.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 __ASM_GENERIC_MMAN_H
+#define __ASM_GENERIC_MMAN_H
+#include <asm-generic/mman-common.h>
+#define MAP_GROWSDOWN 0x0100
+#define MAP_DENYWRITE 0x0800
+#define MAP_EXECUTABLE 0x1000
+#define MAP_LOCKED 0x2000
+#define MAP_NORESERVE 0x4000
+#define MCL_CURRENT 1
+#define MCL_FUTURE 2
+#define MCL_ONFAULT 4
+#endif
diff --git a/i686-linux-musl/include/asm-generic/msgbuf.h b/i686-linux-musl/include/asm-generic/msgbuf.h
new file mode 100644
index 0000000..827d050
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/msgbuf.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 __ASM_GENERIC_MSGBUF_H
+#define __ASM_GENERIC_MSGBUF_H
+#include <asm/bitsperlong.h>
+#include <asm/ipcbuf.h>
+struct msqid64_ds {
+  struct ipc64_perm msg_perm;
+#if __BITS_PER_LONG == 64
+  long msg_stime;
+  long msg_rtime;
+  long msg_ctime;
+#else
+  unsigned long msg_stime;
+  unsigned long msg_stime_high;
+  unsigned long msg_rtime;
+  unsigned long msg_rtime_high;
+  unsigned long msg_ctime;
+  unsigned long msg_ctime_high;
+#endif
+  unsigned long msg_cbytes;
+  unsigned long msg_qnum;
+  unsigned long msg_qbytes;
+  __kernel_pid_t msg_lspid;
+  __kernel_pid_t msg_lrpid;
+  unsigned long __unused4;
+  unsigned long __unused5;
+};
+#endif
diff --git a/i686-linux-musl/include/asm-generic/param.h b/i686-linux-musl/include/asm-generic/param.h
new file mode 100644
index 0000000..7897799
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/param.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__ASM_GENERIC_PARAM_H
+#define _UAPI__ASM_GENERIC_PARAM_H
+#ifndef HZ
+#define HZ 100
+#endif
+#ifndef EXEC_PAGESIZE
+#define EXEC_PAGESIZE 4096
+#endif
+#ifndef NOGROUP
+#define NOGROUP (- 1)
+#endif
+#define MAXHOSTNAMELEN 64
+#endif
diff --git a/i686-linux-musl/include/asm-generic/poll.h b/i686-linux-musl/include/asm-generic/poll.h
new file mode 100644
index 0000000..372bc77
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/poll.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 __ASM_GENERIC_POLL_H
+#define __ASM_GENERIC_POLL_H
+#define POLLIN 0x0001
+#define POLLPRI 0x0002
+#define POLLOUT 0x0004
+#define POLLERR 0x0008
+#define POLLHUP 0x0010
+#define POLLNVAL 0x0020
+#define POLLRDNORM 0x0040
+#define POLLRDBAND 0x0080
+#ifndef POLLWRNORM
+#define POLLWRNORM 0x0100
+#endif
+#ifndef POLLWRBAND
+#define POLLWRBAND 0x0200
+#endif
+#ifndef POLLMSG
+#define POLLMSG 0x0400
+#endif
+#ifndef POLLREMOVE
+#define POLLREMOVE 0x1000
+#endif
+#ifndef POLLRDHUP
+#define POLLRDHUP 0x2000
+#endif
+#define POLLFREE (__force __poll_t) 0x4000
+#define POLL_BUSY_LOOP (__force __poll_t) 0x8000
+struct pollfd {
+  int fd;
+  short events;
+  short revents;
+};
+#endif
diff --git a/i686-linux-musl/include/asm-generic/posix_types.h b/i686-linux-musl/include/asm-generic/posix_types.h
new file mode 100644
index 0000000..4045127
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/posix_types.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 __ASM_GENERIC_POSIX_TYPES_H
+#define __ASM_GENERIC_POSIX_TYPES_H
+#include <asm/bitsperlong.h>
+#ifndef __kernel_long_t
+typedef long __kernel_long_t;
+typedef unsigned long __kernel_ulong_t;
+#endif
+#ifndef __kernel_ino_t
+typedef __kernel_ulong_t __kernel_ino_t;
+#endif
+#ifndef __kernel_mode_t
+typedef unsigned int __kernel_mode_t;
+#endif
+#ifndef __kernel_pid_t
+typedef int __kernel_pid_t;
+#endif
+#ifndef __kernel_ipc_pid_t
+typedef int __kernel_ipc_pid_t;
+#endif
+#ifndef __kernel_uid_t
+typedef unsigned int __kernel_uid_t;
+typedef unsigned int __kernel_gid_t;
+#endif
+#ifndef __kernel_suseconds_t
+typedef __kernel_long_t __kernel_suseconds_t;
+#endif
+#ifndef __kernel_daddr_t
+typedef int __kernel_daddr_t;
+#endif
+#ifndef __kernel_uid32_t
+typedef unsigned int __kernel_uid32_t;
+typedef unsigned int __kernel_gid32_t;
+#endif
+#ifndef __kernel_old_uid_t
+typedef __kernel_uid_t __kernel_old_uid_t;
+typedef __kernel_gid_t __kernel_old_gid_t;
+#endif
+#ifndef __kernel_old_dev_t
+typedef unsigned int __kernel_old_dev_t;
+#endif
+#ifndef __kernel_size_t
+#if __BITS_PER_LONG != 64
+typedef unsigned int __kernel_size_t;
+typedef int __kernel_ssize_t;
+typedef int __kernel_ptrdiff_t;
+#else
+typedef __kernel_ulong_t __kernel_size_t;
+typedef __kernel_long_t __kernel_ssize_t;
+typedef __kernel_long_t __kernel_ptrdiff_t;
+#endif
+#endif
+#ifndef __kernel_fsid_t
+typedef struct {
+  int val[2];
+} __kernel_fsid_t;
+#endif
+typedef __kernel_long_t __kernel_off_t;
+typedef long long __kernel_loff_t;
+typedef __kernel_long_t __kernel_old_time_t;
+typedef __kernel_long_t __kernel_time_t;
+typedef long long __kernel_time64_t;
+typedef __kernel_long_t __kernel_clock_t;
+typedef int __kernel_timer_t;
+typedef int __kernel_clockid_t;
+typedef char * __kernel_caddr_t;
+typedef unsigned short __kernel_uid16_t;
+typedef unsigned short __kernel_gid16_t;
+#endif
diff --git a/i686-linux-musl/include/asm-generic/resource.h b/i686-linux-musl/include/asm-generic/resource.h
new file mode 100644
index 0000000..843910b
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/resource.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_ASM_GENERIC_RESOURCE_H
+#define _UAPI_ASM_GENERIC_RESOURCE_H
+#define RLIMIT_CPU 0
+#define RLIMIT_FSIZE 1
+#define RLIMIT_DATA 2
+#define RLIMIT_STACK 3
+#define RLIMIT_CORE 4
+#ifndef RLIMIT_RSS
+#define RLIMIT_RSS 5
+#endif
+#ifndef RLIMIT_NPROC
+#define RLIMIT_NPROC 6
+#endif
+#ifndef RLIMIT_NOFILE
+#define RLIMIT_NOFILE 7
+#endif
+#ifndef RLIMIT_MEMLOCK
+#define RLIMIT_MEMLOCK 8
+#endif
+#ifndef RLIMIT_AS
+#define RLIMIT_AS 9
+#endif
+#define RLIMIT_LOCKS 10
+#define RLIMIT_SIGPENDING 11
+#define RLIMIT_MSGQUEUE 12
+#define RLIMIT_NICE 13
+#define RLIMIT_RTPRIO 14
+#define RLIMIT_RTTIME 15
+#define RLIM_NLIMITS 16
+#ifndef RLIM_INFINITY
+#define RLIM_INFINITY (~0UL)
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-generic/sembuf.h b/i686-linux-musl/include/asm-generic/sembuf.h
new file mode 100644
index 0000000..46306f7
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/sembuf.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 __ASM_GENERIC_SEMBUF_H
+#define __ASM_GENERIC_SEMBUF_H
+#include <asm/bitsperlong.h>
+#include <asm/ipcbuf.h>
+struct semid64_ds {
+  struct ipc64_perm sem_perm;
+#if __BITS_PER_LONG == 64
+  long sem_otime;
+  long sem_ctime;
+#else
+  unsigned long sem_otime;
+  unsigned long sem_otime_high;
+  unsigned long sem_ctime;
+  unsigned long sem_ctime_high;
+#endif
+  unsigned long sem_nsems;
+  unsigned long __unused3;
+  unsigned long __unused4;
+};
+#endif
diff --git a/i686-linux-musl/include/asm-generic/setup.h b/i686-linux-musl/include/asm-generic/setup.h
new file mode 100644
index 0000000..f44a6dd
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/setup.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 __ASM_GENERIC_SETUP_H
+#define __ASM_GENERIC_SETUP_H
+#define COMMAND_LINE_SIZE 512
+#endif
diff --git a/i686-linux-musl/include/asm-generic/shmbuf.h b/i686-linux-musl/include/asm-generic/shmbuf.h
new file mode 100644
index 0000000..067ffbc
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/shmbuf.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 __ASM_GENERIC_SHMBUF_H
+#define __ASM_GENERIC_SHMBUF_H
+#include <asm/bitsperlong.h>
+struct shmid64_ds {
+  struct ipc64_perm shm_perm;
+  size_t shm_segsz;
+#if __BITS_PER_LONG == 64
+  long shm_atime;
+  long shm_dtime;
+  long shm_ctime;
+#else
+  unsigned long shm_atime;
+  unsigned long shm_atime_high;
+  unsigned long shm_dtime;
+  unsigned long shm_dtime_high;
+  unsigned long shm_ctime;
+  unsigned long shm_ctime_high;
+#endif
+  __kernel_pid_t shm_cpid;
+  __kernel_pid_t shm_lpid;
+  unsigned long shm_nattch;
+  unsigned long __unused4;
+  unsigned long __unused5;
+};
+struct shminfo64 {
+  unsigned long shmmax;
+  unsigned long shmmin;
+  unsigned long shmmni;
+  unsigned long shmseg;
+  unsigned long shmall;
+  unsigned long __unused1;
+  unsigned long __unused2;
+  unsigned long __unused3;
+  unsigned long __unused4;
+};
+#endif
diff --git a/i686-linux-musl/include/asm-generic/siginfo.h b/i686-linux-musl/include/asm-generic/siginfo.h
new file mode 100644
index 0000000..f9199e5
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/siginfo.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_ASM_GENERIC_SIGINFO_H
+#define _UAPI_ASM_GENERIC_SIGINFO_H
+#include <linux/compiler.h>
+#include <linux/types.h>
+typedef union sigval {
+  int sival_int;
+  void __user * sival_ptr;
+} sigval_t;
+#define SI_MAX_SIZE 128
+#ifndef __ARCH_SI_BAND_T
+#define __ARCH_SI_BAND_T long
+#endif
+#ifndef __ARCH_SI_CLOCK_T
+#define __ARCH_SI_CLOCK_T __kernel_clock_t
+#endif
+#ifndef __ARCH_SI_ATTRIBUTES
+#define __ARCH_SI_ATTRIBUTES
+#endif
+union __sifields {
+  struct {
+    __kernel_pid_t _pid;
+    __kernel_uid32_t _uid;
+  } _kill;
+  struct {
+    __kernel_timer_t _tid;
+    int _overrun;
+    sigval_t _sigval;
+    int _sys_private;
+  } _timer;
+  struct {
+    __kernel_pid_t _pid;
+    __kernel_uid32_t _uid;
+    sigval_t _sigval;
+  } _rt;
+  struct {
+    __kernel_pid_t _pid;
+    __kernel_uid32_t _uid;
+    int _status;
+    __ARCH_SI_CLOCK_T _utime;
+    __ARCH_SI_CLOCK_T _stime;
+  } _sigchld;
+  struct {
+    void __user * _addr;
+#ifdef __ia64__
+    int _imm;
+    unsigned int _flags;
+    unsigned long _isr;
+#endif
+#define __ADDR_BND_PKEY_PAD (__alignof__(void *) < sizeof(short) ? sizeof(short) : __alignof__(void *))
+    union {
+      int _trapno;
+      short _addr_lsb;
+      struct {
+        char _dummy_bnd[__ADDR_BND_PKEY_PAD];
+        void __user * _lower;
+        void __user * _upper;
+      } _addr_bnd;
+      struct {
+        char _dummy_pkey[__ADDR_BND_PKEY_PAD];
+        __u32 _pkey;
+      } _addr_pkey;
+      struct {
+        unsigned long _data;
+        __u32 _type;
+      } _perf;
+    };
+  } _sigfault;
+  struct {
+    __ARCH_SI_BAND_T _band;
+    int _fd;
+  } _sigpoll;
+  struct {
+    void __user * _call_addr;
+    int _syscall;
+    unsigned int _arch;
+  } _sigsys;
+};
+#ifndef __ARCH_HAS_SWAPPED_SIGINFO
+#define __SIGINFO struct { int si_signo; int si_errno; int si_code; union __sifields _sifields; \
+}
+#else
+#define __SIGINFO struct { int si_signo; int si_code; int si_errno; union __sifields _sifields; \
+}
+#endif
+typedef struct siginfo {
+  union {
+    __SIGINFO;
+    int _si_pad[SI_MAX_SIZE / sizeof(int)];
+  };
+} __ARCH_SI_ATTRIBUTES siginfo_t;
+#define si_pid _sifields._kill._pid
+#define si_uid _sifields._kill._uid
+#define si_tid _sifields._timer._tid
+#define si_overrun _sifields._timer._overrun
+#define si_sys_private _sifields._timer._sys_private
+#define si_status _sifields._sigchld._status
+#define si_utime _sifields._sigchld._utime
+#define si_stime _sifields._sigchld._stime
+#define si_value _sifields._rt._sigval
+#define si_int _sifields._rt._sigval.sival_int
+#define si_ptr _sifields._rt._sigval.sival_ptr
+#define si_addr _sifields._sigfault._addr
+#define si_trapno _sifields._sigfault._trapno
+#define si_addr_lsb _sifields._sigfault._addr_lsb
+#define si_lower _sifields._sigfault._addr_bnd._lower
+#define si_upper _sifields._sigfault._addr_bnd._upper
+#define si_pkey _sifields._sigfault._addr_pkey._pkey
+#define si_perf_data _sifields._sigfault._perf._data
+#define si_perf_type _sifields._sigfault._perf._type
+#define si_band _sifields._sigpoll._band
+#define si_fd _sifields._sigpoll._fd
+#define si_call_addr _sifields._sigsys._call_addr
+#define si_syscall _sifields._sigsys._syscall
+#define si_arch _sifields._sigsys._arch
+#define SI_USER 0
+#define SI_KERNEL 0x80
+#define SI_QUEUE - 1
+#define SI_TIMER - 2
+#define SI_MESGQ - 3
+#define SI_ASYNCIO - 4
+#define SI_SIGIO - 5
+#define SI_TKILL - 6
+#define SI_DETHREAD - 7
+#define SI_ASYNCNL - 60
+#define SI_FROMUSER(siptr) ((siptr)->si_code <= 0)
+#define SI_FROMKERNEL(siptr) ((siptr)->si_code > 0)
+#define ILL_ILLOPC 1
+#define ILL_ILLOPN 2
+#define ILL_ILLADR 3
+#define ILL_ILLTRP 4
+#define ILL_PRVOPC 5
+#define ILL_PRVREG 6
+#define ILL_COPROC 7
+#define ILL_BADSTK 8
+#define ILL_BADIADDR 9
+#define __ILL_BREAK 10
+#define __ILL_BNDMOD 11
+#define NSIGILL 11
+#define FPE_INTDIV 1
+#define FPE_INTOVF 2
+#define FPE_FLTDIV 3
+#define FPE_FLTOVF 4
+#define FPE_FLTUND 5
+#define FPE_FLTRES 6
+#define FPE_FLTINV 7
+#define FPE_FLTSUB 8
+#define __FPE_DECOVF 9
+#define __FPE_DECDIV 10
+#define __FPE_DECERR 11
+#define __FPE_INVASC 12
+#define __FPE_INVDEC 13
+#define FPE_FLTUNK 14
+#define FPE_CONDTRAP 15
+#define NSIGFPE 15
+#define SEGV_MAPERR 1
+#define SEGV_ACCERR 2
+#define SEGV_BNDERR 3
+#ifdef __ia64__
+#define __SEGV_PSTKOVF 4
+#else
+#define SEGV_PKUERR 4
+#endif
+#define SEGV_ACCADI 5
+#define SEGV_ADIDERR 6
+#define SEGV_ADIPERR 7
+#define SEGV_MTEAERR 8
+#define SEGV_MTESERR 9
+#define NSIGSEGV 9
+#define BUS_ADRALN 1
+#define BUS_ADRERR 2
+#define BUS_OBJERR 3
+#define BUS_MCEERR_AR 4
+#define BUS_MCEERR_AO 5
+#define NSIGBUS 5
+#define TRAP_BRKPT 1
+#define TRAP_TRACE 2
+#define TRAP_BRANCH 3
+#define TRAP_HWBKPT 4
+#define TRAP_UNK 5
+#define TRAP_PERF 6
+#define NSIGTRAP 6
+#define CLD_EXITED 1
+#define CLD_KILLED 2
+#define CLD_DUMPED 3
+#define CLD_TRAPPED 4
+#define CLD_STOPPED 5
+#define CLD_CONTINUED 6
+#define NSIGCHLD 6
+#define POLL_IN 1
+#define POLL_OUT 2
+#define POLL_MSG 3
+#define POLL_ERR 4
+#define POLL_PRI 5
+#define POLL_HUP 6
+#define NSIGPOLL 6
+#define SYS_SECCOMP 1
+#define SYS_USER_DISPATCH 2
+#define NSIGSYS 2
+#define EMT_TAGOVF 1
+#define NSIGEMT 1
+#define SIGEV_SIGNAL 0
+#define SIGEV_NONE 1
+#define SIGEV_THREAD 2
+#define SIGEV_THREAD_ID 4
+#ifndef __ARCH_SIGEV_PREAMBLE_SIZE
+#define __ARCH_SIGEV_PREAMBLE_SIZE (sizeof(int) * 2 + sizeof(sigval_t))
+#endif
+#define SIGEV_MAX_SIZE 64
+#define SIGEV_PAD_SIZE ((SIGEV_MAX_SIZE - __ARCH_SIGEV_PREAMBLE_SIZE) / sizeof(int))
+typedef struct sigevent {
+  sigval_t sigev_value;
+  int sigev_signo;
+  int sigev_notify;
+  union {
+    int _pad[SIGEV_PAD_SIZE];
+    int _tid;
+    struct {
+      void(* _function) (sigval_t);
+      void * _attribute;
+    } _sigev_thread;
+  } _sigev_un;
+} sigevent_t;
+#define sigev_notify_function _sigev_un._sigev_thread._function
+#define sigev_notify_attributes _sigev_un._sigev_thread._attribute
+#define sigev_notify_thread_id _sigev_un._tid
+#endif
diff --git a/i686-linux-musl/include/asm-generic/signal-defs.h b/i686-linux-musl/include/asm-generic/signal-defs.h
new file mode 100644
index 0000000..c7e9504
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/signal-defs.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 __ASM_GENERIC_SIGNAL_DEFS_H
+#define __ASM_GENERIC_SIGNAL_DEFS_H
+#include <linux/compiler.h>
+#ifndef SA_NOCLDSTOP
+#define SA_NOCLDSTOP 0x00000001
+#endif
+#ifndef SA_NOCLDWAIT
+#define SA_NOCLDWAIT 0x00000002
+#endif
+#ifndef SA_SIGINFO
+#define SA_SIGINFO 0x00000004
+#endif
+#define SA_UNSUPPORTED 0x00000400
+#define SA_EXPOSE_TAGBITS 0x00000800
+#ifndef SA_ONSTACK
+#define SA_ONSTACK 0x08000000
+#endif
+#ifndef SA_RESTART
+#define SA_RESTART 0x10000000
+#endif
+#ifndef SA_NODEFER
+#define SA_NODEFER 0x40000000
+#endif
+#ifndef SA_RESETHAND
+#define SA_RESETHAND 0x80000000
+#endif
+#define SA_NOMASK SA_NODEFER
+#define SA_ONESHOT SA_RESETHAND
+#ifndef SIG_BLOCK
+#define SIG_BLOCK 0
+#endif
+#ifndef SIG_UNBLOCK
+#define SIG_UNBLOCK 1
+#endif
+#ifndef SIG_SETMASK
+#define SIG_SETMASK 2
+#endif
+#ifndef __ASSEMBLY__
+typedef void __signalfn_t(int);
+typedef __signalfn_t __user * __sighandler_t;
+typedef void __restorefn_t(void);
+typedef __restorefn_t __user * __sigrestore_t;
+#define SIG_DFL ((__force __sighandler_t) 0)
+#define SIG_IGN ((__force __sighandler_t) 1)
+#define SIG_ERR ((__force __sighandler_t) - 1)
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-generic/signal.h b/i686-linux-musl/include/asm-generic/signal.h
new file mode 100644
index 0000000..874fece
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/signal.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__ASM_GENERIC_SIGNAL_H
+#define _UAPI__ASM_GENERIC_SIGNAL_H
+#include <linux/types.h>
+#define _KERNEL__NSIG 64
+#define _NSIG_BPW __BITS_PER_LONG
+#define _NSIG_WORDS (_KERNEL__NSIG / _NSIG_BPW)
+#define SIGHUP 1
+#define SIGINT 2
+#define SIGQUIT 3
+#define SIGILL 4
+#define SIGTRAP 5
+#define SIGABRT 6
+#define SIGIOT 6
+#define SIGBUS 7
+#define SIGFPE 8
+#define SIGKILL 9
+#define SIGUSR1 10
+#define SIGSEGV 11
+#define SIGUSR2 12
+#define SIGPIPE 13
+#define SIGALRM 14
+#define SIGTERM 15
+#define SIGSTKFLT 16
+#define SIGCHLD 17
+#define SIGCONT 18
+#define SIGSTOP 19
+#define SIGTSTP 20
+#define SIGTTIN 21
+#define SIGTTOU 22
+#define SIGURG 23
+#define SIGXCPU 24
+#define SIGXFSZ 25
+#define SIGVTALRM 26
+#define SIGPROF 27
+#define SIGWINCH 28
+#define SIGIO 29
+#define SIGPOLL SIGIO
+#define SIGPWR 30
+#define SIGSYS 31
+#define SIGUNUSED 31
+#define __SIGRTMIN 32
+#ifndef __SIGRTMAX
+#define __SIGRTMAX _KERNEL__NSIG
+#endif
+#if !defined(MINSIGSTKSZ) || !defined(SIGSTKSZ)
+#define MINSIGSTKSZ 2048
+#define SIGSTKSZ 8192
+#endif
+#ifndef __ASSEMBLY__
+typedef struct {
+  unsigned long sig[_NSIG_WORDS];
+} sigset_t;
+typedef unsigned long old_sigset_t;
+#include <asm-generic/signal-defs.h>
+#ifdef SA_RESTORER
+#define __ARCH_HAS_SA_RESTORER
+#endif
+struct sigaction {
+  __sighandler_t sa_handler;
+  unsigned long sa_flags;
+#ifdef SA_RESTORER
+  __sigrestore_t sa_restorer;
+#endif
+  sigset_t sa_mask;
+};
+typedef struct sigaltstack {
+  void __user * ss_sp;
+  int ss_flags;
+  size_t ss_size;
+} stack_t;
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-generic/socket.h b/i686-linux-musl/include/asm-generic/socket.h
new file mode 100644
index 0000000..6767993
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/socket.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 __ASM_GENERIC_SOCKET_H
+#define __ASM_GENERIC_SOCKET_H
+#include <linux/posix_types.h>
+#include <asm/sockios.h>
+#define SOL_SOCKET 1
+#define SO_DEBUG 1
+#define SO_REUSEADDR 2
+#define SO_TYPE 3
+#define SO_ERROR 4
+#define SO_DONTROUTE 5
+#define SO_BROADCAST 6
+#define SO_SNDBUF 7
+#define SO_RCVBUF 8
+#define SO_SNDBUFFORCE 32
+#define SO_RCVBUFFORCE 33
+#define SO_KEEPALIVE 9
+#define SO_OOBINLINE 10
+#define SO_NO_CHECK 11
+#define SO_PRIORITY 12
+#define SO_LINGER 13
+#define SO_BSDCOMPAT 14
+#define SO_REUSEPORT 15
+#ifndef SO_PASSCRED
+#define SO_PASSCRED 16
+#define SO_PEERCRED 17
+#define SO_RCVLOWAT 18
+#define SO_SNDLOWAT 19
+#define SO_RCVTIMEO_OLD 20
+#define SO_SNDTIMEO_OLD 21
+#endif
+#define SO_SECURITY_AUTHENTICATION 22
+#define SO_SECURITY_ENCRYPTION_TRANSPORT 23
+#define SO_SECURITY_ENCRYPTION_NETWORK 24
+#define SO_BINDTODEVICE 25
+#define SO_ATTACH_FILTER 26
+#define SO_DETACH_FILTER 27
+#define SO_GET_FILTER SO_ATTACH_FILTER
+#define SO_PEERNAME 28
+#define SO_ACCEPTCONN 30
+#define SO_PEERSEC 31
+#define SO_PASSSEC 34
+#define SO_MARK 36
+#define SO_PROTOCOL 38
+#define SO_DOMAIN 39
+#define SO_RXQ_OVFL 40
+#define SO_WIFI_STATUS 41
+#define SCM_WIFI_STATUS SO_WIFI_STATUS
+#define SO_PEEK_OFF 42
+#define SO_NOFCS 43
+#define SO_LOCK_FILTER 44
+#define SO_SELECT_ERR_QUEUE 45
+#define SO_BUSY_POLL 46
+#define SO_MAX_PACING_RATE 47
+#define SO_BPF_EXTENSIONS 48
+#define SO_INCOMING_CPU 49
+#define SO_ATTACH_BPF 50
+#define SO_DETACH_BPF SO_DETACH_FILTER
+#define SO_ATTACH_REUSEPORT_CBPF 51
+#define SO_ATTACH_REUSEPORT_EBPF 52
+#define SO_CNX_ADVICE 53
+#define SCM_TIMESTAMPING_OPT_STATS 54
+#define SO_MEMINFO 55
+#define SO_INCOMING_NAPI_ID 56
+#define SO_COOKIE 57
+#define SCM_TIMESTAMPING_PKTINFO 58
+#define SO_PEERGROUPS 59
+#define SO_ZEROCOPY 60
+#define SO_TXTIME 61
+#define SCM_TXTIME SO_TXTIME
+#define SO_BINDTOIFINDEX 62
+#define SO_TIMESTAMP_OLD 29
+#define SO_TIMESTAMPNS_OLD 35
+#define SO_TIMESTAMPING_OLD 37
+#define SO_TIMESTAMP_NEW 63
+#define SO_TIMESTAMPNS_NEW 64
+#define SO_TIMESTAMPING_NEW 65
+#define SO_RCVTIMEO_NEW 66
+#define SO_SNDTIMEO_NEW 67
+#define SO_DETACH_REUSEPORT_BPF 68
+#define SO_PREFER_BUSY_POLL 69
+#define SO_BUSY_POLL_BUDGET 70
+#define SO_NETNS_COOKIE 71
+#define SO_BUF_LOCK 72
+#define SO_RESERVE_MEM 73
+#if __BITS_PER_LONG == 64 || defined(__x86_64__) && defined(__ILP32__)
+#define SO_TIMESTAMP SO_TIMESTAMP_OLD
+#define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
+#define SO_TIMESTAMPING SO_TIMESTAMPING_OLD
+#define SO_RCVTIMEO SO_RCVTIMEO_OLD
+#define SO_SNDTIMEO SO_SNDTIMEO_OLD
+#else
+#define SO_TIMESTAMP (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW)
+#define SO_TIMESTAMPNS (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW)
+#define SO_TIMESTAMPING (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW)
+#define SO_RCVTIMEO (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_RCVTIMEO_OLD : SO_RCVTIMEO_NEW)
+#define SO_SNDTIMEO (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_SNDTIMEO_OLD : SO_SNDTIMEO_NEW)
+#endif
+#define SCM_TIMESTAMP SO_TIMESTAMP
+#define SCM_TIMESTAMPNS SO_TIMESTAMPNS
+#define SCM_TIMESTAMPING SO_TIMESTAMPING
+#endif
diff --git a/i686-linux-musl/include/asm-generic/sockios.h b/i686-linux-musl/include/asm-generic/sockios.h
new file mode 100644
index 0000000..afbc6ad
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/sockios.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 __ASM_GENERIC_SOCKIOS_H
+#define __ASM_GENERIC_SOCKIOS_H
+#define FIOSETOWN 0x8901
+#define SIOCSPGRP 0x8902
+#define FIOGETOWN 0x8903
+#define SIOCGPGRP 0x8904
+#define SIOCATMARK 0x8905
+#define SIOCGSTAMP_OLD 0x8906
+#define SIOCGSTAMPNS_OLD 0x8907
+#endif
diff --git a/i686-linux-musl/include/asm-generic/stat.h b/i686-linux-musl/include/asm-generic/stat.h
new file mode 100644
index 0000000..9cc00f2
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/stat.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 __ASM_GENERIC_STAT_H
+#define __ASM_GENERIC_STAT_H
+#include <asm/bitsperlong.h>
+#define STAT_HAVE_NSEC 1
+struct stat {
+  unsigned long st_dev;
+  unsigned long st_ino;
+  unsigned int st_mode;
+  unsigned int st_nlink;
+  unsigned int st_uid;
+  unsigned int st_gid;
+  unsigned long st_rdev;
+  unsigned long __pad1;
+  long st_size;
+  int st_blksize;
+  int __pad2;
+  long st_blocks;
+  long st_atime;
+  unsigned long st_atime_nsec;
+  long st_mtime;
+  unsigned long st_mtime_nsec;
+  long st_ctime;
+  unsigned long st_ctime_nsec;
+  unsigned int __unused4;
+  unsigned int __unused5;
+};
+#if __BITS_PER_LONG != 64 || defined(__ARCH_WANT_STAT64)
+struct stat64 {
+  unsigned long long st_dev;
+  unsigned long long st_ino;
+  unsigned int st_mode;
+  unsigned int st_nlink;
+  unsigned int st_uid;
+  unsigned int st_gid;
+  unsigned long long st_rdev;
+  unsigned long long __pad1;
+  long long st_size;
+  int st_blksize;
+  int __pad2;
+  long long st_blocks;
+  int st_atime;
+  unsigned int st_atime_nsec;
+  int st_mtime;
+  unsigned int st_mtime_nsec;
+  int st_ctime;
+  unsigned int st_ctime_nsec;
+  unsigned int __unused4;
+  unsigned int __unused5;
+};
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-generic/statfs.h b/i686-linux-musl/include/asm-generic/statfs.h
new file mode 100644
index 0000000..7184ce9
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/statfs.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_GENERIC_STATFS_H
+#define _UAPI_GENERIC_STATFS_H
+#include <linux/types.h>
+#ifndef __statfs_word
+#if __BITS_PER_LONG == 64
+#define __statfs_word __kernel_long_t
+#else
+#define __statfs_word __u32
+#endif
+#endif
+struct statfs {
+  __statfs_word f_type;
+  __statfs_word f_bsize;
+  __statfs_word f_blocks;
+  __statfs_word f_bfree;
+  __statfs_word f_bavail;
+  __statfs_word f_files;
+  __statfs_word f_ffree;
+  __kernel_fsid_t f_fsid;
+  __statfs_word f_namelen;
+  __statfs_word f_frsize;
+  __statfs_word f_flags;
+  __statfs_word f_spare[4];
+};
+#ifndef ARCH_PACK_STATFS64
+#define ARCH_PACK_STATFS64
+#endif
+struct statfs64 {
+  __statfs_word f_type;
+  __statfs_word f_bsize;
+  __u64 f_blocks;
+  __u64 f_bfree;
+  __u64 f_bavail;
+  __u64 f_files;
+  __u64 f_ffree;
+  __kernel_fsid_t f_fsid;
+  __statfs_word f_namelen;
+  __statfs_word f_frsize;
+  __statfs_word f_flags;
+  __statfs_word f_spare[4];
+} ARCH_PACK_STATFS64;
+#ifndef ARCH_PACK_COMPAT_STATFS64
+#define ARCH_PACK_COMPAT_STATFS64
+#endif
+struct compat_statfs64 {
+  __u32 f_type;
+  __u32 f_bsize;
+  __u64 f_blocks;
+  __u64 f_bfree;
+  __u64 f_bavail;
+  __u64 f_files;
+  __u64 f_ffree;
+  __kernel_fsid_t f_fsid;
+  __u32 f_namelen;
+  __u32 f_frsize;
+  __u32 f_flags;
+  __u32 f_spare[4];
+} ARCH_PACK_COMPAT_STATFS64;
+#endif
diff --git a/i686-linux-musl/include/asm-generic/swab.h b/i686-linux-musl/include/asm-generic/swab.h
new file mode 100644
index 0000000..b6119db
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/swab.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 _ASM_GENERIC_SWAB_H
+#define _ASM_GENERIC_SWAB_H
+#include <asm/bitsperlong.h>
+#if __BITS_PER_LONG == 32
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define __SWAB_64_THRU_32__
+#endif
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-generic/termbits.h b/i686-linux-musl/include/asm-generic/termbits.h
new file mode 100644
index 0000000..b592964
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/termbits.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 __ASM_GENERIC_TERMBITS_H
+#define __ASM_GENERIC_TERMBITS_H
+#include <linux/posix_types.h>
+typedef unsigned char cc_t;
+typedef unsigned int speed_t;
+typedef unsigned int tcflag_t;
+#define NCCS 19
+struct termios {
+  tcflag_t c_iflag;
+  tcflag_t c_oflag;
+  tcflag_t c_cflag;
+  tcflag_t c_lflag;
+  cc_t c_line;
+  cc_t c_cc[NCCS];
+};
+struct termios2 {
+  tcflag_t c_iflag;
+  tcflag_t c_oflag;
+  tcflag_t c_cflag;
+  tcflag_t c_lflag;
+  cc_t c_line;
+  cc_t c_cc[NCCS];
+  speed_t c_ispeed;
+  speed_t c_ospeed;
+};
+struct ktermios {
+  tcflag_t c_iflag;
+  tcflag_t c_oflag;
+  tcflag_t c_cflag;
+  tcflag_t c_lflag;
+  cc_t c_line;
+  cc_t c_cc[NCCS];
+  speed_t c_ispeed;
+  speed_t c_ospeed;
+};
+#define VINTR 0
+#define VQUIT 1
+#define VERASE 2
+#define VKILL 3
+#define VEOF 4
+#define VTIME 5
+#define VMIN 6
+#define VSWTC 7
+#define VSTART 8
+#define VSTOP 9
+#define VSUSP 10
+#define VEOL 11
+#define VREPRINT 12
+#define VDISCARD 13
+#define VWERASE 14
+#define VLNEXT 15
+#define VEOL2 16
+#define IGNBRK 0000001
+#define BRKINT 0000002
+#define IGNPAR 0000004
+#define PARMRK 0000010
+#define INPCK 0000020
+#define ISTRIP 0000040
+#define INLCR 0000100
+#define IGNCR 0000200
+#define ICRNL 0000400
+#define IUCLC 0001000
+#define IXON 0002000
+#define IXANY 0004000
+#define IXOFF 0010000
+#define IMAXBEL 0020000
+#define IUTF8 0040000
+#define OPOST 0000001
+#define OLCUC 0000002
+#define ONLCR 0000004
+#define OCRNL 0000010
+#define ONOCR 0000020
+#define ONLRET 0000040
+#define OFILL 0000100
+#define OFDEL 0000200
+#define NLDLY 0000400
+#define NL0 0000000
+#define NL1 0000400
+#define CRDLY 0003000
+#define CR0 0000000
+#define CR1 0001000
+#define CR2 0002000
+#define CR3 0003000
+#define TABDLY 0014000
+#define TAB0 0000000
+#define TAB1 0004000
+#define TAB2 0010000
+#define TAB3 0014000
+#define XTABS 0014000
+#define BSDLY 0020000
+#define BS0 0000000
+#define BS1 0020000
+#define VTDLY 0040000
+#define VT0 0000000
+#define VT1 0040000
+#define FFDLY 0100000
+#define FF0 0000000
+#define FF1 0100000
+#define CBAUD 0010017
+#define B0 0000000
+#define B50 0000001
+#define B75 0000002
+#define B110 0000003
+#define B134 0000004
+#define B150 0000005
+#define B200 0000006
+#define B300 0000007
+#define B600 0000010
+#define B1200 0000011
+#define B1800 0000012
+#define B2400 0000013
+#define B4800 0000014
+#define B9600 0000015
+#define B19200 0000016
+#define B38400 0000017
+#define EXTA B19200
+#define EXTB B38400
+#define CSIZE 0000060
+#define CS5 0000000
+#define CS6 0000020
+#define CS7 0000040
+#define CS8 0000060
+#define CSTOPB 0000100
+#define CREAD 0000200
+#define PARENB 0000400
+#define PARODD 0001000
+#define HUPCL 0002000
+#define CLOCAL 0004000
+#define CBAUDEX 0010000
+#define BOTHER 0010000
+#define B57600 0010001
+#define B115200 0010002
+#define B230400 0010003
+#define B460800 0010004
+#define B500000 0010005
+#define B576000 0010006
+#define B921600 0010007
+#define B1000000 0010010
+#define B1152000 0010011
+#define B1500000 0010012
+#define B2000000 0010013
+#define B2500000 0010014
+#define B3000000 0010015
+#define B3500000 0010016
+#define B4000000 0010017
+#define CIBAUD 002003600000
+#define CMSPAR 010000000000
+#define CRTSCTS 020000000000
+#define IBSHIFT 16
+#define ISIG 0000001
+#define ICANON 0000002
+#define XCASE 0000004
+#define ECHO 0000010
+#define ECHOE 0000020
+#define ECHOK 0000040
+#define ECHONL 0000100
+#define NOFLSH 0000200
+#define TOSTOP 0000400
+#define ECHOCTL 0001000
+#define ECHOPRT 0002000
+#define ECHOKE 0004000
+#define FLUSHO 0010000
+#define PENDIN 0040000
+#define IEXTEN 0100000
+#define EXTPROC 0200000
+#define TCOOFF 0
+#define TCOON 1
+#define TCIOFF 2
+#define TCION 3
+#define TCIFLUSH 0
+#define TCOFLUSH 1
+#define TCIOFLUSH 2
+#define TCSANOW 0
+#define TCSADRAIN 1
+#define TCSAFLUSH 2
+#endif
diff --git a/i686-linux-musl/include/asm-generic/termios.h b/i686-linux-musl/include/asm-generic/termios.h
new file mode 100644
index 0000000..77b260b
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/termios.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_ASM_GENERIC_TERMIOS_H
+#define _UAPI_ASM_GENERIC_TERMIOS_H
+#include <asm/termbits.h>
+#include <asm/ioctls.h>
+struct winsize {
+  unsigned short ws_row;
+  unsigned short ws_col;
+  unsigned short ws_xpixel;
+  unsigned short ws_ypixel;
+};
+#define NCC 8
+struct termio {
+  unsigned short c_iflag;
+  unsigned short c_oflag;
+  unsigned short c_cflag;
+  unsigned short c_lflag;
+  unsigned char c_line;
+  unsigned char c_cc[NCC];
+};
+#define TIOCM_LE 0x001
+#define TIOCM_DTR 0x002
+#define TIOCM_RTS 0x004
+#define TIOCM_ST 0x008
+#define TIOCM_SR 0x010
+#define TIOCM_CTS 0x020
+#define TIOCM_CAR 0x040
+#define TIOCM_RNG 0x080
+#define TIOCM_DSR 0x100
+#define TIOCM_CD TIOCM_CAR
+#define TIOCM_RI TIOCM_RNG
+#define TIOCM_OUT1 0x2000
+#define TIOCM_OUT2 0x4000
+#define TIOCM_LOOP 0x8000
+#endif
diff --git a/i686-linux-musl/include/asm-generic/types.h b/i686-linux-musl/include/asm-generic/types.h
new file mode 100644
index 0000000..ea6e7df
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/types.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 _ASM_GENERIC_TYPES_H
+#define _ASM_GENERIC_TYPES_H
+#include <asm-generic/int-ll64.h>
+#endif
diff --git a/i686-linux-musl/include/asm-generic/ucontext.h b/i686-linux-musl/include/asm-generic/ucontext.h
new file mode 100644
index 0000000..17d8f70
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/ucontext.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 __ASM_GENERIC_UCONTEXT_H
+#define __ASM_GENERIC_UCONTEXT_H
+struct ucontext {
+  unsigned long uc_flags;
+  struct ucontext * uc_link;
+  stack_t uc_stack;
+  struct sigcontext uc_mcontext;
+  sigset_t uc_sigmask;
+};
+#endif
diff --git a/i686-linux-musl/include/asm-generic/unistd.h b/i686-linux-musl/include/asm-generic/unistd.h
new file mode 100644
index 0000000..1e14ee5
--- /dev/null
+++ b/i686-linux-musl/include/asm-generic/unistd.h
@@ -0,0 +1,453 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/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/bitsperlong.h>
+#ifndef __SYSCALL
+#define __SYSCALL(x,y)
+#endif
+#if __BITS_PER_LONG == 32 || defined(__SYSCALL_COMPAT)
+#define __SC_3264(_nr,_32,_64) __SYSCALL(_nr, _32)
+#else
+#define __SC_3264(_nr,_32,_64) __SYSCALL(_nr, _64)
+#endif
+#ifdef __SYSCALL_COMPAT
+#define __SC_COMP(_nr,_sys,_comp) __SYSCALL(_nr, _comp)
+#define __SC_COMP_3264(_nr,_32,_64,_comp) __SYSCALL(_nr, _comp)
+#else
+#define __SC_COMP(_nr,_sys,_comp) __SYSCALL(_nr, _sys)
+#define __SC_COMP_3264(_nr,_32,_64,_comp) __SC_3264(_nr, _32, _64)
+#endif
+#define __NR_io_setup 0
+#define __NR_io_destroy 1
+#define __NR_io_submit 2
+#define __NR_io_cancel 3
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_io_getevents 4
+#endif
+#define __NR_setxattr 5
+#define __NR_lsetxattr 6
+#define __NR_fsetxattr 7
+#define __NR_getxattr 8
+#define __NR_lgetxattr 9
+#define __NR_fgetxattr 10
+#define __NR_listxattr 11
+#define __NR_llistxattr 12
+#define __NR_flistxattr 13
+#define __NR_removexattr 14
+#define __NR_lremovexattr 15
+#define __NR_fremovexattr 16
+#define __NR_getcwd 17
+#define __NR_lookup_dcookie 18
+#define __NR_eventfd2 19
+#define __NR_epoll_create1 20
+#define __NR_epoll_ctl 21
+#define __NR_epoll_pwait 22
+#define __NR_dup 23
+#define __NR_dup3 24
+#define __NR3264_fcntl 25
+#define __NR_inotify_init1 26
+#define __NR_inotify_add_watch 27
+#define __NR_inotify_rm_watch 28
+#define __NR_ioctl 29
+#define __NR_ioprio_set 30
+#define __NR_ioprio_get 31
+#define __NR_flock 32
+#define __NR_mknodat 33
+#define __NR_mkdirat 34
+#define __NR_unlinkat 35
+#define __NR_symlinkat 36
+#define __NR_linkat 37
+#ifdef __ARCH_WANT_RENAMEAT
+#define __NR_renameat 38
+#endif
+#define __NR_umount2 39
+#define __NR_mount 40
+#define __NR_pivot_root 41
+#define __NR_nfsservctl 42
+#define __NR3264_statfs 43
+#define __NR3264_fstatfs 44
+#define __NR3264_truncate 45
+#define __NR3264_ftruncate 46
+#define __NR_fallocate 47
+#define __NR_faccessat 48
+#define __NR_chdir 49
+#define __NR_fchdir 50
+#define __NR_chroot 51
+#define __NR_fchmod 52
+#define __NR_fchmodat 53
+#define __NR_fchownat 54
+#define __NR_fchown 55
+#define __NR_openat 56
+#define __NR_close 57
+#define __NR_vhangup 58
+#define __NR_pipe2 59
+#define __NR_quotactl 60
+#define __NR_getdents64 61
+#define __NR3264_lseek 62
+#define __NR_read 63
+#define __NR_write 64
+#define __NR_readv 65
+#define __NR_writev 66
+#define __NR_pread64 67
+#define __NR_pwrite64 68
+#define __NR_preadv 69
+#define __NR_pwritev 70
+#define __NR3264_sendfile 71
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_pselect6 72
+#define __NR_ppoll 73
+#endif
+#define __NR_signalfd4 74
+#define __NR_vmsplice 75
+#define __NR_splice 76
+#define __NR_tee 77
+#define __NR_readlinkat 78
+#if defined(__ARCH_WANT_NEW_STAT) || defined(__ARCH_WANT_STAT64)
+#define __NR3264_fstatat 79
+#define __NR3264_fstat 80
+#endif
+#define __NR_sync 81
+#define __NR_fsync 82
+#define __NR_fdatasync 83
+#ifdef __ARCH_WANT_SYNC_FILE_RANGE2
+#define __NR_sync_file_range2 84
+#else
+#define __NR_sync_file_range 84
+#endif
+#define __NR_timerfd_create 85
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_timerfd_settime 86
+#define __NR_timerfd_gettime 87
+#endif
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_utimensat 88
+#endif
+#define __NR_acct 89
+#define __NR_capget 90
+#define __NR_capset 91
+#define __NR_personality 92
+#define __NR_exit 93
+#define __NR_exit_group 94
+#define __NR_waitid 95
+#define __NR_set_tid_address 96
+#define __NR_unshare 97
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_futex 98
+#endif
+#define __NR_set_robust_list 99
+#define __NR_get_robust_list 100
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_nanosleep 101
+#endif
+#define __NR_getitimer 102
+#define __NR_setitimer 103
+#define __NR_kexec_load 104
+#define __NR_init_module 105
+#define __NR_delete_module 106
+#define __NR_timer_create 107
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_timer_gettime 108
+#endif
+#define __NR_timer_getoverrun 109
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_timer_settime 110
+#endif
+#define __NR_timer_delete 111
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_clock_settime 112
+#define __NR_clock_gettime 113
+#define __NR_clock_getres 114
+#define __NR_clock_nanosleep 115
+#endif
+#define __NR_syslog 116
+#define __NR_ptrace 117
+#define __NR_sched_setparam 118
+#define __NR_sched_setscheduler 119
+#define __NR_sched_getscheduler 120
+#define __NR_sched_getparam 121
+#define __NR_sched_setaffinity 122
+#define __NR_sched_getaffinity 123
+#define __NR_sched_yield 124
+#define __NR_sched_get_priority_max 125
+#define __NR_sched_get_priority_min 126
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_sched_rr_get_interval 127
+#endif
+#define __NR_restart_syscall 128
+#define __NR_kill 129
+#define __NR_tkill 130
+#define __NR_tgkill 131
+#define __NR_sigaltstack 132
+#define __NR_rt_sigsuspend 133
+#define __NR_rt_sigaction 134
+#define __NR_rt_sigprocmask 135
+#define __NR_rt_sigpending 136
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_rt_sigtimedwait 137
+#endif
+#define __NR_rt_sigqueueinfo 138
+#define __NR_rt_sigreturn 139
+#define __NR_setpriority 140
+#define __NR_getpriority 141
+#define __NR_reboot 142
+#define __NR_setregid 143
+#define __NR_setgid 144
+#define __NR_setreuid 145
+#define __NR_setuid 146
+#define __NR_setresuid 147
+#define __NR_getresuid 148
+#define __NR_setresgid 149
+#define __NR_getresgid 150
+#define __NR_setfsuid 151
+#define __NR_setfsgid 152
+#define __NR_times 153
+#define __NR_setpgid 154
+#define __NR_getpgid 155
+#define __NR_getsid 156
+#define __NR_setsid 157
+#define __NR_getgroups 158
+#define __NR_setgroups 159
+#define __NR_uname 160
+#define __NR_sethostname 161
+#define __NR_setdomainname 162
+#ifdef __ARCH_WANT_SET_GET_RLIMIT
+#define __NR_getrlimit 163
+#define __NR_setrlimit 164
+#endif
+#define __NR_getrusage 165
+#define __NR_umask 166
+#define __NR_prctl 167
+#define __NR_getcpu 168
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_gettimeofday 169
+#define __NR_settimeofday 170
+#define __NR_adjtimex 171
+#endif
+#define __NR_getpid 172
+#define __NR_getppid 173
+#define __NR_getuid 174
+#define __NR_geteuid 175
+#define __NR_getgid 176
+#define __NR_getegid 177
+#define __NR_gettid 178
+#define __NR_sysinfo 179
+#define __NR_mq_open 180
+#define __NR_mq_unlink 181
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_mq_timedsend 182
+#define __NR_mq_timedreceive 183
+#endif
+#define __NR_mq_notify 184
+#define __NR_mq_getsetattr 185
+#define __NR_msgget 186
+#define __NR_msgctl 187
+#define __NR_msgrcv 188
+#define __NR_msgsnd 189
+#define __NR_semget 190
+#define __NR_semctl 191
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_semtimedop 192
+#endif
+#define __NR_semop 193
+#define __NR_shmget 194
+#define __NR_shmctl 195
+#define __NR_shmat 196
+#define __NR_shmdt 197
+#define __NR_socket 198
+#define __NR_socketpair 199
+#define __NR_bind 200
+#define __NR_listen 201
+#define __NR_accept 202
+#define __NR_connect 203
+#define __NR_getsockname 204
+#define __NR_getpeername 205
+#define __NR_sendto 206
+#define __NR_recvfrom 207
+#define __NR_setsockopt 208
+#define __NR_getsockopt 209
+#define __NR_shutdown 210
+#define __NR_sendmsg 211
+#define __NR_recvmsg 212
+#define __NR_readahead 213
+#define __NR_brk 214
+#define __NR_munmap 215
+#define __NR_mremap 216
+#define __NR_add_key 217
+#define __NR_request_key 218
+#define __NR_keyctl 219
+#define __NR_clone 220
+#define __NR_execve 221
+#define __NR3264_mmap 222
+#define __NR3264_fadvise64 223
+#ifndef __ARCH_NOMMU
+#define __NR_swapon 224
+#define __NR_swapoff 225
+#define __NR_mprotect 226
+#define __NR_msync 227
+#define __NR_mlock 228
+#define __NR_munlock 229
+#define __NR_mlockall 230
+#define __NR_munlockall 231
+#define __NR_mincore 232
+#define __NR_madvise 233
+#define __NR_remap_file_pages 234
+#define __NR_mbind 235
+#define __NR_get_mempolicy 236
+#define __NR_set_mempolicy 237
+#define __NR_migrate_pages 238
+#define __NR_move_pages 239
+#endif
+#define __NR_rt_tgsigqueueinfo 240
+#define __NR_perf_event_open 241
+#define __NR_accept4 242
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_recvmmsg 243
+#endif
+#define __NR_arch_specific_syscall 244
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_wait4 260
+#endif
+#define __NR_prlimit64 261
+#define __NR_fanotify_init 262
+#define __NR_fanotify_mark 263
+#define __NR_name_to_handle_at 264
+#define __NR_open_by_handle_at 265
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_clock_adjtime 266
+#endif
+#define __NR_syncfs 267
+#define __NR_setns 268
+#define __NR_sendmmsg 269
+#define __NR_process_vm_readv 270
+#define __NR_process_vm_writev 271
+#define __NR_kcmp 272
+#define __NR_finit_module 273
+#define __NR_sched_setattr 274
+#define __NR_sched_getattr 275
+#define __NR_renameat2 276
+#define __NR_seccomp 277
+#define __NR_getrandom 278
+#define __NR_memfd_create 279
+#define __NR_bpf 280
+#define __NR_execveat 281
+#define __NR_userfaultfd 282
+#define __NR_membarrier 283
+#define __NR_mlock2 284
+#define __NR_copy_file_range 285
+#define __NR_preadv2 286
+#define __NR_pwritev2 287
+#define __NR_pkey_mprotect 288
+#define __NR_pkey_alloc 289
+#define __NR_pkey_free 290
+#define __NR_statx 291
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_io_pgetevents 292
+#endif
+#define __NR_rseq 293
+#define __NR_kexec_file_load 294
+#if __BITS_PER_LONG == 32
+#define __NR_clock_gettime64 403
+#define __NR_clock_settime64 404
+#define __NR_clock_adjtime64 405
+#define __NR_clock_getres_time64 406
+#define __NR_clock_nanosleep_time64 407
+#define __NR_timer_gettime64 408
+#define __NR_timer_settime64 409
+#define __NR_timerfd_gettime64 410
+#define __NR_timerfd_settime64 411
+#define __NR_utimensat_time64 412
+#define __NR_pselect6_time64 413
+#define __NR_ppoll_time64 414
+#define __NR_io_pgetevents_time64 416
+#define __NR_recvmmsg_time64 417
+#define __NR_mq_timedsend_time64 418
+#define __NR_mq_timedreceive_time64 419
+#define __NR_semtimedop_time64 420
+#define __NR_rt_sigtimedwait_time64 421
+#define __NR_futex_time64 422
+#define __NR_sched_rr_get_interval_time64 423
+#endif
+#define __NR_pidfd_send_signal 424
+#define __NR_io_uring_setup 425
+#define __NR_io_uring_enter 426
+#define __NR_io_uring_register 427
+#define __NR_open_tree 428
+#define __NR_move_mount 429
+#define __NR_fsopen 430
+#define __NR_fsconfig 431
+#define __NR_fsmount 432
+#define __NR_fspick 433
+#define __NR_pidfd_open 434
+#ifdef __ARCH_WANT_SYS_CLONE3
+#define __NR_clone3 435
+#endif
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
+#define __NR_process_madvise 440
+#define __NR_epoll_pwait2 441
+#define __NR_mount_setattr 442
+#define __NR_quotactl_fd 443
+#define __NR_landlock_create_ruleset 444
+#define __NR_landlock_add_rule 445
+#define __NR_landlock_restrict_self 446
+#ifdef __ARCH_WANT_MEMFD_SECRET
+#define __NR_memfd_secret 447
+#endif
+#define __NR_process_mrelease 448
+#define __NR_futex_waitv 449
+#undef __NR_syscalls
+#define __NR_syscalls 450
+#if __BITS_PER_LONG == 64 && !defined(__SYSCALL_COMPAT)
+#define __NR_fcntl __NR3264_fcntl
+#define __NR_statfs __NR3264_statfs
+#define __NR_fstatfs __NR3264_fstatfs
+#define __NR_truncate __NR3264_truncate
+#define __NR_ftruncate __NR3264_ftruncate
+#define __NR_lseek __NR3264_lseek
+#define __NR_sendfile __NR3264_sendfile
+#if defined(__ARCH_WANT_NEW_STAT) || defined(__ARCH_WANT_STAT64)
+#define __NR_newfstatat __NR3264_fstatat
+#define __NR_fstat __NR3264_fstat
+#endif
+#define __NR_mmap __NR3264_mmap
+#define __NR_fadvise64 __NR3264_fadvise64
+#ifdef __NR3264_stat
+#define __NR_stat __NR3264_stat
+#define __NR_lstat __NR3264_lstat
+#endif
+#else
+#define __NR_fcntl64 __NR3264_fcntl
+#define __NR_statfs64 __NR3264_statfs
+#define __NR_fstatfs64 __NR3264_fstatfs
+#define __NR_truncate64 __NR3264_truncate
+#define __NR_ftruncate64 __NR3264_ftruncate
+#define __NR_llseek __NR3264_lseek
+#define __NR_sendfile64 __NR3264_sendfile
+#if defined(__ARCH_WANT_NEW_STAT) || defined(__ARCH_WANT_STAT64)
+#define __NR_fstatat64 __NR3264_fstatat
+#define __NR_fstat64 __NR3264_fstat
+#endif
+#define __NR_mmap2 __NR3264_mmap
+#define __NR_fadvise64_64 __NR3264_fadvise64
+#ifdef __NR3264_stat
+#define __NR_stat64 __NR3264_stat
+#define __NR_lstat64 __NR3264_lstat
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/a.out.h b/i686-linux-musl/include/asm-x86/asm/a.out.h
new file mode 100644
index 0000000..3a1b845
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/a.out.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 _ASM_X86_A_OUT_H
+#define _ASM_X86_A_OUT_H
+struct exec {
+  unsigned int a_info;
+  unsigned a_text;
+  unsigned a_data;
+  unsigned a_bss;
+  unsigned a_syms;
+  unsigned a_entry;
+  unsigned a_trsize;
+  unsigned a_drsize;
+};
+#define N_TRSIZE(a) ((a).a_trsize)
+#define N_DRSIZE(a) ((a).a_drsize)
+#define N_SYMSIZE(a) ((a).a_syms)
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/auxvec.h b/i686-linux-musl/include/asm-x86/asm/auxvec.h
new file mode 100644
index 0000000..dd86783
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/auxvec.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 _ASM_X86_AUXVEC_H
+#define _ASM_X86_AUXVEC_H
+#ifdef __i386__
+#define AT_SYSINFO 32
+#endif
+#define AT_SYSINFO_EHDR 33
+#define AT_VECTOR_SIZE_ARCH 3
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/bitsperlong.h b/i686-linux-musl/include/asm-x86/asm/bitsperlong.h
new file mode 100644
index 0000000..7eca377
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/bitsperlong.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 __ASM_X86_BITSPERLONG_H
+#define __ASM_X86_BITSPERLONG_H
+#if defined(__x86_64__) && !defined(__ILP32__)
+#define __BITS_PER_LONG 64
+#else
+#define __BITS_PER_LONG 32
+#endif
+#include <asm-generic/bitsperlong.h>
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/boot.h b/i686-linux-musl/include/asm-x86/asm/boot.h
new file mode 100644
index 0000000..7cbb691
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/boot.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_ASM_X86_BOOT_H
+#define _UAPI_ASM_X86_BOOT_H
+#define NORMAL_VGA 0xffff
+#define EXTENDED_VGA 0xfffe
+#define ASK_VGA 0xfffd
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/bootparam.h b/i686-linux-musl/include/asm-x86/asm/bootparam.h
new file mode 100644
index 0000000..7401135
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/bootparam.h
@@ -0,0 +1,195 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_X86_BOOTPARAM_H
+#define _ASM_X86_BOOTPARAM_H
+#define SETUP_NONE 0
+#define SETUP_E820_EXT 1
+#define SETUP_DTB 2
+#define SETUP_PCI 3
+#define SETUP_EFI 4
+#define SETUP_APPLE_PROPERTIES 5
+#define SETUP_JAILHOUSE 6
+#define SETUP_INDIRECT (1 << 31)
+#define SETUP_TYPE_MAX (SETUP_INDIRECT | SETUP_JAILHOUSE)
+#define RAMDISK_IMAGE_START_MASK 0x07FF
+#define RAMDISK_PROMPT_FLAG 0x8000
+#define RAMDISK_LOAD_FLAG 0x4000
+#define LOADED_HIGH (1 << 0)
+#define KASLR_FLAG (1 << 1)
+#define QUIET_FLAG (1 << 5)
+#define KEEP_SEGMENTS (1 << 6)
+#define CAN_USE_HEAP (1 << 7)
+#define XLF_KERNEL_64 (1 << 0)
+#define XLF_CAN_BE_LOADED_ABOVE_4G (1 << 1)
+#define XLF_EFI_HANDOVER_32 (1 << 2)
+#define XLF_EFI_HANDOVER_64 (1 << 3)
+#define XLF_EFI_KEXEC (1 << 4)
+#define XLF_5LEVEL (1 << 5)
+#define XLF_5LEVEL_ENABLED (1 << 6)
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#include <linux/screen_info.h>
+#include <linux/apm_bios.h>
+#include <linux/edd.h>
+#include <asm/ist.h>
+#include <video/edid.h>
+struct setup_data {
+  __u64 next;
+  __u32 type;
+  __u32 len;
+  __u8 data[0];
+};
+struct setup_indirect {
+  __u32 type;
+  __u32 reserved;
+  __u64 len;
+  __u64 addr;
+};
+struct setup_header {
+  __u8 setup_sects;
+  __u16 root_flags;
+  __u32 syssize;
+  __u16 ram_size;
+  __u16 vid_mode;
+  __u16 root_dev;
+  __u16 boot_flag;
+  __u16 jump;
+  __u32 header;
+  __u16 version;
+  __u32 realmode_swtch;
+  __u16 start_sys_seg;
+  __u16 kernel_version;
+  __u8 type_of_loader;
+  __u8 loadflags;
+  __u16 setup_move_size;
+  __u32 code32_start;
+  __u32 ramdisk_image;
+  __u32 ramdisk_size;
+  __u32 bootsect_kludge;
+  __u16 heap_end_ptr;
+  __u8 ext_loader_ver;
+  __u8 ext_loader_type;
+  __u32 cmd_line_ptr;
+  __u32 initrd_addr_max;
+  __u32 kernel_alignment;
+  __u8 relocatable_kernel;
+  __u8 min_alignment;
+  __u16 xloadflags;
+  __u32 cmdline_size;
+  __u32 hardware_subarch;
+  __u64 hardware_subarch_data;
+  __u32 payload_offset;
+  __u32 payload_length;
+  __u64 setup_data;
+  __u64 pref_address;
+  __u32 init_size;
+  __u32 handover_offset;
+  __u32 kernel_info_offset;
+} __attribute__((packed));
+struct sys_desc_table {
+  __u16 length;
+  __u8 table[14];
+};
+struct olpc_ofw_header {
+  __u32 ofw_magic;
+  __u32 ofw_version;
+  __u32 cif_handler;
+  __u32 irq_desc_table;
+} __attribute__((packed));
+struct efi_info {
+  __u32 efi_loader_signature;
+  __u32 efi_systab;
+  __u32 efi_memdesc_size;
+  __u32 efi_memdesc_version;
+  __u32 efi_memmap;
+  __u32 efi_memmap_size;
+  __u32 efi_systab_hi;
+  __u32 efi_memmap_hi;
+};
+#define E820_MAX_ENTRIES_ZEROPAGE 128
+struct boot_e820_entry {
+  __u64 addr;
+  __u64 size;
+  __u32 type;
+} __attribute__((packed));
+#define JAILHOUSE_SETUP_REQUIRED_VERSION 1
+struct jailhouse_setup_data {
+  struct {
+    __u16 version;
+    __u16 compatible_version;
+  } __attribute__((packed)) hdr;
+  struct {
+    __u16 pm_timer_address;
+    __u16 num_cpus;
+    __u64 pci_mmconfig_base;
+    __u32 tsc_khz;
+    __u32 apic_khz;
+    __u8 standard_ioapic;
+    __u8 cpu_ids[255];
+  } __attribute__((packed)) v1;
+  struct {
+    __u32 flags;
+  } __attribute__((packed)) v2;
+} __attribute__((packed));
+struct boot_params {
+  struct screen_info screen_info;
+  struct apm_bios_info apm_bios_info;
+  __u8 _pad2[4];
+  __u64 tboot_addr;
+  struct ist_info ist_info;
+  __u64 acpi_rsdp_addr;
+  __u8 _pad3[8];
+  __u8 hd0_info[16];
+  __u8 hd1_info[16];
+  struct sys_desc_table sys_desc_table;
+  struct olpc_ofw_header olpc_ofw_header;
+  __u32 ext_ramdisk_image;
+  __u32 ext_ramdisk_size;
+  __u32 ext_cmd_line_ptr;
+  __u8 _pad4[116];
+  struct edid_info edid_info;
+  struct efi_info efi_info;
+  __u32 alt_mem_k;
+  __u32 scratch;
+  __u8 e820_entries;
+  __u8 eddbuf_entries;
+  __u8 edd_mbr_sig_buf_entries;
+  __u8 kbd_status;
+  __u8 secure_boot;
+  __u8 _pad5[2];
+  __u8 sentinel;
+  __u8 _pad6[1];
+  struct setup_header hdr;
+  __u8 _pad7[0x290 - 0x1f1 - sizeof(struct setup_header)];
+  __u32 edd_mbr_sig_buffer[EDD_MBR_SIG_MAX];
+  struct boot_e820_entry e820_table[E820_MAX_ENTRIES_ZEROPAGE];
+  __u8 _pad8[48];
+  struct edd_info eddbuf[EDDMAXNR];
+  __u8 _pad9[276];
+} __attribute__((packed));
+enum x86_hardware_subarch {
+  X86_SUBARCH_PC = 0,
+  X86_SUBARCH_LGUEST,
+  X86_SUBARCH_XEN,
+  X86_SUBARCH_INTEL_MID,
+  X86_SUBARCH_CE4100,
+  X86_NR_SUBARCHS,
+};
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/bpf_perf_event.h b/i686-linux-musl/include/asm-x86/asm/bpf_perf_event.h
new file mode 100644
index 0000000..fa7bc48
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/bpf_perf_event.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-generic/bpf_perf_event.h>
diff --git a/i686-linux-musl/include/asm-x86/asm/byteorder.h b/i686-linux-musl/include/asm-x86/asm/byteorder.h
new file mode 100644
index 0000000..db3ddff
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/byteorder.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 _ASM_X86_BYTEORDER_H
+#define _ASM_X86_BYTEORDER_H
+#include <linux/byteorder/little_endian.h>
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/debugreg.h b/i686-linux-musl/include/asm-x86/asm/debugreg.h
new file mode 100644
index 0000000..360f432
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/debugreg.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_ASM_X86_DEBUGREG_H
+#define _UAPI_ASM_X86_DEBUGREG_H
+#define DR_FIRSTADDR 0
+#define DR_LASTADDR 3
+#define DR_STATUS 6
+#define DR_CONTROL 7
+#define DR6_RESERVED (0xFFFF0FF0)
+#define DR_TRAP0 (0x1)
+#define DR_TRAP1 (0x2)
+#define DR_TRAP2 (0x4)
+#define DR_TRAP3 (0x8)
+#define DR_TRAP_BITS (DR_TRAP0 | DR_TRAP1 | DR_TRAP2 | DR_TRAP3)
+#define DR_BUS_LOCK (0x800)
+#define DR_STEP (0x4000)
+#define DR_SWITCH (0x8000)
+#define DR_CONTROL_SHIFT 16
+#define DR_CONTROL_SIZE 4
+#define DR_RW_EXECUTE (0x0)
+#define DR_RW_WRITE (0x1)
+#define DR_RW_READ (0x3)
+#define DR_LEN_1 (0x0)
+#define DR_LEN_2 (0x4)
+#define DR_LEN_4 (0xC)
+#define DR_LEN_8 (0x8)
+#define DR_LOCAL_ENABLE_SHIFT 0
+#define DR_GLOBAL_ENABLE_SHIFT 1
+#define DR_LOCAL_ENABLE (0x1)
+#define DR_GLOBAL_ENABLE (0x2)
+#define DR_ENABLE_SIZE 2
+#define DR_LOCAL_ENABLE_MASK (0x55)
+#define DR_GLOBAL_ENABLE_MASK (0xAA)
+#ifdef __i386__
+#define DR_CONTROL_RESERVED (0xFC00)
+#else
+#define DR_CONTROL_RESERVED (0xFFFFFFFF0000FC00UL)
+#endif
+#define DR_LOCAL_SLOWDOWN (0x100)
+#define DR_GLOBAL_SLOWDOWN (0x200)
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/e820.h b/i686-linux-musl/include/asm-x86/asm/e820.h
new file mode 100644
index 0000000..8f00c5c
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/e820.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_ASM_X86_E820_H
+#define _UAPI_ASM_X86_E820_H
+#define E820MAP 0x2d0
+#define E820MAX 128
+#define E820_X_MAX E820MAX
+#define E820NR 0x1e8
+#define E820_RAM 1
+#define E820_RESERVED 2
+#define E820_ACPI 3
+#define E820_NVS 4
+#define E820_UNUSABLE 5
+#define E820_PMEM 7
+#define E820_PRAM 12
+#define E820_RESERVED_KERN 128
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+struct e820entry {
+  __u64 addr;
+  __u64 size;
+  __u32 type;
+} __attribute__((packed));
+struct e820map {
+  __u32 nr_map;
+  struct e820entry map[E820_X_MAX];
+};
+#define ISA_START_ADDRESS 0xa0000
+#define ISA_END_ADDRESS 0x100000
+#define BIOS_BEGIN 0x000a0000
+#define BIOS_END 0x00100000
+#define BIOS_ROM_BASE 0xffe00000
+#define BIOS_ROM_END 0xffffffff
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/errno.h b/i686-linux-musl/include/asm-x86/asm/errno.h
new file mode 100644
index 0000000..392cd94
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/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-generic/errno.h>
diff --git a/i686-linux-musl/include/asm-x86/asm/fcntl.h b/i686-linux-musl/include/asm-x86/asm/fcntl.h
new file mode 100644
index 0000000..518d3a7
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/fcntl.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-generic/fcntl.h>
diff --git a/i686-linux-musl/include/asm-x86/asm/hw_breakpoint.h b/i686-linux-musl/include/asm-x86/asm/hw_breakpoint.h
new file mode 100644
index 0000000..878419c
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/hw_breakpoint.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/asm-x86/asm/hwcap2.h b/i686-linux-musl/include/asm-x86/asm/hwcap2.h
new file mode 100644
index 0000000..9f715c9
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/hwcap2.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 _ASM_X86_HWCAP2_H
+#define _ASM_X86_HWCAP2_H
+#include <linux/const.h>
+#define HWCAP2_RING3MWAIT _BITUL(0)
+#define HWCAP2_FSGSBASE _BITUL(1)
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/ioctl.h b/i686-linux-musl/include/asm-x86/asm/ioctl.h
new file mode 100644
index 0000000..7b7bd37
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/ioctl.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-generic/ioctl.h>
diff --git a/i686-linux-musl/include/asm-x86/asm/ioctls.h b/i686-linux-musl/include/asm-x86/asm/ioctls.h
new file mode 100644
index 0000000..0c66935
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/ioctls.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-generic/ioctls.h>
diff --git a/i686-linux-musl/include/asm-x86/asm/ipcbuf.h b/i686-linux-musl/include/asm-x86/asm/ipcbuf.h
new file mode 100644
index 0000000..0021f14
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/ipcbuf.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-generic/ipcbuf.h>
diff --git a/i686-linux-musl/include/asm-x86/asm/ist.h b/i686-linux-musl/include/asm-x86/asm/ist.h
new file mode 100644
index 0000000..9648952
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/ist.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_ASM_X86_IST_H
+#define _UAPI_ASM_X86_IST_H
+#include <linux/types.h>
+struct ist_info {
+  __u32 signature;
+  __u32 command;
+  __u32 event;
+  __u32 perf_level;
+};
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/kvm.h b/i686-linux-musl/include/asm-x86/asm/kvm.h
new file mode 100644
index 0000000..fd0f5f8
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/kvm.h
@@ -0,0 +1,410 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_X86_KVM_H
+#define _ASM_X86_KVM_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define KVM_PIO_PAGE_OFFSET 1
+#define KVM_COALESCED_MMIO_PAGE_OFFSET 2
+#define KVM_DIRTY_LOG_PAGE_OFFSET 64
+#define DE_VECTOR 0
+#define DB_VECTOR 1
+#define BP_VECTOR 3
+#define OF_VECTOR 4
+#define BR_VECTOR 5
+#define UD_VECTOR 6
+#define NM_VECTOR 7
+#define DF_VECTOR 8
+#define TS_VECTOR 10
+#define NP_VECTOR 11
+#define SS_VECTOR 12
+#define GP_VECTOR 13
+#define PF_VECTOR 14
+#define MF_VECTOR 16
+#define AC_VECTOR 17
+#define MC_VECTOR 18
+#define XM_VECTOR 19
+#define VE_VECTOR 20
+#define __KVM_HAVE_PIT
+#define __KVM_HAVE_IOAPIC
+#define __KVM_HAVE_IRQ_LINE
+#define __KVM_HAVE_MSI
+#define __KVM_HAVE_USER_NMI
+#define __KVM_HAVE_GUEST_DEBUG
+#define __KVM_HAVE_MSIX
+#define __KVM_HAVE_MCE
+#define __KVM_HAVE_PIT_STATE2
+#define __KVM_HAVE_XEN_HVM
+#define __KVM_HAVE_VCPU_EVENTS
+#define __KVM_HAVE_DEBUGREGS
+#define __KVM_HAVE_XSAVE
+#define __KVM_HAVE_XCRS
+#define __KVM_HAVE_READONLY_MEM
+#define KVM_NR_INTERRUPTS 256
+struct kvm_memory_alias {
+  __u32 slot;
+  __u32 flags;
+  __u64 guest_phys_addr;
+  __u64 memory_size;
+  __u64 target_phys_addr;
+};
+struct kvm_pic_state {
+  __u8 last_irr;
+  __u8 irr;
+  __u8 imr;
+  __u8 isr;
+  __u8 priority_add;
+  __u8 irq_base;
+  __u8 read_reg_select;
+  __u8 poll;
+  __u8 special_mask;
+  __u8 init_state;
+  __u8 auto_eoi;
+  __u8 rotate_on_auto_eoi;
+  __u8 special_fully_nested_mode;
+  __u8 init4;
+  __u8 elcr;
+  __u8 elcr_mask;
+};
+#define KVM_IOAPIC_NUM_PINS 24
+struct kvm_ioapic_state {
+  __u64 base_address;
+  __u32 ioregsel;
+  __u32 id;
+  __u32 irr;
+  __u32 pad;
+  union {
+    __u64 bits;
+    struct {
+      __u8 vector;
+      __u8 delivery_mode : 3;
+      __u8 dest_mode : 1;
+      __u8 delivery_status : 1;
+      __u8 polarity : 1;
+      __u8 remote_irr : 1;
+      __u8 trig_mode : 1;
+      __u8 mask : 1;
+      __u8 reserve : 7;
+      __u8 reserved[4];
+      __u8 dest_id;
+    } fields;
+  } redirtbl[KVM_IOAPIC_NUM_PINS];
+};
+#define KVM_IRQCHIP_PIC_MASTER 0
+#define KVM_IRQCHIP_PIC_SLAVE 1
+#define KVM_IRQCHIP_IOAPIC 2
+#define KVM_NR_IRQCHIPS 3
+#define KVM_RUN_X86_SMM (1 << 0)
+#define KVM_RUN_X86_BUS_LOCK (1 << 1)
+struct kvm_regs {
+  __u64 rax, rbx, rcx, rdx;
+  __u64 rsi, rdi, rsp, rbp;
+  __u64 r8, r9, r10, r11;
+  __u64 r12, r13, r14, r15;
+  __u64 rip, rflags;
+};
+#define KVM_APIC_REG_SIZE 0x400
+struct kvm_lapic_state {
+  char regs[KVM_APIC_REG_SIZE];
+};
+struct kvm_segment {
+  __u64 base;
+  __u32 limit;
+  __u16 selector;
+  __u8 type;
+  __u8 present, dpl, db, s, l, g, avl;
+  __u8 unusable;
+  __u8 padding;
+};
+struct kvm_dtable {
+  __u64 base;
+  __u16 limit;
+  __u16 padding[3];
+};
+struct kvm_sregs {
+  struct kvm_segment cs, ds, es, fs, gs, ss;
+  struct kvm_segment tr, ldt;
+  struct kvm_dtable gdt, idt;
+  __u64 cr0, cr2, cr3, cr4, cr8;
+  __u64 efer;
+  __u64 apic_base;
+  __u64 interrupt_bitmap[(KVM_NR_INTERRUPTS + 63) / 64];
+};
+struct kvm_sregs2 {
+  struct kvm_segment cs, ds, es, fs, gs, ss;
+  struct kvm_segment tr, ldt;
+  struct kvm_dtable gdt, idt;
+  __u64 cr0, cr2, cr3, cr4, cr8;
+  __u64 efer;
+  __u64 apic_base;
+  __u64 flags;
+  __u64 pdptrs[4];
+};
+#define KVM_SREGS2_FLAGS_PDPTRS_VALID 1
+struct kvm_fpu {
+  __u8 fpr[8][16];
+  __u16 fcw;
+  __u16 fsw;
+  __u8 ftwx;
+  __u8 pad1;
+  __u16 last_opcode;
+  __u64 last_ip;
+  __u64 last_dp;
+  __u8 xmm[16][16];
+  __u32 mxcsr;
+  __u32 pad2;
+};
+struct kvm_msr_entry {
+  __u32 index;
+  __u32 reserved;
+  __u64 data;
+};
+struct kvm_msrs {
+  __u32 nmsrs;
+  __u32 pad;
+  struct kvm_msr_entry entries[0];
+};
+struct kvm_msr_list {
+  __u32 nmsrs;
+  __u32 indices[0];
+};
+#define KVM_MSR_FILTER_MAX_BITMAP_SIZE 0x600
+struct kvm_msr_filter_range {
+#define KVM_MSR_FILTER_READ (1 << 0)
+#define KVM_MSR_FILTER_WRITE (1 << 1)
+  __u32 flags;
+  __u32 nmsrs;
+  __u32 base;
+  __u8 * bitmap;
+};
+#define KVM_MSR_FILTER_MAX_RANGES 16
+struct kvm_msr_filter {
+#define KVM_MSR_FILTER_DEFAULT_ALLOW (0 << 0)
+#define KVM_MSR_FILTER_DEFAULT_DENY (1 << 0)
+  __u32 flags;
+  struct kvm_msr_filter_range ranges[KVM_MSR_FILTER_MAX_RANGES];
+};
+struct kvm_cpuid_entry {
+  __u32 function;
+  __u32 eax;
+  __u32 ebx;
+  __u32 ecx;
+  __u32 edx;
+  __u32 padding;
+};
+struct kvm_cpuid {
+  __u32 nent;
+  __u32 padding;
+  struct kvm_cpuid_entry entries[0];
+};
+struct kvm_cpuid_entry2 {
+  __u32 function;
+  __u32 index;
+  __u32 flags;
+  __u32 eax;
+  __u32 ebx;
+  __u32 ecx;
+  __u32 edx;
+  __u32 padding[3];
+};
+#define KVM_CPUID_FLAG_SIGNIFCANT_INDEX (1 << 0)
+#define KVM_CPUID_FLAG_STATEFUL_FUNC (1 << 1)
+#define KVM_CPUID_FLAG_STATE_READ_NEXT (1 << 2)
+struct kvm_cpuid2 {
+  __u32 nent;
+  __u32 padding;
+  struct kvm_cpuid_entry2 entries[0];
+};
+struct kvm_pit_channel_state {
+  __u32 count;
+  __u16 latched_count;
+  __u8 count_latched;
+  __u8 status_latched;
+  __u8 status;
+  __u8 read_state;
+  __u8 write_state;
+  __u8 write_latch;
+  __u8 rw_mode;
+  __u8 mode;
+  __u8 bcd;
+  __u8 gate;
+  __s64 count_load_time;
+};
+struct kvm_debug_exit_arch {
+  __u32 exception;
+  __u32 pad;
+  __u64 pc;
+  __u64 dr6;
+  __u64 dr7;
+};
+#define KVM_GUESTDBG_USE_SW_BP 0x00010000
+#define KVM_GUESTDBG_USE_HW_BP 0x00020000
+#define KVM_GUESTDBG_INJECT_DB 0x00040000
+#define KVM_GUESTDBG_INJECT_BP 0x00080000
+#define KVM_GUESTDBG_BLOCKIRQ 0x00100000
+struct kvm_guest_debug_arch {
+  __u64 debugreg[8];
+};
+struct kvm_pit_state {
+  struct kvm_pit_channel_state channels[3];
+};
+#define KVM_PIT_FLAGS_HPET_LEGACY 0x00000001
+struct kvm_pit_state2 {
+  struct kvm_pit_channel_state channels[3];
+  __u32 flags;
+  __u32 reserved[9];
+};
+struct kvm_reinject_control {
+  __u8 pit_reinject;
+  __u8 reserved[31];
+};
+#define KVM_VCPUEVENT_VALID_NMI_PENDING 0x00000001
+#define KVM_VCPUEVENT_VALID_SIPI_VECTOR 0x00000002
+#define KVM_VCPUEVENT_VALID_SHADOW 0x00000004
+#define KVM_VCPUEVENT_VALID_SMM 0x00000008
+#define KVM_VCPUEVENT_VALID_PAYLOAD 0x00000010
+#define KVM_X86_SHADOW_INT_MOV_SS 0x01
+#define KVM_X86_SHADOW_INT_STI 0x02
+struct kvm_vcpu_events {
+  struct {
+    __u8 injected;
+    __u8 nr;
+    __u8 has_error_code;
+    __u8 pending;
+    __u32 error_code;
+  } exception;
+  struct {
+    __u8 injected;
+    __u8 nr;
+    __u8 soft;
+    __u8 shadow;
+  } interrupt;
+  struct {
+    __u8 injected;
+    __u8 pending;
+    __u8 masked;
+    __u8 pad;
+  } nmi;
+  __u32 sipi_vector;
+  __u32 flags;
+  struct {
+    __u8 smm;
+    __u8 pending;
+    __u8 smm_inside_nmi;
+    __u8 latched_init;
+  } smi;
+  __u8 reserved[27];
+  __u8 exception_has_payload;
+  __u64 exception_payload;
+};
+struct kvm_debugregs {
+  __u64 db[4];
+  __u64 dr6;
+  __u64 dr7;
+  __u64 flags;
+  __u64 reserved[9];
+};
+struct kvm_xsave {
+  __u32 region[1024];
+};
+#define KVM_MAX_XCRS 16
+struct kvm_xcr {
+  __u32 xcr;
+  __u32 reserved;
+  __u64 value;
+};
+struct kvm_xcrs {
+  __u32 nr_xcrs;
+  __u32 flags;
+  struct kvm_xcr xcrs[KVM_MAX_XCRS];
+  __u64 padding[16];
+};
+#define KVM_SYNC_X86_REGS (1UL << 0)
+#define KVM_SYNC_X86_SREGS (1UL << 1)
+#define KVM_SYNC_X86_EVENTS (1UL << 2)
+#define KVM_SYNC_X86_VALID_FIELDS (KVM_SYNC_X86_REGS | KVM_SYNC_X86_SREGS | KVM_SYNC_X86_EVENTS)
+struct kvm_sync_regs {
+  struct kvm_regs regs;
+  struct kvm_sregs sregs;
+  struct kvm_vcpu_events events;
+};
+#define KVM_X86_QUIRK_LINT0_REENABLED (1 << 0)
+#define KVM_X86_QUIRK_CD_NW_CLEARED (1 << 1)
+#define KVM_X86_QUIRK_LAPIC_MMIO_HOLE (1 << 2)
+#define KVM_X86_QUIRK_OUT_7E_INC_RIP (1 << 3)
+#define KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT (1 << 4)
+#define KVM_STATE_NESTED_FORMAT_VMX 0
+#define KVM_STATE_NESTED_FORMAT_SVM 1
+#define KVM_STATE_NESTED_GUEST_MODE 0x00000001
+#define KVM_STATE_NESTED_RUN_PENDING 0x00000002
+#define KVM_STATE_NESTED_EVMCS 0x00000004
+#define KVM_STATE_NESTED_MTF_PENDING 0x00000008
+#define KVM_STATE_NESTED_GIF_SET 0x00000100
+#define KVM_STATE_NESTED_SMM_GUEST_MODE 0x00000001
+#define KVM_STATE_NESTED_SMM_VMXON 0x00000002
+#define KVM_STATE_NESTED_VMX_VMCS_SIZE 0x1000
+#define KVM_STATE_NESTED_SVM_VMCB_SIZE 0x1000
+#define KVM_STATE_VMX_PREEMPTION_TIMER_DEADLINE 0x00000001
+struct kvm_vmx_nested_state_data {
+  __u8 vmcs12[KVM_STATE_NESTED_VMX_VMCS_SIZE];
+  __u8 shadow_vmcs12[KVM_STATE_NESTED_VMX_VMCS_SIZE];
+};
+struct kvm_vmx_nested_state_hdr {
+  __u64 vmxon_pa;
+  __u64 vmcs12_pa;
+  struct {
+    __u16 flags;
+  } smm;
+  __u16 pad;
+  __u32 flags;
+  __u64 preemption_timer_deadline;
+};
+struct kvm_svm_nested_state_data {
+  __u8 vmcb12[KVM_STATE_NESTED_SVM_VMCB_SIZE];
+};
+struct kvm_svm_nested_state_hdr {
+  __u64 vmcb_pa;
+};
+struct kvm_nested_state {
+  __u16 flags;
+  __u16 format;
+  __u32 size;
+  union {
+    struct kvm_vmx_nested_state_hdr vmx;
+    struct kvm_svm_nested_state_hdr svm;
+    __u8 pad[120];
+  } hdr;
+  union {
+    struct kvm_vmx_nested_state_data vmx[0];
+    struct kvm_svm_nested_state_data svm[0];
+  } data;
+};
+struct kvm_pmu_event_filter {
+  __u32 action;
+  __u32 nevents;
+  __u32 fixed_counter_bitmap;
+  __u32 flags;
+  __u32 pad[4];
+  __u64 events[0];
+};
+#define KVM_PMU_EVENT_ALLOW 0
+#define KVM_PMU_EVENT_DENY 1
+#define KVM_VCPU_TSC_CTRL 0
+#define KVM_VCPU_TSC_OFFSET 0
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/kvm_para.h b/i686-linux-musl/include/asm-x86/asm/kvm_para.h
new file mode 100644
index 0000000..dd72af0
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/kvm_para.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_ASM_X86_KVM_PARA_H
+#define _UAPI_ASM_X86_KVM_PARA_H
+#include <linux/types.h>
+#define KVM_CPUID_SIGNATURE 0x40000000
+#define KVM_SIGNATURE "KVMKVMKVM\0\0\0"
+#define KVM_CPUID_FEATURES 0x40000001
+#define KVM_FEATURE_CLOCKSOURCE 0
+#define KVM_FEATURE_NOP_IO_DELAY 1
+#define KVM_FEATURE_MMU_OP 2
+#define KVM_FEATURE_CLOCKSOURCE2 3
+#define KVM_FEATURE_ASYNC_PF 4
+#define KVM_FEATURE_STEAL_TIME 5
+#define KVM_FEATURE_PV_EOI 6
+#define KVM_FEATURE_PV_UNHALT 7
+#define KVM_FEATURE_PV_TLB_FLUSH 9
+#define KVM_FEATURE_ASYNC_PF_VMEXIT 10
+#define KVM_FEATURE_PV_SEND_IPI 11
+#define KVM_FEATURE_POLL_CONTROL 12
+#define KVM_FEATURE_PV_SCHED_YIELD 13
+#define KVM_FEATURE_ASYNC_PF_INT 14
+#define KVM_FEATURE_MSI_EXT_DEST_ID 15
+#define KVM_FEATURE_HC_MAP_GPA_RANGE 16
+#define KVM_FEATURE_MIGRATION_CONTROL 17
+#define KVM_HINTS_REALTIME 0
+#define KVM_FEATURE_CLOCKSOURCE_STABLE_BIT 24
+#define MSR_KVM_WALL_CLOCK 0x11
+#define MSR_KVM_SYSTEM_TIME 0x12
+#define KVM_MSR_ENABLED 1
+#define MSR_KVM_WALL_CLOCK_NEW 0x4b564d00
+#define MSR_KVM_SYSTEM_TIME_NEW 0x4b564d01
+#define MSR_KVM_ASYNC_PF_EN 0x4b564d02
+#define MSR_KVM_STEAL_TIME 0x4b564d03
+#define MSR_KVM_PV_EOI_EN 0x4b564d04
+#define MSR_KVM_POLL_CONTROL 0x4b564d05
+#define MSR_KVM_ASYNC_PF_INT 0x4b564d06
+#define MSR_KVM_ASYNC_PF_ACK 0x4b564d07
+#define MSR_KVM_MIGRATION_CONTROL 0x4b564d08
+struct kvm_steal_time {
+  __u64 steal;
+  __u32 version;
+  __u32 flags;
+  __u8 preempted;
+  __u8 u8_pad[3];
+  __u32 pad[11];
+};
+#define KVM_VCPU_PREEMPTED (1 << 0)
+#define KVM_VCPU_FLUSH_TLB (1 << 1)
+#define KVM_CLOCK_PAIRING_WALLCLOCK 0
+struct kvm_clock_pairing {
+  __s64 sec;
+  __s64 nsec;
+  __u64 tsc;
+  __u32 flags;
+  __u32 pad[9];
+};
+#define KVM_STEAL_ALIGNMENT_BITS 5
+#define KVM_STEAL_VALID_BITS ((- 1ULL << (KVM_STEAL_ALIGNMENT_BITS + 1)))
+#define KVM_STEAL_RESERVED_MASK (((1 << KVM_STEAL_ALIGNMENT_BITS) - 1) << 1)
+#define KVM_MAX_MMU_OP_BATCH 32
+#define KVM_ASYNC_PF_ENABLED (1 << 0)
+#define KVM_ASYNC_PF_SEND_ALWAYS (1 << 1)
+#define KVM_ASYNC_PF_DELIVERY_AS_PF_VMEXIT (1 << 2)
+#define KVM_ASYNC_PF_DELIVERY_AS_INT (1 << 3)
+#define KVM_ASYNC_PF_VEC_MASK GENMASK(7, 0)
+#define KVM_MIGRATION_READY (1 << 0)
+#define KVM_MAP_GPA_RANGE_PAGE_SZ_4K 0
+#define KVM_MAP_GPA_RANGE_PAGE_SZ_2M (1 << 0)
+#define KVM_MAP_GPA_RANGE_PAGE_SZ_1G (1 << 1)
+#define KVM_MAP_GPA_RANGE_ENC_STAT(n) (n << 4)
+#define KVM_MAP_GPA_RANGE_ENCRYPTED KVM_MAP_GPA_RANGE_ENC_STAT(1)
+#define KVM_MAP_GPA_RANGE_DECRYPTED KVM_MAP_GPA_RANGE_ENC_STAT(0)
+#define KVM_MMU_OP_WRITE_PTE 1
+#define KVM_MMU_OP_FLUSH_TLB 2
+#define KVM_MMU_OP_RELEASE_PT 3
+struct kvm_mmu_op_header {
+  __u32 op;
+  __u32 pad;
+};
+struct kvm_mmu_op_write_pte {
+  struct kvm_mmu_op_header header;
+  __u64 pte_phys;
+  __u64 pte_val;
+};
+struct kvm_mmu_op_flush_tlb {
+  struct kvm_mmu_op_header header;
+};
+struct kvm_mmu_op_release_pt {
+  struct kvm_mmu_op_header header;
+  __u64 pt_phys;
+};
+#define KVM_PV_REASON_PAGE_NOT_PRESENT 1
+#define KVM_PV_REASON_PAGE_READY 2
+struct kvm_vcpu_pv_apf_data {
+  __u32 flags;
+  __u32 token;
+  __u8 pad[56];
+  __u32 enabled;
+};
+#define KVM_PV_EOI_BIT 0
+#define KVM_PV_EOI_MASK (0x1 << KVM_PV_EOI_BIT)
+#define KVM_PV_EOI_ENABLED KVM_PV_EOI_MASK
+#define KVM_PV_EOI_DISABLED 0x0
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/kvm_perf.h b/i686-linux-musl/include/asm-x86/asm/kvm_perf.h
new file mode 100644
index 0000000..c5c8f8e
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/kvm_perf.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 _ASM_X86_KVM_PERF_H
+#define _ASM_X86_KVM_PERF_H
+#include <asm/svm.h>
+#include <asm/vmx.h>
+#include <asm/kvm.h>
+#define DECODE_STR_LEN 20
+#define VCPU_ID "vcpu_id"
+#define KVM_ENTRY_TRACE "kvm:kvm_entry"
+#define KVM_EXIT_TRACE "kvm:kvm_exit"
+#define KVM_EXIT_REASON "exit_reason"
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/ldt.h b/i686-linux-musl/include/asm-x86/asm/ldt.h
new file mode 100644
index 0000000..a98aedf
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/ldt.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 _ASM_X86_LDT_H
+#define _ASM_X86_LDT_H
+#define LDT_ENTRIES 8192
+#define LDT_ENTRY_SIZE 8
+#ifndef __ASSEMBLY__
+struct user_desc {
+  unsigned int entry_number;
+  unsigned int base_addr;
+  unsigned int limit;
+  unsigned int seg_32bit : 1;
+  unsigned int contents : 2;
+  unsigned int read_exec_only : 1;
+  unsigned int limit_in_pages : 1;
+  unsigned int seg_not_present : 1;
+  unsigned int useable : 1;
+#ifdef __x86_64__
+  unsigned int lm : 1;
+#endif
+};
+#define MODIFY_LDT_CONTENTS_DATA 0
+#define MODIFY_LDT_CONTENTS_STACK 1
+#define MODIFY_LDT_CONTENTS_CODE 2
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/mce.h b/i686-linux-musl/include/asm-x86/asm/mce.h
new file mode 100644
index 0000000..359af57
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/mce.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 _UAPI_ASM_X86_MCE_H
+#define _UAPI_ASM_X86_MCE_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+struct mce {
+  __u64 status;
+  __u64 misc;
+  __u64 addr;
+  __u64 mcgstatus;
+  __u64 ip;
+  __u64 tsc;
+  __u64 time;
+  __u8 cpuvendor;
+  __u8 inject_flags;
+  __u8 severity;
+  __u8 pad;
+  __u32 cpuid;
+  __u8 cs;
+  __u8 bank;
+  __u8 cpu;
+  __u8 finished;
+  __u32 extcpu;
+  __u32 socketid;
+  __u32 apicid;
+  __u64 mcgcap;
+  __u64 synd;
+  __u64 ipid;
+  __u64 ppin;
+  __u32 microcode;
+  __u64 kflags;
+};
+#define MCE_GET_RECORD_LEN _IOR('M', 1, int)
+#define MCE_GET_LOG_LEN _IOR('M', 2, int)
+#define MCE_GETCLEAR_FLAGS _IOR('M', 3, int)
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/mman.h b/i686-linux-musl/include/asm-x86/asm/mman.h
new file mode 100644
index 0000000..1061a6f
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/mman.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 _ASM_X86_MMAN_H
+#define _ASM_X86_MMAN_H
+#define MAP_32BIT 0x40
+#include <asm-generic/mman.h>
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/msgbuf.h b/i686-linux-musl/include/asm-x86/asm/msgbuf.h
new file mode 100644
index 0000000..b100b20
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/msgbuf.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 __ASM_X64_MSGBUF_H
+#define __ASM_X64_MSGBUF_H
+#if !defined(__x86_64__) || !defined(__ILP32__)
+#include <asm-generic/msgbuf.h>
+#else
+#include <asm/ipcbuf.h>
+struct msqid64_ds {
+  struct ipc64_perm msg_perm;
+  __kernel_long_t msg_stime;
+  __kernel_long_t msg_rtime;
+  __kernel_long_t msg_ctime;
+  __kernel_ulong_t msg_cbytes;
+  __kernel_ulong_t msg_qnum;
+  __kernel_ulong_t msg_qbytes;
+  __kernel_pid_t msg_lspid;
+  __kernel_pid_t msg_lrpid;
+  __kernel_ulong_t __unused4;
+  __kernel_ulong_t __unused5;
+};
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/msr.h b/i686-linux-musl/include/asm-x86/asm/msr.h
new file mode 100644
index 0000000..c772838
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/msr.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_ASM_X86_MSR_H
+#define _UAPI_ASM_X86_MSR_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define X86_IOC_RDMSR_REGS _IOWR('c', 0xA0, __u32[8])
+#define X86_IOC_WRMSR_REGS _IOWR('c', 0xA1, __u32[8])
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/mtrr.h b/i686-linux-musl/include/asm-x86/asm/mtrr.h
new file mode 100644
index 0000000..c709a70
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/mtrr.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_ASM_X86_MTRR_H
+#define _UAPI_ASM_X86_MTRR_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#include <linux/errno.h>
+#define MTRR_IOCTL_BASE 'M'
+#ifdef __i386__
+struct mtrr_sentry {
+  unsigned long base;
+  unsigned int size;
+  unsigned int type;
+};
+struct mtrr_gentry {
+  unsigned int regnum;
+  unsigned long base;
+  unsigned int size;
+  unsigned int type;
+};
+#else
+struct mtrr_sentry {
+  __u64 base;
+  __u32 size;
+  __u32 type;
+};
+struct mtrr_gentry {
+  __u64 base;
+  __u32 size;
+  __u32 regnum;
+  __u32 type;
+  __u32 _pad;
+};
+#endif
+struct mtrr_var_range {
+  __u32 base_lo;
+  __u32 base_hi;
+  __u32 mask_lo;
+  __u32 mask_hi;
+};
+typedef __u8 mtrr_type;
+#define MTRR_NUM_FIXED_RANGES 88
+#define MTRR_MAX_VAR_RANGES 256
+struct mtrr_state_type {
+  struct mtrr_var_range var_ranges[MTRR_MAX_VAR_RANGES];
+  mtrr_type fixed_ranges[MTRR_NUM_FIXED_RANGES];
+  unsigned char enabled;
+  unsigned char have_fixed;
+  mtrr_type def_type;
+};
+#define MTRRphysBase_MSR(reg) (0x200 + 2 * (reg))
+#define MTRRphysMask_MSR(reg) (0x200 + 2 * (reg) + 1)
+#define MTRRIOC_ADD_ENTRY _IOW(MTRR_IOCTL_BASE, 0, struct mtrr_sentry)
+#define MTRRIOC_SET_ENTRY _IOW(MTRR_IOCTL_BASE, 1, struct mtrr_sentry)
+#define MTRRIOC_DEL_ENTRY _IOW(MTRR_IOCTL_BASE, 2, struct mtrr_sentry)
+#define MTRRIOC_GET_ENTRY _IOWR(MTRR_IOCTL_BASE, 3, struct mtrr_gentry)
+#define MTRRIOC_KILL_ENTRY _IOW(MTRR_IOCTL_BASE, 4, struct mtrr_sentry)
+#define MTRRIOC_ADD_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 5, struct mtrr_sentry)
+#define MTRRIOC_SET_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 6, struct mtrr_sentry)
+#define MTRRIOC_DEL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 7, struct mtrr_sentry)
+#define MTRRIOC_GET_PAGE_ENTRY _IOWR(MTRR_IOCTL_BASE, 8, struct mtrr_gentry)
+#define MTRRIOC_KILL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 9, struct mtrr_sentry)
+#define MTRR_TYPE_UNCACHABLE 0
+#define MTRR_TYPE_WRCOMB 1
+#define MTRR_TYPE_WRTHROUGH 4
+#define MTRR_TYPE_WRPROT 5
+#define MTRR_TYPE_WRBACK 6
+#define MTRR_NUM_TYPES 7
+#define MTRR_TYPE_INVALID 0xff
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/param.h b/i686-linux-musl/include/asm-x86/asm/param.h
new file mode 100644
index 0000000..5ccf935
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/param.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-generic/param.h>
diff --git a/i686-linux-musl/include/asm-x86/asm/perf_regs.h b/i686-linux-musl/include/asm-x86/asm/perf_regs.h
new file mode 100644
index 0000000..984b7ea
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/perf_regs.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 _ASM_X86_PERF_REGS_H
+#define _ASM_X86_PERF_REGS_H
+enum perf_event_x86_regs {
+  PERF_REG_X86_AX,
+  PERF_REG_X86_BX,
+  PERF_REG_X86_CX,
+  PERF_REG_X86_DX,
+  PERF_REG_X86_SI,
+  PERF_REG_X86_DI,
+  PERF_REG_X86_BP,
+  PERF_REG_X86_SP,
+  PERF_REG_X86_IP,
+  PERF_REG_X86_FLAGS,
+  PERF_REG_X86_CS,
+  PERF_REG_X86_SS,
+  PERF_REG_X86_DS,
+  PERF_REG_X86_ES,
+  PERF_REG_X86_FS,
+  PERF_REG_X86_GS,
+  PERF_REG_X86_R8,
+  PERF_REG_X86_R9,
+  PERF_REG_X86_R10,
+  PERF_REG_X86_R11,
+  PERF_REG_X86_R12,
+  PERF_REG_X86_R13,
+  PERF_REG_X86_R14,
+  PERF_REG_X86_R15,
+  PERF_REG_X86_32_MAX = PERF_REG_X86_GS + 1,
+  PERF_REG_X86_64_MAX = PERF_REG_X86_R15 + 1,
+  PERF_REG_X86_XMM0 = 32,
+  PERF_REG_X86_XMM1 = 34,
+  PERF_REG_X86_XMM2 = 36,
+  PERF_REG_X86_XMM3 = 38,
+  PERF_REG_X86_XMM4 = 40,
+  PERF_REG_X86_XMM5 = 42,
+  PERF_REG_X86_XMM6 = 44,
+  PERF_REG_X86_XMM7 = 46,
+  PERF_REG_X86_XMM8 = 48,
+  PERF_REG_X86_XMM9 = 50,
+  PERF_REG_X86_XMM10 = 52,
+  PERF_REG_X86_XMM11 = 54,
+  PERF_REG_X86_XMM12 = 56,
+  PERF_REG_X86_XMM13 = 58,
+  PERF_REG_X86_XMM14 = 60,
+  PERF_REG_X86_XMM15 = 62,
+  PERF_REG_X86_XMM_MAX = PERF_REG_X86_XMM15 + 2,
+};
+#define PERF_REG_EXTENDED_MASK (~((1ULL << PERF_REG_X86_XMM0) - 1))
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/poll.h b/i686-linux-musl/include/asm-x86/asm/poll.h
new file mode 100644
index 0000000..d7e8adc
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/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-generic/poll.h>
diff --git a/i686-linux-musl/include/asm-x86/asm/posix_types.h b/i686-linux-musl/include/asm-x86/asm/posix_types.h
new file mode 100644
index 0000000..67ed19b
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/posix_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!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifdef __i386__
+#include <asm/posix_types_32.h>
+#elif defined(__ILP32__)
+#include <asm/posix_types_x32.h>
+#else
+#include <asm/posix_types_64.h>
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/posix_types_32.h b/i686-linux-musl/include/asm-x86/asm/posix_types_32.h
new file mode 100644
index 0000000..c339b4f
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/posix_types_32.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 _ASM_X86_POSIX_TYPES_32_H
+#define _ASM_X86_POSIX_TYPES_32_H
+typedef unsigned short __kernel_mode_t;
+#define __kernel_mode_t __kernel_mode_t
+typedef unsigned short __kernel_ipc_pid_t;
+#define __kernel_ipc_pid_t __kernel_ipc_pid_t
+typedef unsigned short __kernel_uid_t;
+typedef unsigned short __kernel_gid_t;
+#define __kernel_uid_t __kernel_uid_t
+typedef unsigned short __kernel_old_dev_t;
+#define __kernel_old_dev_t __kernel_old_dev_t
+#include <asm-generic/posix_types.h>
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/posix_types_64.h b/i686-linux-musl/include/asm-x86/asm/posix_types_64.h
new file mode 100644
index 0000000..23cdec1
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/posix_types_64.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 _ASM_X86_POSIX_TYPES_64_H
+#define _ASM_X86_POSIX_TYPES_64_H
+typedef unsigned short __kernel_old_uid_t;
+typedef unsigned short __kernel_old_gid_t;
+#define __kernel_old_uid_t __kernel_old_uid_t
+typedef unsigned long __kernel_old_dev_t;
+#define __kernel_old_dev_t __kernel_old_dev_t
+#include <asm-generic/posix_types.h>
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/posix_types_x32.h b/i686-linux-musl/include/asm-x86/asm/posix_types_x32.h
new file mode 100644
index 0000000..96cf8b9
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/posix_types_x32.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 _ASM_X86_POSIX_TYPES_X32_H
+#define _ASM_X86_POSIX_TYPES_X32_H
+typedef long long __kernel_long_t;
+typedef unsigned long long __kernel_ulong_t;
+#define __kernel_long_t __kernel_long_t
+#include <asm/posix_types_64.h>
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/prctl.h b/i686-linux-musl/include/asm-x86/asm/prctl.h
new file mode 100644
index 0000000..d8014b1
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/prctl.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 _ASM_X86_PRCTL_H
+#define _ASM_X86_PRCTL_H
+#define ARCH_SET_GS 0x1001
+#define ARCH_SET_FS 0x1002
+#define ARCH_GET_FS 0x1003
+#define ARCH_GET_GS 0x1004
+#define ARCH_GET_CPUID 0x1011
+#define ARCH_SET_CPUID 0x1012
+#define ARCH_GET_XCOMP_SUPP 0x1021
+#define ARCH_GET_XCOMP_PERM 0x1022
+#define ARCH_REQ_XCOMP_PERM 0x1023
+#define ARCH_MAP_VDSO_X32 0x2001
+#define ARCH_MAP_VDSO_32 0x2002
+#define ARCH_MAP_VDSO_64 0x2003
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/processor-flags.h b/i686-linux-musl/include/asm-x86/asm/processor-flags.h
new file mode 100644
index 0000000..85f9d7e
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/processor-flags.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_ASM_X86_PROCESSOR_FLAGS_H
+#define _UAPI_ASM_X86_PROCESSOR_FLAGS_H
+#include <linux/const.h>
+#define X86_EFLAGS_CF_BIT 0
+#define X86_EFLAGS_CF _BITUL(X86_EFLAGS_CF_BIT)
+#define X86_EFLAGS_FIXED_BIT 1
+#define X86_EFLAGS_FIXED _BITUL(X86_EFLAGS_FIXED_BIT)
+#define X86_EFLAGS_PF_BIT 2
+#define X86_EFLAGS_PF _BITUL(X86_EFLAGS_PF_BIT)
+#define X86_EFLAGS_AF_BIT 4
+#define X86_EFLAGS_AF _BITUL(X86_EFLAGS_AF_BIT)
+#define X86_EFLAGS_ZF_BIT 6
+#define X86_EFLAGS_ZF _BITUL(X86_EFLAGS_ZF_BIT)
+#define X86_EFLAGS_SF_BIT 7
+#define X86_EFLAGS_SF _BITUL(X86_EFLAGS_SF_BIT)
+#define X86_EFLAGS_TF_BIT 8
+#define X86_EFLAGS_TF _BITUL(X86_EFLAGS_TF_BIT)
+#define X86_EFLAGS_IF_BIT 9
+#define X86_EFLAGS_IF _BITUL(X86_EFLAGS_IF_BIT)
+#define X86_EFLAGS_DF_BIT 10
+#define X86_EFLAGS_DF _BITUL(X86_EFLAGS_DF_BIT)
+#define X86_EFLAGS_OF_BIT 11
+#define X86_EFLAGS_OF _BITUL(X86_EFLAGS_OF_BIT)
+#define X86_EFLAGS_IOPL_BIT 12
+#define X86_EFLAGS_IOPL (_AC(3, UL) << X86_EFLAGS_IOPL_BIT)
+#define X86_EFLAGS_NT_BIT 14
+#define X86_EFLAGS_NT _BITUL(X86_EFLAGS_NT_BIT)
+#define X86_EFLAGS_RF_BIT 16
+#define X86_EFLAGS_RF _BITUL(X86_EFLAGS_RF_BIT)
+#define X86_EFLAGS_VM_BIT 17
+#define X86_EFLAGS_VM _BITUL(X86_EFLAGS_VM_BIT)
+#define X86_EFLAGS_AC_BIT 18
+#define X86_EFLAGS_AC _BITUL(X86_EFLAGS_AC_BIT)
+#define X86_EFLAGS_VIF_BIT 19
+#define X86_EFLAGS_VIF _BITUL(X86_EFLAGS_VIF_BIT)
+#define X86_EFLAGS_VIP_BIT 20
+#define X86_EFLAGS_VIP _BITUL(X86_EFLAGS_VIP_BIT)
+#define X86_EFLAGS_ID_BIT 21
+#define X86_EFLAGS_ID _BITUL(X86_EFLAGS_ID_BIT)
+#define X86_CR0_PE_BIT 0
+#define X86_CR0_PE _BITUL(X86_CR0_PE_BIT)
+#define X86_CR0_MP_BIT 1
+#define X86_CR0_MP _BITUL(X86_CR0_MP_BIT)
+#define X86_CR0_EM_BIT 2
+#define X86_CR0_EM _BITUL(X86_CR0_EM_BIT)
+#define X86_CR0_TS_BIT 3
+#define X86_CR0_TS _BITUL(X86_CR0_TS_BIT)
+#define X86_CR0_ET_BIT 4
+#define X86_CR0_ET _BITUL(X86_CR0_ET_BIT)
+#define X86_CR0_NE_BIT 5
+#define X86_CR0_NE _BITUL(X86_CR0_NE_BIT)
+#define X86_CR0_WP_BIT 16
+#define X86_CR0_WP _BITUL(X86_CR0_WP_BIT)
+#define X86_CR0_AM_BIT 18
+#define X86_CR0_AM _BITUL(X86_CR0_AM_BIT)
+#define X86_CR0_NW_BIT 29
+#define X86_CR0_NW _BITUL(X86_CR0_NW_BIT)
+#define X86_CR0_CD_BIT 30
+#define X86_CR0_CD _BITUL(X86_CR0_CD_BIT)
+#define X86_CR0_PG_BIT 31
+#define X86_CR0_PG _BITUL(X86_CR0_PG_BIT)
+#define X86_CR3_PWT_BIT 3
+#define X86_CR3_PWT _BITUL(X86_CR3_PWT_BIT)
+#define X86_CR3_PCD_BIT 4
+#define X86_CR3_PCD _BITUL(X86_CR3_PCD_BIT)
+#define X86_CR3_PCID_BITS 12
+#define X86_CR3_PCID_MASK (_AC((1UL << X86_CR3_PCID_BITS) - 1, UL))
+#define X86_CR3_PCID_NOFLUSH_BIT 63
+#define X86_CR3_PCID_NOFLUSH _BITULL(X86_CR3_PCID_NOFLUSH_BIT)
+#define X86_CR4_VME_BIT 0
+#define X86_CR4_VME _BITUL(X86_CR4_VME_BIT)
+#define X86_CR4_PVI_BIT 1
+#define X86_CR4_PVI _BITUL(X86_CR4_PVI_BIT)
+#define X86_CR4_TSD_BIT 2
+#define X86_CR4_TSD _BITUL(X86_CR4_TSD_BIT)
+#define X86_CR4_DE_BIT 3
+#define X86_CR4_DE _BITUL(X86_CR4_DE_BIT)
+#define X86_CR4_PSE_BIT 4
+#define X86_CR4_PSE _BITUL(X86_CR4_PSE_BIT)
+#define X86_CR4_PAE_BIT 5
+#define X86_CR4_PAE _BITUL(X86_CR4_PAE_BIT)
+#define X86_CR4_MCE_BIT 6
+#define X86_CR4_MCE _BITUL(X86_CR4_MCE_BIT)
+#define X86_CR4_PGE_BIT 7
+#define X86_CR4_PGE _BITUL(X86_CR4_PGE_BIT)
+#define X86_CR4_PCE_BIT 8
+#define X86_CR4_PCE _BITUL(X86_CR4_PCE_BIT)
+#define X86_CR4_OSFXSR_BIT 9
+#define X86_CR4_OSFXSR _BITUL(X86_CR4_OSFXSR_BIT)
+#define X86_CR4_OSXMMEXCPT_BIT 10
+#define X86_CR4_OSXMMEXCPT _BITUL(X86_CR4_OSXMMEXCPT_BIT)
+#define X86_CR4_UMIP_BIT 11
+#define X86_CR4_UMIP _BITUL(X86_CR4_UMIP_BIT)
+#define X86_CR4_LA57_BIT 12
+#define X86_CR4_LA57 _BITUL(X86_CR4_LA57_BIT)
+#define X86_CR4_VMXE_BIT 13
+#define X86_CR4_VMXE _BITUL(X86_CR4_VMXE_BIT)
+#define X86_CR4_SMXE_BIT 14
+#define X86_CR4_SMXE _BITUL(X86_CR4_SMXE_BIT)
+#define X86_CR4_FSGSBASE_BIT 16
+#define X86_CR4_FSGSBASE _BITUL(X86_CR4_FSGSBASE_BIT)
+#define X86_CR4_PCIDE_BIT 17
+#define X86_CR4_PCIDE _BITUL(X86_CR4_PCIDE_BIT)
+#define X86_CR4_OSXSAVE_BIT 18
+#define X86_CR4_OSXSAVE _BITUL(X86_CR4_OSXSAVE_BIT)
+#define X86_CR4_SMEP_BIT 20
+#define X86_CR4_SMEP _BITUL(X86_CR4_SMEP_BIT)
+#define X86_CR4_SMAP_BIT 21
+#define X86_CR4_SMAP _BITUL(X86_CR4_SMAP_BIT)
+#define X86_CR4_PKE_BIT 22
+#define X86_CR4_PKE _BITUL(X86_CR4_PKE_BIT)
+#define X86_CR8_TPR _AC(0x0000000f, UL)
+#define CX86_PCR0 0x20
+#define CX86_GCR 0xb8
+#define CX86_CCR0 0xc0
+#define CX86_CCR1 0xc1
+#define CX86_CCR2 0xc2
+#define CX86_CCR3 0xc3
+#define CX86_CCR4 0xe8
+#define CX86_CCR5 0xe9
+#define CX86_CCR6 0xea
+#define CX86_CCR7 0xeb
+#define CX86_PCR1 0xf0
+#define CX86_DIR0 0xfe
+#define CX86_DIR1 0xff
+#define CX86_ARR_BASE 0xc4
+#define CX86_RCR_BASE 0xdc
+#define CR0_STATE (X86_CR0_PE | X86_CR0_MP | X86_CR0_ET | X86_CR0_NE | X86_CR0_WP | X86_CR0_AM | X86_CR0_PG)
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/ptrace-abi.h b/i686-linux-musl/include/asm-x86/asm/ptrace-abi.h
new file mode 100644
index 0000000..e501d9f
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/ptrace-abi.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 _ASM_X86_PTRACE_ABI_H
+#define _ASM_X86_PTRACE_ABI_H
+#ifdef __i386__
+#define EBX 0
+#define ECX 1
+#define EDX 2
+#define ESI 3
+#define EDI 4
+#define EBP 5
+#define EAX 6
+#define DS 7
+#define ES 8
+#define FS 9
+#define GS 10
+#define ORIG_EAX 11
+#define EIP 12
+#define CS 13
+#define EFL 14
+#define UESP 15
+#define SS 16
+#define FRAME_SIZE 17
+#else
+#if defined(__ASSEMBLY__) || defined(__FRAME_OFFSETS)
+#define R15 0
+#define R14 8
+#define R13 16
+#define R12 24
+#define RBP 32
+#define RBX 40
+#define R11 48
+#define R10 56
+#define R9 64
+#define R8 72
+#define RAX 80
+#define RCX 88
+#define RDX 96
+#define RSI 104
+#define RDI 112
+#define ORIG_RAX 120
+#define RIP 128
+#define CS 136
+#define EFLAGS 144
+#define RSP 152
+#define SS 160
+#endif
+#define FRAME_SIZE 168
+#endif
+#define PTRACE_GETREGS 12
+#define PTRACE_SETREGS 13
+#define PTRACE_GETFPREGS 14
+#define PTRACE_SETFPREGS 15
+#define PTRACE_GETFPXREGS 18
+#define PTRACE_SETFPXREGS 19
+#define PTRACE_OLDSETOPTIONS 21
+#define PTRACE_GET_THREAD_AREA 25
+#define PTRACE_SET_THREAD_AREA 26
+#ifdef __x86_64__
+#define PTRACE_ARCH_PRCTL 30
+#endif
+#define PTRACE_SYSEMU 31
+#define PTRACE_SYSEMU_SINGLESTEP 32
+#define PTRACE_SINGLEBLOCK 33
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/ptrace.h b/i686-linux-musl/include/asm-x86/asm/ptrace.h
new file mode 100644
index 0000000..3f4404a
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/ptrace.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_ASM_X86_PTRACE_H
+#define _UAPI_ASM_X86_PTRACE_H
+#include <linux/compiler.h>
+#include <asm/ptrace-abi.h>
+#include <asm/processor-flags.h>
+#ifndef __ASSEMBLY__
+#ifdef __i386__
+struct pt_regs {
+  long ebx;
+  long ecx;
+  long edx;
+  long esi;
+  long edi;
+  long ebp;
+  long eax;
+  int xds;
+  int xes;
+  int xfs;
+  int xgs;
+  long orig_eax;
+  long eip;
+  int xcs;
+  long eflags;
+  long esp;
+  int xss;
+};
+#else
+struct pt_regs {
+  unsigned long r15;
+  unsigned long r14;
+  unsigned long r13;
+  unsigned long r12;
+  unsigned long rbp;
+  unsigned long rbx;
+  unsigned long r11;
+  unsigned long r10;
+  unsigned long r9;
+  unsigned long r8;
+  unsigned long rax;
+  unsigned long rcx;
+  unsigned long rdx;
+  unsigned long rsi;
+  unsigned long rdi;
+  unsigned long orig_rax;
+  unsigned long rip;
+  unsigned long cs;
+  unsigned long eflags;
+  unsigned long rsp;
+  unsigned long ss;
+};
+#endif
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/resource.h b/i686-linux-musl/include/asm-x86/asm/resource.h
new file mode 100644
index 0000000..371adb5
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/resource.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-generic/resource.h>
diff --git a/i686-linux-musl/include/asm-x86/asm/sembuf.h b/i686-linux-musl/include/asm-x86/asm/sembuf.h
new file mode 100644
index 0000000..c633425
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/sembuf.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 _ASM_X86_SEMBUF_H
+#define _ASM_X86_SEMBUF_H
+#include <asm/ipcbuf.h>
+struct semid64_ds {
+  struct ipc64_perm sem_perm;
+#ifdef __i386__
+  unsigned long sem_otime;
+  unsigned long sem_otime_high;
+  unsigned long sem_ctime;
+  unsigned long sem_ctime_high;
+#else
+  __kernel_long_t sem_otime;
+  __kernel_ulong_t __unused1;
+  __kernel_long_t sem_ctime;
+  __kernel_ulong_t __unused2;
+#endif
+  __kernel_ulong_t sem_nsems;
+  __kernel_ulong_t __unused3;
+  __kernel_ulong_t __unused4;
+};
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/setup.h b/i686-linux-musl/include/asm-x86/asm/setup.h
new file mode 100644
index 0000000..878419c
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/setup.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/asm-x86/asm/sgx.h b/i686-linux-musl/include/asm-x86/asm/sgx.h
new file mode 100644
index 0000000..1874b78
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/sgx.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_ASM_X86_SGX_H
+#define _UAPI_ASM_X86_SGX_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+enum sgx_page_flags {
+  SGX_PAGE_MEASURE = 0x01,
+};
+#define SGX_MAGIC 0xA4
+#define SGX_IOC_ENCLAVE_CREATE _IOW(SGX_MAGIC, 0x00, struct sgx_enclave_create)
+#define SGX_IOC_ENCLAVE_ADD_PAGES _IOWR(SGX_MAGIC, 0x01, struct sgx_enclave_add_pages)
+#define SGX_IOC_ENCLAVE_INIT _IOW(SGX_MAGIC, 0x02, struct sgx_enclave_init)
+#define SGX_IOC_ENCLAVE_PROVISION _IOW(SGX_MAGIC, 0x03, struct sgx_enclave_provision)
+#define SGX_IOC_VEPC_REMOVE_ALL _IO(SGX_MAGIC, 0x04)
+struct sgx_enclave_create {
+  __u64 src;
+};
+struct sgx_enclave_add_pages {
+  __u64 src;
+  __u64 offset;
+  __u64 length;
+  __u64 secinfo;
+  __u64 flags;
+  __u64 count;
+};
+struct sgx_enclave_init {
+  __u64 sigstruct;
+};
+struct sgx_enclave_provision {
+  __u64 fd;
+};
+struct sgx_enclave_run;
+typedef int(* sgx_enclave_user_handler_t) (long rdi, long rsi, long rdx, long rsp, long r8, long r9, struct sgx_enclave_run * run);
+struct sgx_enclave_run {
+  __u64 tcs;
+  __u32 function;
+  __u16 exception_vector;
+  __u16 exception_error_code;
+  __u64 exception_addr;
+  __u64 user_handler;
+  __u64 user_data;
+  __u8 reserved[216];
+};
+typedef int(* vdso_sgx_enter_enclave_t) (unsigned long rdi, unsigned long rsi, unsigned long rdx, unsigned int function, unsigned long r8, unsigned long r9, struct sgx_enclave_run * run);
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/shmbuf.h b/i686-linux-musl/include/asm-x86/asm/shmbuf.h
new file mode 100644
index 0000000..03e195e
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/shmbuf.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 __ASM_X86_SHMBUF_H
+#define __ASM_X86_SHMBUF_H
+#if !defined(__x86_64__) || !defined(__ILP32__)
+#include <asm-generic/shmbuf.h>
+#else
+struct shmid64_ds {
+  struct ipc64_perm shm_perm;
+  size_t shm_segsz;
+  __kernel_long_t shm_atime;
+  __kernel_long_t shm_dtime;
+  __kernel_long_t shm_ctime;
+  __kernel_pid_t shm_cpid;
+  __kernel_pid_t shm_lpid;
+  __kernel_ulong_t shm_nattch;
+  __kernel_ulong_t __unused4;
+  __kernel_ulong_t __unused5;
+};
+struct shminfo64 {
+  __kernel_ulong_t shmmax;
+  __kernel_ulong_t shmmin;
+  __kernel_ulong_t shmmni;
+  __kernel_ulong_t shmseg;
+  __kernel_ulong_t shmall;
+  __kernel_ulong_t __unused1;
+  __kernel_ulong_t __unused2;
+  __kernel_ulong_t __unused3;
+  __kernel_ulong_t __unused4;
+};
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/sigcontext.h b/i686-linux-musl/include/asm-x86/asm/sigcontext.h
new file mode 100644
index 0000000..7d5b4d4
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/sigcontext.h
@@ -0,0 +1,225 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_X86_SIGCONTEXT_H
+#define _UAPI_ASM_X86_SIGCONTEXT_H
+#include <linux/compiler.h>
+#include <linux/types.h>
+#define FP_XSTATE_MAGIC1 0x46505853U
+#define FP_XSTATE_MAGIC2 0x46505845U
+#define FP_XSTATE_MAGIC2_SIZE sizeof(FP_XSTATE_MAGIC2)
+struct _fpx_sw_bytes {
+  __u32 magic1;
+  __u32 extended_size;
+  __u64 xfeatures;
+  __u32 xstate_size;
+  __u32 padding[7];
+};
+struct _fpreg {
+  __u16 significand[4];
+  __u16 exponent;
+};
+struct _fpxreg {
+  __u16 significand[4];
+  __u16 exponent;
+  __u16 padding[3];
+};
+struct _xmmreg {
+  __u32 element[4];
+};
+#define X86_FXSR_MAGIC 0x0000
+struct _fpstate_32 {
+  __u32 cw;
+  __u32 sw;
+  __u32 tag;
+  __u32 ipoff;
+  __u32 cssel;
+  __u32 dataoff;
+  __u32 datasel;
+  struct _fpreg _st[8];
+  __u16 status;
+  __u16 magic;
+  __u32 _fxsr_env[6];
+  __u32 mxcsr;
+  __u32 reserved;
+  struct _fpxreg _fxsr_st[8];
+  struct _xmmreg _xmm[8];
+  union {
+    __u32 padding1[44];
+    __u32 padding[44];
+  };
+  union {
+    __u32 padding2[12];
+    struct _fpx_sw_bytes sw_reserved;
+  };
+};
+struct _fpstate_64 {
+  __u16 cwd;
+  __u16 swd;
+  __u16 twd;
+  __u16 fop;
+  __u64 rip;
+  __u64 rdp;
+  __u32 mxcsr;
+  __u32 mxcsr_mask;
+  __u32 st_space[32];
+  __u32 xmm_space[64];
+  __u32 reserved2[12];
+  union {
+    __u32 reserved3[12];
+    struct _fpx_sw_bytes sw_reserved;
+  };
+};
+#ifdef __i386__
+#define _fpstate _fpstate_32
+#else
+#define _fpstate _fpstate_64
+#endif
+struct _header {
+  __u64 xfeatures;
+  __u64 reserved1[2];
+  __u64 reserved2[5];
+};
+struct _ymmh_state {
+  __u32 ymmh_space[64];
+};
+struct _xstate {
+  struct _fpstate fpstate;
+  struct _header xstate_hdr;
+  struct _ymmh_state ymmh;
+};
+struct sigcontext_32 {
+  __u16 gs, __gsh;
+  __u16 fs, __fsh;
+  __u16 es, __esh;
+  __u16 ds, __dsh;
+  __u32 di;
+  __u32 si;
+  __u32 bp;
+  __u32 sp;
+  __u32 bx;
+  __u32 dx;
+  __u32 cx;
+  __u32 ax;
+  __u32 trapno;
+  __u32 err;
+  __u32 ip;
+  __u16 cs, __csh;
+  __u32 flags;
+  __u32 sp_at_signal;
+  __u16 ss, __ssh;
+  __u32 fpstate;
+  __u32 oldmask;
+  __u32 cr2;
+};
+struct sigcontext_64 {
+  __u64 r8;
+  __u64 r9;
+  __u64 r10;
+  __u64 r11;
+  __u64 r12;
+  __u64 r13;
+  __u64 r14;
+  __u64 r15;
+  __u64 di;
+  __u64 si;
+  __u64 bp;
+  __u64 bx;
+  __u64 dx;
+  __u64 ax;
+  __u64 cx;
+  __u64 sp;
+  __u64 ip;
+  __u64 flags;
+  __u16 cs;
+  __u16 gs;
+  __u16 fs;
+  __u16 ss;
+  __u64 err;
+  __u64 trapno;
+  __u64 oldmask;
+  __u64 cr2;
+  __u64 fpstate;
+  __u64 reserved1[8];
+};
+#define _fpstate_ia32 _fpstate_32
+#define sigcontext_ia32 sigcontext_32
+#ifdef __i386__
+struct sigcontext {
+  __u16 gs, __gsh;
+  __u16 fs, __fsh;
+  __u16 es, __esh;
+  __u16 ds, __dsh;
+  __u32 edi;
+  __u32 esi;
+  __u32 ebp;
+  __u32 esp;
+  __u32 ebx;
+  __u32 edx;
+  __u32 ecx;
+  __u32 eax;
+  __u32 trapno;
+  __u32 err;
+  __u32 eip;
+  __u16 cs, __csh;
+  __u32 eflags;
+  __u32 esp_at_signal;
+  __u16 ss, __ssh;
+  struct _fpstate __user * fpstate;
+  __u32 oldmask;
+  __u32 cr2;
+};
+#else
+struct sigcontext {
+  __u64 r8;
+  __u64 r9;
+  __u64 r10;
+  __u64 r11;
+  __u64 r12;
+  __u64 r13;
+  __u64 r14;
+  __u64 r15;
+  __u64 rdi;
+  __u64 rsi;
+  __u64 rbp;
+  __u64 rbx;
+  __u64 rdx;
+  __u64 rax;
+  __u64 rcx;
+  __u64 rsp;
+  __u64 rip;
+  __u64 eflags;
+  __u16 cs;
+  __u16 gs;
+  __u16 fs;
+  union {
+    __u16 ss;
+    __u16 __pad0;
+  };
+  __u64 err;
+  __u64 trapno;
+  __u64 oldmask;
+  __u64 cr2;
+  struct _fpstate __user * fpstate;
+#ifdef __ILP32__
+  __u32 __fpstate_pad;
+#endif
+  __u64 reserved1[8];
+};
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/sigcontext32.h b/i686-linux-musl/include/asm-x86/asm/sigcontext32.h
new file mode 100644
index 0000000..639467e
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/sigcontext32.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 _ASM_X86_SIGCONTEXT32_H
+#define _ASM_X86_SIGCONTEXT32_H
+#include <asm/sigcontext.h>
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/siginfo.h b/i686-linux-musl/include/asm-x86/asm/siginfo.h
new file mode 100644
index 0000000..0de5283
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/siginfo.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 _ASM_X86_SIGINFO_H
+#define _ASM_X86_SIGINFO_H
+#ifdef __x86_64__
+#ifdef __ILP32__
+typedef long long __kernel_si_clock_t __attribute__((aligned(4)));
+#define __ARCH_SI_CLOCK_T __kernel_si_clock_t
+#define __ARCH_SI_ATTRIBUTES __attribute__((aligned(8)))
+#endif
+#endif
+#include <asm-generic/siginfo.h>
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/signal.h b/i686-linux-musl/include/asm-x86/asm/signal.h
new file mode 100644
index 0000000..8226da8
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/signal.h
@@ -0,0 +1,96 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_X86_SIGNAL_H
+#define _UAPI_ASM_X86_SIGNAL_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#include <linux/time.h>
+#include <linux/compiler.h>
+struct siginfo;
+#define _KERNEL_NSIG 32
+typedef unsigned long sigset_t;
+#endif
+#define SIGHUP 1
+#define SIGINT 2
+#define SIGQUIT 3
+#define SIGILL 4
+#define SIGTRAP 5
+#define SIGABRT 6
+#define SIGIOT 6
+#define SIGBUS 7
+#define SIGFPE 8
+#define SIGKILL 9
+#define SIGUSR1 10
+#define SIGSEGV 11
+#define SIGUSR2 12
+#define SIGPIPE 13
+#define SIGALRM 14
+#define SIGTERM 15
+#define SIGSTKFLT 16
+#define SIGCHLD 17
+#define SIGCONT 18
+#define SIGSTOP 19
+#define SIGTSTP 20
+#define SIGTTIN 21
+#define SIGTTOU 22
+#define SIGURG 23
+#define SIGXCPU 24
+#define SIGXFSZ 25
+#define SIGVTALRM 26
+#define SIGPROF 27
+#define SIGWINCH 28
+#define SIGIO 29
+#define SIGPOLL SIGIO
+#define SIGPWR 30
+#define SIGSYS 31
+#define SIGUNUSED 31
+#define __SIGRTMIN 32
+#define __SIGRTMAX _KERNEL__NSIG
+#define SA_RESTORER 0x04000000
+#define MINSIGSTKSZ 2048
+#define SIGSTKSZ 8192
+#include <asm-generic/signal-defs.h>
+#ifndef __ASSEMBLY__
+#ifdef __i386__
+struct sigaction {
+  union {
+    __sighandler_t _sa_handler;
+    void(* _sa_sigaction) (int, struct siginfo *, void *);
+  } _u;
+  sigset_t sa_mask;
+  unsigned long sa_flags;
+  void(* sa_restorer) (void);
+};
+#define sa_handler _u._sa_handler
+#define sa_sigaction _u._sa_sigaction
+#else
+struct sigaction {
+  __sighandler_t sa_handler;
+  unsigned long sa_flags;
+  __sigrestore_t sa_restorer;
+  sigset_t sa_mask;
+};
+#endif
+typedef struct sigaltstack {
+  void __user * ss_sp;
+  int ss_flags;
+  size_t ss_size;
+} stack_t;
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/socket.h b/i686-linux-musl/include/asm-x86/asm/socket.h
new file mode 100644
index 0000000..50a9874
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/socket.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-generic/socket.h>
diff --git a/i686-linux-musl/include/asm-x86/asm/sockios.h b/i686-linux-musl/include/asm-x86/asm/sockios.h
new file mode 100644
index 0000000..710db92
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/sockios.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-generic/sockios.h>
diff --git a/i686-linux-musl/include/asm-x86/asm/stat.h b/i686-linux-musl/include/asm-x86/asm/stat.h
new file mode 100644
index 0000000..9b8c37e
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/stat.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 _ASM_X86_STAT_H
+#define _ASM_X86_STAT_H
+#include <asm/posix_types.h>
+#define STAT_HAVE_NSEC 1
+#ifdef __i386__
+struct stat {
+  unsigned long st_dev;
+  unsigned long st_ino;
+  unsigned short st_mode;
+  unsigned short st_nlink;
+  unsigned short st_uid;
+  unsigned short st_gid;
+  unsigned long st_rdev;
+  unsigned long st_size;
+  unsigned long st_blksize;
+  unsigned long st_blocks;
+  unsigned long st_atime;
+  unsigned long st_atime_nsec;
+  unsigned long st_mtime;
+  unsigned long st_mtime_nsec;
+  unsigned long st_ctime;
+  unsigned long st_ctime_nsec;
+  unsigned long __unused4;
+  unsigned long __unused5;
+};
+#define INIT_STRUCT_STAT_PADDING(st) do { st.__unused4 = 0; st.__unused5 = 0; \
+} while(0)
+#define STAT64_HAS_BROKEN_ST_INO 1
+struct stat64 {
+  unsigned long long st_dev;
+  unsigned char __pad0[4];
+  unsigned long __st_ino;
+  unsigned int st_mode;
+  unsigned int st_nlink;
+  unsigned long st_uid;
+  unsigned long st_gid;
+  unsigned long long st_rdev;
+  unsigned char __pad3[4];
+  long long st_size;
+  unsigned long st_blksize;
+  unsigned long long st_blocks;
+  unsigned long st_atime;
+  unsigned long st_atime_nsec;
+  unsigned long st_mtime;
+  unsigned int st_mtime_nsec;
+  unsigned long st_ctime;
+  unsigned long st_ctime_nsec;
+  unsigned long long st_ino;
+};
+#define INIT_STRUCT_STAT64_PADDING(st) do { memset(& st.__pad0, 0, sizeof(st.__pad0)); memset(& st.__pad3, 0, sizeof(st.__pad3)); \
+} while(0)
+#else
+struct stat {
+  __kernel_ulong_t st_dev;
+  __kernel_ulong_t st_ino;
+  __kernel_ulong_t st_nlink;
+  unsigned int st_mode;
+  unsigned int st_uid;
+  unsigned int st_gid;
+  unsigned int __pad0;
+  __kernel_ulong_t st_rdev;
+  __kernel_long_t st_size;
+  __kernel_long_t st_blksize;
+  __kernel_long_t st_blocks;
+  __kernel_ulong_t st_atime;
+  __kernel_ulong_t st_atime_nsec;
+  __kernel_ulong_t st_mtime;
+  __kernel_ulong_t st_mtime_nsec;
+  __kernel_ulong_t st_ctime;
+  __kernel_ulong_t st_ctime_nsec;
+  __kernel_long_t __linux_unused[3];
+};
+#define INIT_STRUCT_STAT_PADDING(st) do { st.__pad0 = 0; st.__linux_unused[0] = 0; st.__linux_unused[1] = 0; st.__linux_unused[2] = 0; \
+} while(0)
+#endif
+struct __old_kernel_stat {
+  unsigned short st_dev;
+  unsigned short st_ino;
+  unsigned short st_mode;
+  unsigned short st_nlink;
+  unsigned short st_uid;
+  unsigned short st_gid;
+  unsigned short st_rdev;
+#ifdef __i386__
+  unsigned long st_size;
+  unsigned long st_atime;
+  unsigned long st_mtime;
+  unsigned long st_ctime;
+#else
+  unsigned int st_size;
+  unsigned int st_atime;
+  unsigned int st_mtime;
+  unsigned int st_ctime;
+#endif
+};
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/statfs.h b/i686-linux-musl/include/asm-x86/asm/statfs.h
new file mode 100644
index 0000000..3ac754c
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/statfs.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 _ASM_X86_STATFS_H
+#define _ASM_X86_STATFS_H
+#define ARCH_PACK_COMPAT_STATFS64 __attribute__((packed, aligned(4)))
+#include <asm-generic/statfs.h>
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/svm.h b/i686-linux-musl/include/asm-x86/asm/svm.h
new file mode 100644
index 0000000..d051481
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/svm.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__SVM_H
+#define _UAPI__SVM_H
+#define SVM_EXIT_READ_CR0 0x000
+#define SVM_EXIT_READ_CR2 0x002
+#define SVM_EXIT_READ_CR3 0x003
+#define SVM_EXIT_READ_CR4 0x004
+#define SVM_EXIT_READ_CR8 0x008
+#define SVM_EXIT_WRITE_CR0 0x010
+#define SVM_EXIT_WRITE_CR2 0x012
+#define SVM_EXIT_WRITE_CR3 0x013
+#define SVM_EXIT_WRITE_CR4 0x014
+#define SVM_EXIT_WRITE_CR8 0x018
+#define SVM_EXIT_READ_DR0 0x020
+#define SVM_EXIT_READ_DR1 0x021
+#define SVM_EXIT_READ_DR2 0x022
+#define SVM_EXIT_READ_DR3 0x023
+#define SVM_EXIT_READ_DR4 0x024
+#define SVM_EXIT_READ_DR5 0x025
+#define SVM_EXIT_READ_DR6 0x026
+#define SVM_EXIT_READ_DR7 0x027
+#define SVM_EXIT_WRITE_DR0 0x030
+#define SVM_EXIT_WRITE_DR1 0x031
+#define SVM_EXIT_WRITE_DR2 0x032
+#define SVM_EXIT_WRITE_DR3 0x033
+#define SVM_EXIT_WRITE_DR4 0x034
+#define SVM_EXIT_WRITE_DR5 0x035
+#define SVM_EXIT_WRITE_DR6 0x036
+#define SVM_EXIT_WRITE_DR7 0x037
+#define SVM_EXIT_EXCP_BASE 0x040
+#define SVM_EXIT_LAST_EXCP 0x05f
+#define SVM_EXIT_INTR 0x060
+#define SVM_EXIT_NMI 0x061
+#define SVM_EXIT_SMI 0x062
+#define SVM_EXIT_INIT 0x063
+#define SVM_EXIT_VINTR 0x064
+#define SVM_EXIT_CR0_SEL_WRITE 0x065
+#define SVM_EXIT_IDTR_READ 0x066
+#define SVM_EXIT_GDTR_READ 0x067
+#define SVM_EXIT_LDTR_READ 0x068
+#define SVM_EXIT_TR_READ 0x069
+#define SVM_EXIT_IDTR_WRITE 0x06a
+#define SVM_EXIT_GDTR_WRITE 0x06b
+#define SVM_EXIT_LDTR_WRITE 0x06c
+#define SVM_EXIT_TR_WRITE 0x06d
+#define SVM_EXIT_RDTSC 0x06e
+#define SVM_EXIT_RDPMC 0x06f
+#define SVM_EXIT_PUSHF 0x070
+#define SVM_EXIT_POPF 0x071
+#define SVM_EXIT_CPUID 0x072
+#define SVM_EXIT_RSM 0x073
+#define SVM_EXIT_IRET 0x074
+#define SVM_EXIT_SWINT 0x075
+#define SVM_EXIT_INVD 0x076
+#define SVM_EXIT_PAUSE 0x077
+#define SVM_EXIT_HLT 0x078
+#define SVM_EXIT_INVLPG 0x079
+#define SVM_EXIT_INVLPGA 0x07a
+#define SVM_EXIT_IOIO 0x07b
+#define SVM_EXIT_MSR 0x07c
+#define SVM_EXIT_TASK_SWITCH 0x07d
+#define SVM_EXIT_FERR_FREEZE 0x07e
+#define SVM_EXIT_SHUTDOWN 0x07f
+#define SVM_EXIT_VMRUN 0x080
+#define SVM_EXIT_VMMCALL 0x081
+#define SVM_EXIT_VMLOAD 0x082
+#define SVM_EXIT_VMSAVE 0x083
+#define SVM_EXIT_STGI 0x084
+#define SVM_EXIT_CLGI 0x085
+#define SVM_EXIT_SKINIT 0x086
+#define SVM_EXIT_RDTSCP 0x087
+#define SVM_EXIT_ICEBP 0x088
+#define SVM_EXIT_WBINVD 0x089
+#define SVM_EXIT_MONITOR 0x08a
+#define SVM_EXIT_MWAIT 0x08b
+#define SVM_EXIT_MWAIT_COND 0x08c
+#define SVM_EXIT_XSETBV 0x08d
+#define SVM_EXIT_RDPRU 0x08e
+#define SVM_EXIT_EFER_WRITE_TRAP 0x08f
+#define SVM_EXIT_CR0_WRITE_TRAP 0x090
+#define SVM_EXIT_CR1_WRITE_TRAP 0x091
+#define SVM_EXIT_CR2_WRITE_TRAP 0x092
+#define SVM_EXIT_CR3_WRITE_TRAP 0x093
+#define SVM_EXIT_CR4_WRITE_TRAP 0x094
+#define SVM_EXIT_CR5_WRITE_TRAP 0x095
+#define SVM_EXIT_CR6_WRITE_TRAP 0x096
+#define SVM_EXIT_CR7_WRITE_TRAP 0x097
+#define SVM_EXIT_CR8_WRITE_TRAP 0x098
+#define SVM_EXIT_CR9_WRITE_TRAP 0x099
+#define SVM_EXIT_CR10_WRITE_TRAP 0x09a
+#define SVM_EXIT_CR11_WRITE_TRAP 0x09b
+#define SVM_EXIT_CR12_WRITE_TRAP 0x09c
+#define SVM_EXIT_CR13_WRITE_TRAP 0x09d
+#define SVM_EXIT_CR14_WRITE_TRAP 0x09e
+#define SVM_EXIT_CR15_WRITE_TRAP 0x09f
+#define SVM_EXIT_INVPCID 0x0a2
+#define SVM_EXIT_NPF 0x400
+#define SVM_EXIT_AVIC_INCOMPLETE_IPI 0x401
+#define SVM_EXIT_AVIC_UNACCELERATED_ACCESS 0x402
+#define SVM_EXIT_VMGEXIT 0x403
+#define SVM_VMGEXIT_MMIO_READ 0x80000001
+#define SVM_VMGEXIT_MMIO_WRITE 0x80000002
+#define SVM_VMGEXIT_NMI_COMPLETE 0x80000003
+#define SVM_VMGEXIT_AP_HLT_LOOP 0x80000004
+#define SVM_VMGEXIT_AP_JUMP_TABLE 0x80000005
+#define SVM_VMGEXIT_SET_AP_JUMP_TABLE 0
+#define SVM_VMGEXIT_GET_AP_JUMP_TABLE 1
+#define SVM_VMGEXIT_UNSUPPORTED_EVENT 0x8000ffff
+#define SVM_EXIT_SW 0xf0000000
+#define SVM_EXIT_ERR - 1
+#define SVM_EXIT_REASONS { SVM_EXIT_READ_CR0, "read_cr0" }, { SVM_EXIT_READ_CR2, "read_cr2" }, { SVM_EXIT_READ_CR3, "read_cr3" }, { SVM_EXIT_READ_CR4, "read_cr4" }, { SVM_EXIT_READ_CR8, "read_cr8" }, { SVM_EXIT_WRITE_CR0, "write_cr0" }, { SVM_EXIT_WRITE_CR2, "write_cr2" }, { SVM_EXIT_WRITE_CR3, "write_cr3" }, { SVM_EXIT_WRITE_CR4, "write_cr4" }, { SVM_EXIT_WRITE_CR8, "write_cr8" }, { SVM_EXIT_READ_DR0, "read_dr0" }, { SVM_EXIT_READ_DR1, "read_dr1" }, { SVM_EXIT_READ_DR2, "read_dr2" }, { SVM_EXIT_READ_DR3, "read_dr3" }, { SVM_EXIT_READ_DR4, "read_dr4" }, { SVM_EXIT_READ_DR5, "read_dr5" }, { SVM_EXIT_READ_DR6, "read_dr6" }, { SVM_EXIT_READ_DR7, "read_dr7" }, { SVM_EXIT_WRITE_DR0, "write_dr0" }, { SVM_EXIT_WRITE_DR1, "write_dr1" }, { SVM_EXIT_WRITE_DR2, "write_dr2" }, { SVM_EXIT_WRITE_DR3, "write_dr3" }, { SVM_EXIT_WRITE_DR4, "write_dr4" }, { SVM_EXIT_WRITE_DR5, "write_dr5" }, { SVM_EXIT_WRITE_DR6, "write_dr6" }, { SVM_EXIT_WRITE_DR7, "write_dr7" }, { SVM_EXIT_EXCP_BASE + DE_VECTOR, "DE excp" }, { SVM_EXIT_EXCP_BASE + DB_VECTOR, "DB excp" }, { SVM_EXIT_EXCP_BASE + BP_VECTOR, "BP excp" }, { SVM_EXIT_EXCP_BASE + OF_VECTOR, "OF excp" }, { SVM_EXIT_EXCP_BASE + BR_VECTOR, "BR excp" }, { SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" }, { SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" }, { SVM_EXIT_EXCP_BASE + DF_VECTOR, "DF excp" }, { SVM_EXIT_EXCP_BASE + TS_VECTOR, "TS excp" }, { SVM_EXIT_EXCP_BASE + NP_VECTOR, "NP excp" }, { SVM_EXIT_EXCP_BASE + SS_VECTOR, "SS excp" }, { SVM_EXIT_EXCP_BASE + GP_VECTOR, "GP excp" }, { SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" }, { SVM_EXIT_EXCP_BASE + MF_VECTOR, "MF excp" }, { SVM_EXIT_EXCP_BASE + AC_VECTOR, "AC excp" }, { SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" }, { SVM_EXIT_EXCP_BASE + XM_VECTOR, "XF excp" }, { SVM_EXIT_INTR, "interrupt" }, { SVM_EXIT_NMI, "nmi" }, { SVM_EXIT_SMI, "smi" }, { SVM_EXIT_INIT, "init" }, { SVM_EXIT_VINTR, "vintr" }, { SVM_EXIT_CR0_SEL_WRITE, "cr0_sel_write" }, { SVM_EXIT_IDTR_READ, "read_idtr" }, { SVM_EXIT_GDTR_READ, "read_gdtr" }, { SVM_EXIT_LDTR_READ, "read_ldtr" }, { SVM_EXIT_TR_READ, "read_rt" }, { SVM_EXIT_IDTR_WRITE, "write_idtr" }, { SVM_EXIT_GDTR_WRITE, "write_gdtr" }, { SVM_EXIT_LDTR_WRITE, "write_ldtr" }, { SVM_EXIT_TR_WRITE, "write_rt" }, { SVM_EXIT_RDTSC, "rdtsc" }, { SVM_EXIT_RDPMC, "rdpmc" }, { SVM_EXIT_PUSHF, "pushf" }, { SVM_EXIT_POPF, "popf" }, { SVM_EXIT_CPUID, "cpuid" }, { SVM_EXIT_RSM, "rsm" }, { SVM_EXIT_IRET, "iret" }, { SVM_EXIT_SWINT, "swint" }, { SVM_EXIT_INVD, "invd" }, { SVM_EXIT_PAUSE, "pause" }, { SVM_EXIT_HLT, "hlt" }, { SVM_EXIT_INVLPG, "invlpg" }, { SVM_EXIT_INVLPGA, "invlpga" }, { SVM_EXIT_IOIO, "io" }, { SVM_EXIT_MSR, "msr" }, { SVM_EXIT_TASK_SWITCH, "task_switch" }, { SVM_EXIT_FERR_FREEZE, "ferr_freeze" }, { SVM_EXIT_SHUTDOWN, "shutdown" }, { SVM_EXIT_VMRUN, "vmrun" }, { SVM_EXIT_VMMCALL, "hypercall" }, { SVM_EXIT_VMLOAD, "vmload" }, { SVM_EXIT_VMSAVE, "vmsave" }, { SVM_EXIT_STGI, "stgi" }, { SVM_EXIT_CLGI, "clgi" }, { SVM_EXIT_SKINIT, "skinit" }, { SVM_EXIT_RDTSCP, "rdtscp" }, { SVM_EXIT_ICEBP, "icebp" }, { SVM_EXIT_WBINVD, "wbinvd" }, { SVM_EXIT_MONITOR, "monitor" }, { SVM_EXIT_MWAIT, "mwait" }, { SVM_EXIT_XSETBV, "xsetbv" }, { SVM_EXIT_EFER_WRITE_TRAP, "write_efer_trap" }, { SVM_EXIT_CR0_WRITE_TRAP, "write_cr0_trap" }, { SVM_EXIT_CR4_WRITE_TRAP, "write_cr4_trap" }, { SVM_EXIT_CR8_WRITE_TRAP, "write_cr8_trap" }, { SVM_EXIT_INVPCID, "invpcid" }, { SVM_EXIT_NPF, "npf" }, { SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, { SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" }, { SVM_EXIT_VMGEXIT, "vmgexit" }, { SVM_VMGEXIT_MMIO_READ, "vmgexit_mmio_read" }, { SVM_VMGEXIT_MMIO_WRITE, "vmgexit_mmio_write" }, { SVM_VMGEXIT_NMI_COMPLETE, "vmgexit_nmi_complete" }, { SVM_VMGEXIT_AP_HLT_LOOP, "vmgexit_ap_hlt_loop" }, { SVM_VMGEXIT_AP_JUMP_TABLE, "vmgexit_ap_jump_table" }, { SVM_EXIT_ERR, "invalid_guest_state" }
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/swab.h b/i686-linux-musl/include/asm-x86/asm/swab.h
new file mode 100644
index 0000000..24fd5e3
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/swab.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 _ASM_X86_SWAB_H
+#define _ASM_X86_SWAB_H
+#include <linux/types.h>
+#include <linux/compiler.h>
+#define __arch_swab32 __arch_swab32
+#ifdef __i386__
+#else
+#endif
+#define __arch_swab64 __arch_swab64
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/termbits.h b/i686-linux-musl/include/asm-x86/asm/termbits.h
new file mode 100644
index 0000000..42af6fe
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/termbits.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-generic/termbits.h>
diff --git a/i686-linux-musl/include/asm-x86/asm/termios.h b/i686-linux-musl/include/asm-x86/asm/termios.h
new file mode 100644
index 0000000..feca4c6
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/termios.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-generic/termios.h>
diff --git a/i686-linux-musl/include/asm-x86/asm/types.h b/i686-linux-musl/include/asm-x86/asm/types.h
new file mode 100644
index 0000000..8250f43
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/types.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-generic/types.h>
diff --git a/i686-linux-musl/include/asm-x86/asm/ucontext.h b/i686-linux-musl/include/asm-x86/asm/ucontext.h
new file mode 100644
index 0000000..1bb416f
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/ucontext.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 _ASM_X86_UCONTEXT_H
+#define _ASM_X86_UCONTEXT_H
+#define UC_FP_XSTATE 0x1
+#ifdef __x86_64__
+#define UC_SIGCONTEXT_SS 0x2
+#define UC_STRICT_RESTORE_SS 0x4
+#endif
+#include <asm-generic/ucontext.h>
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/unistd.h b/i686-linux-musl/include/asm-x86/asm/unistd.h
new file mode 100644
index 0000000..8cab383
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/unistd.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_ASM_X86_UNISTD_H
+#define _UAPI_ASM_X86_UNISTD_H
+#define __X32_SYSCALL_BIT 0x40000000
+#ifdef __i386__
+#include <asm/unistd_32.h>
+#elif defined(__ILP32__)
+#include <asm/unistd_x32.h>
+#else
+#include <asm/unistd_64.h>
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/unistd_32.h b/i686-linux-musl/include/asm-x86/asm/unistd_32.h
new file mode 100644
index 0000000..3a353fe
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/unistd_32.h
@@ -0,0 +1,460 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_UNISTD_32_H
+#define _UAPI_ASM_UNISTD_32_H
+#define __NR_restart_syscall 0
+#define __NR_exit 1
+#define __NR_fork 2
+#define __NR_read 3
+#define __NR_write 4
+#define __NR_open 5
+#define __NR_close 6
+#define __NR_waitpid 7
+#define __NR_creat 8
+#define __NR_link 9
+#define __NR_unlink 10
+#define __NR_execve 11
+#define __NR_chdir 12
+#define __NR_time 13
+#define __NR_mknod 14
+#define __NR_chmod 15
+#define __NR_lchown 16
+#define __NR_break 17
+#define __NR_oldstat 18
+#define __NR_lseek 19
+#define __NR_getpid 20
+#define __NR_mount 21
+#define __NR_umount 22
+#define __NR_setuid 23
+#define __NR_getuid 24
+#define __NR_stime 25
+#define __NR_ptrace 26
+#define __NR_alarm 27
+#define __NR_oldfstat 28
+#define __NR_pause 29
+#define __NR_utime 30
+#define __NR_stty 31
+#define __NR_gtty 32
+#define __NR_access 33
+#define __NR_nice 34
+#define __NR_ftime 35
+#define __NR_sync 36
+#define __NR_kill 37
+#define __NR_rename 38
+#define __NR_mkdir 39
+#define __NR_rmdir 40
+#define __NR_dup 41
+#define __NR_pipe 42
+#define __NR_times 43
+#define __NR_prof 44
+#define __NR_brk 45
+#define __NR_setgid 46
+#define __NR_getgid 47
+#define __NR_signal 48
+#define __NR_geteuid 49
+#define __NR_getegid 50
+#define __NR_acct 51
+#define __NR_umount2 52
+#define __NR_lock 53
+#define __NR_ioctl 54
+#define __NR_fcntl 55
+#define __NR_mpx 56
+#define __NR_setpgid 57
+#define __NR_ulimit 58
+#define __NR_oldolduname 59
+#define __NR_umask 60
+#define __NR_chroot 61
+#define __NR_ustat 62
+#define __NR_dup2 63
+#define __NR_getppid 64
+#define __NR_getpgrp 65
+#define __NR_setsid 66
+#define __NR_sigaction 67
+#define __NR_sgetmask 68
+#define __NR_ssetmask 69
+#define __NR_setreuid 70
+#define __NR_setregid 71
+#define __NR_sigsuspend 72
+#define __NR_sigpending 73
+#define __NR_sethostname 74
+#define __NR_setrlimit 75
+#define __NR_getrlimit 76
+#define __NR_getrusage 77
+#define __NR_gettimeofday 78
+#define __NR_settimeofday 79
+#define __NR_getgroups 80
+#define __NR_setgroups 81
+#define __NR_select 82
+#define __NR_symlink 83
+#define __NR_oldlstat 84
+#define __NR_readlink 85
+#define __NR_uselib 86
+#define __NR_swapon 87
+#define __NR_reboot 88
+#define __NR_readdir 89
+#define __NR_mmap 90
+#define __NR_munmap 91
+#define __NR_truncate 92
+#define __NR_ftruncate 93
+#define __NR_fchmod 94
+#define __NR_fchown 95
+#define __NR_getpriority 96
+#define __NR_setpriority 97
+#define __NR_profil 98
+#define __NR_statfs 99
+#define __NR_fstatfs 100
+#define __NR_ioperm 101
+#define __NR_socketcall 102
+#define __NR_syslog 103
+#define __NR_setitimer 104
+#define __NR_getitimer 105
+#define __NR_stat 106
+#define __NR_lstat 107
+#define __NR_fstat 108
+#define __NR_olduname 109
+#define __NR_iopl 110
+#define __NR_vhangup 111
+#define __NR_idle 112
+#define __NR_vm86old 113
+#define __NR_wait4 114
+#define __NR_swapoff 115
+#define __NR_sysinfo 116
+#define __NR_ipc 117
+#define __NR_fsync 118
+#define __NR_sigreturn 119
+#define __NR_clone 120
+#define __NR_setdomainname 121
+#define __NR_uname 122
+#define __NR_modify_ldt 123
+#define __NR_adjtimex 124
+#define __NR_mprotect 125
+#define __NR_sigprocmask 126
+#define __NR_create_module 127
+#define __NR_init_module 128
+#define __NR_delete_module 129
+#define __NR_get_kernel_syms 130
+#define __NR_quotactl 131
+#define __NR_getpgid 132
+#define __NR_fchdir 133
+#define __NR_bdflush 134
+#define __NR_sysfs 135
+#define __NR_personality 136
+#define __NR_afs_syscall 137
+#define __NR_setfsuid 138
+#define __NR_setfsgid 139
+#define __NR__llseek 140
+#define __NR_getdents 141
+#define __NR__newselect 142
+#define __NR_flock 143
+#define __NR_msync 144
+#define __NR_readv 145
+#define __NR_writev 146
+#define __NR_getsid 147
+#define __NR_fdatasync 148
+#define __NR__sysctl 149
+#define __NR_mlock 150
+#define __NR_munlock 151
+#define __NR_mlockall 152
+#define __NR_munlockall 153
+#define __NR_sched_setparam 154
+#define __NR_sched_getparam 155
+#define __NR_sched_setscheduler 156
+#define __NR_sched_getscheduler 157
+#define __NR_sched_yield 158
+#define __NR_sched_get_priority_max 159
+#define __NR_sched_get_priority_min 160
+#define __NR_sched_rr_get_interval 161
+#define __NR_nanosleep 162
+#define __NR_mremap 163
+#define __NR_setresuid 164
+#define __NR_getresuid 165
+#define __NR_vm86 166
+#define __NR_query_module 167
+#define __NR_poll 168
+#define __NR_nfsservctl 169
+#define __NR_setresgid 170
+#define __NR_getresgid 171
+#define __NR_prctl 172
+#define __NR_rt_sigreturn 173
+#define __NR_rt_sigaction 174
+#define __NR_rt_sigprocmask 175
+#define __NR_rt_sigpending 176
+#define __NR_rt_sigtimedwait 177
+#define __NR_rt_sigqueueinfo 178
+#define __NR_rt_sigsuspend 179
+#define __NR_pread64 180
+#define __NR_pwrite64 181
+#define __NR_chown 182
+#define __NR_getcwd 183
+#define __NR_capget 184
+#define __NR_capset 185
+#define __NR_sigaltstack 186
+#define __NR_sendfile 187
+#define __NR_getpmsg 188
+#define __NR_putpmsg 189
+#define __NR_vfork 190
+#define __NR_ugetrlimit 191
+#define __NR_mmap2 192
+#define __NR_truncate64 193
+#define __NR_ftruncate64 194
+#define __NR_stat64 195
+#define __NR_lstat64 196
+#define __NR_fstat64 197
+#define __NR_lchown32 198
+#define __NR_getuid32 199
+#define __NR_getgid32 200
+#define __NR_geteuid32 201
+#define __NR_getegid32 202
+#define __NR_setreuid32 203
+#define __NR_setregid32 204
+#define __NR_getgroups32 205
+#define __NR_setgroups32 206
+#define __NR_fchown32 207
+#define __NR_setresuid32 208
+#define __NR_getresuid32 209
+#define __NR_setresgid32 210
+#define __NR_getresgid32 211
+#define __NR_chown32 212
+#define __NR_setuid32 213
+#define __NR_setgid32 214
+#define __NR_setfsuid32 215
+#define __NR_setfsgid32 216
+#define __NR_pivot_root 217
+#define __NR_mincore 218
+#define __NR_madvise 219
+#define __NR_getdents64 220
+#define __NR_fcntl64 221
+#define __NR_gettid 224
+#define __NR_readahead 225
+#define __NR_setxattr 226
+#define __NR_lsetxattr 227
+#define __NR_fsetxattr 228
+#define __NR_getxattr 229
+#define __NR_lgetxattr 230
+#define __NR_fgetxattr 231
+#define __NR_listxattr 232
+#define __NR_llistxattr 233
+#define __NR_flistxattr 234
+#define __NR_removexattr 235
+#define __NR_lremovexattr 236
+#define __NR_fremovexattr 237
+#define __NR_tkill 238
+#define __NR_sendfile64 239
+#define __NR_futex 240
+#define __NR_sched_setaffinity 241
+#define __NR_sched_getaffinity 242
+#define __NR_set_thread_area 243
+#define __NR_get_thread_area 244
+#define __NR_io_setup 245
+#define __NR_io_destroy 246
+#define __NR_io_getevents 247
+#define __NR_io_submit 248
+#define __NR_io_cancel 249
+#define __NR_fadvise64 250
+#define __NR_exit_group 252
+#define __NR_lookup_dcookie 253
+#define __NR_epoll_create 254
+#define __NR_epoll_ctl 255
+#define __NR_epoll_wait 256
+#define __NR_remap_file_pages 257
+#define __NR_set_tid_address 258
+#define __NR_timer_create 259
+#define __NR_timer_settime 260
+#define __NR_timer_gettime 261
+#define __NR_timer_getoverrun 262
+#define __NR_timer_delete 263
+#define __NR_clock_settime 264
+#define __NR_clock_gettime 265
+#define __NR_clock_getres 266
+#define __NR_clock_nanosleep 267
+#define __NR_statfs64 268
+#define __NR_fstatfs64 269
+#define __NR_tgkill 270
+#define __NR_utimes 271
+#define __NR_fadvise64_64 272
+#define __NR_vserver 273
+#define __NR_mbind 274
+#define __NR_get_mempolicy 275
+#define __NR_set_mempolicy 276
+#define __NR_mq_open 277
+#define __NR_mq_unlink 278
+#define __NR_mq_timedsend 279
+#define __NR_mq_timedreceive 280
+#define __NR_mq_notify 281
+#define __NR_mq_getsetattr 282
+#define __NR_kexec_load 283
+#define __NR_waitid 284
+#define __NR_add_key 286
+#define __NR_request_key 287
+#define __NR_keyctl 288
+#define __NR_ioprio_set 289
+#define __NR_ioprio_get 290
+#define __NR_inotify_init 291
+#define __NR_inotify_add_watch 292
+#define __NR_inotify_rm_watch 293
+#define __NR_migrate_pages 294
+#define __NR_openat 295
+#define __NR_mkdirat 296
+#define __NR_mknodat 297
+#define __NR_fchownat 298
+#define __NR_futimesat 299
+#define __NR_fstatat64 300
+#define __NR_unlinkat 301
+#define __NR_renameat 302
+#define __NR_linkat 303
+#define __NR_symlinkat 304
+#define __NR_readlinkat 305
+#define __NR_fchmodat 306
+#define __NR_faccessat 307
+#define __NR_pselect6 308
+#define __NR_ppoll 309
+#define __NR_unshare 310
+#define __NR_set_robust_list 311
+#define __NR_get_robust_list 312
+#define __NR_splice 313
+#define __NR_sync_file_range 314
+#define __NR_tee 315
+#define __NR_vmsplice 316
+#define __NR_move_pages 317
+#define __NR_getcpu 318
+#define __NR_epoll_pwait 319
+#define __NR_utimensat 320
+#define __NR_signalfd 321
+#define __NR_timerfd_create 322
+#define __NR_eventfd 323
+#define __NR_fallocate 324
+#define __NR_timerfd_settime 325
+#define __NR_timerfd_gettime 326
+#define __NR_signalfd4 327
+#define __NR_eventfd2 328
+#define __NR_epoll_create1 329
+#define __NR_dup3 330
+#define __NR_pipe2 331
+#define __NR_inotify_init1 332
+#define __NR_preadv 333
+#define __NR_pwritev 334
+#define __NR_rt_tgsigqueueinfo 335
+#define __NR_perf_event_open 336
+#define __NR_recvmmsg 337
+#define __NR_fanotify_init 338
+#define __NR_fanotify_mark 339
+#define __NR_prlimit64 340
+#define __NR_name_to_handle_at 341
+#define __NR_open_by_handle_at 342
+#define __NR_clock_adjtime 343
+#define __NR_syncfs 344
+#define __NR_sendmmsg 345
+#define __NR_setns 346
+#define __NR_process_vm_readv 347
+#define __NR_process_vm_writev 348
+#define __NR_kcmp 349
+#define __NR_finit_module 350
+#define __NR_sched_setattr 351
+#define __NR_sched_getattr 352
+#define __NR_renameat2 353
+#define __NR_seccomp 354
+#define __NR_getrandom 355
+#define __NR_memfd_create 356
+#define __NR_bpf 357
+#define __NR_execveat 358
+#define __NR_socket 359
+#define __NR_socketpair 360
+#define __NR_bind 361
+#define __NR_connect 362
+#define __NR_listen 363
+#define __NR_accept4 364
+#define __NR_getsockopt 365
+#define __NR_setsockopt 366
+#define __NR_getsockname 367
+#define __NR_getpeername 368
+#define __NR_sendto 369
+#define __NR_sendmsg 370
+#define __NR_recvfrom 371
+#define __NR_recvmsg 372
+#define __NR_shutdown 373
+#define __NR_userfaultfd 374
+#define __NR_membarrier 375
+#define __NR_mlock2 376
+#define __NR_copy_file_range 377
+#define __NR_preadv2 378
+#define __NR_pwritev2 379
+#define __NR_pkey_mprotect 380
+#define __NR_pkey_alloc 381
+#define __NR_pkey_free 382
+#define __NR_statx 383
+#define __NR_arch_prctl 384
+#define __NR_io_pgetevents 385
+#define __NR_rseq 386
+#define __NR_semget 393
+#define __NR_semctl 394
+#define __NR_shmget 395
+#define __NR_shmctl 396
+#define __NR_shmat 397
+#define __NR_shmdt 398
+#define __NR_msgget 399
+#define __NR_msgsnd 400
+#define __NR_msgrcv 401
+#define __NR_msgctl 402
+#define __NR_clock_gettime64 403
+#define __NR_clock_settime64 404
+#define __NR_clock_adjtime64 405
+#define __NR_clock_getres_time64 406
+#define __NR_clock_nanosleep_time64 407
+#define __NR_timer_gettime64 408
+#define __NR_timer_settime64 409
+#define __NR_timerfd_gettime64 410
+#define __NR_timerfd_settime64 411
+#define __NR_utimensat_time64 412
+#define __NR_pselect6_time64 413
+#define __NR_ppoll_time64 414
+#define __NR_io_pgetevents_time64 416
+#define __NR_recvmmsg_time64 417
+#define __NR_mq_timedsend_time64 418
+#define __NR_mq_timedreceive_time64 419
+#define __NR_semtimedop_time64 420
+#define __NR_rt_sigtimedwait_time64 421
+#define __NR_futex_time64 422
+#define __NR_sched_rr_get_interval_time64 423
+#define __NR_pidfd_send_signal 424
+#define __NR_io_uring_setup 425
+#define __NR_io_uring_enter 426
+#define __NR_io_uring_register 427
+#define __NR_open_tree 428
+#define __NR_move_mount 429
+#define __NR_fsopen 430
+#define __NR_fsconfig 431
+#define __NR_fsmount 432
+#define __NR_fspick 433
+#define __NR_pidfd_open 434
+#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
+#define __NR_process_madvise 440
+#define __NR_epoll_pwait2 441
+#define __NR_mount_setattr 442
+#define __NR_quotactl_fd 443
+#define __NR_landlock_create_ruleset 444
+#define __NR_landlock_add_rule 445
+#define __NR_landlock_restrict_self 446
+#define __NR_memfd_secret 447
+#define __NR_process_mrelease 448
+#define __NR_futex_waitv 449
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/unistd_64.h b/i686-linux-musl/include/asm-x86/asm/unistd_64.h
new file mode 100644
index 0000000..5fa4d2c
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/unistd_64.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_ASM_UNISTD_64_H
+#define _UAPI_ASM_UNISTD_64_H
+#define __NR_read 0
+#define __NR_write 1
+#define __NR_open 2
+#define __NR_close 3
+#define __NR_stat 4
+#define __NR_fstat 5
+#define __NR_lstat 6
+#define __NR_poll 7
+#define __NR_lseek 8
+#define __NR_mmap 9
+#define __NR_mprotect 10
+#define __NR_munmap 11
+#define __NR_brk 12
+#define __NR_rt_sigaction 13
+#define __NR_rt_sigprocmask 14
+#define __NR_rt_sigreturn 15
+#define __NR_ioctl 16
+#define __NR_pread64 17
+#define __NR_pwrite64 18
+#define __NR_readv 19
+#define __NR_writev 20
+#define __NR_access 21
+#define __NR_pipe 22
+#define __NR_select 23
+#define __NR_sched_yield 24
+#define __NR_mremap 25
+#define __NR_msync 26
+#define __NR_mincore 27
+#define __NR_madvise 28
+#define __NR_shmget 29
+#define __NR_shmat 30
+#define __NR_shmctl 31
+#define __NR_dup 32
+#define __NR_dup2 33
+#define __NR_pause 34
+#define __NR_nanosleep 35
+#define __NR_getitimer 36
+#define __NR_alarm 37
+#define __NR_setitimer 38
+#define __NR_getpid 39
+#define __NR_sendfile 40
+#define __NR_socket 41
+#define __NR_connect 42
+#define __NR_accept 43
+#define __NR_sendto 44
+#define __NR_recvfrom 45
+#define __NR_sendmsg 46
+#define __NR_recvmsg 47
+#define __NR_shutdown 48
+#define __NR_bind 49
+#define __NR_listen 50
+#define __NR_getsockname 51
+#define __NR_getpeername 52
+#define __NR_socketpair 53
+#define __NR_setsockopt 54
+#define __NR_getsockopt 55
+#define __NR_clone 56
+#define __NR_fork 57
+#define __NR_vfork 58
+#define __NR_execve 59
+#define __NR_exit 60
+#define __NR_wait4 61
+#define __NR_kill 62
+#define __NR_uname 63
+#define __NR_semget 64
+#define __NR_semop 65
+#define __NR_semctl 66
+#define __NR_shmdt 67
+#define __NR_msgget 68
+#define __NR_msgsnd 69
+#define __NR_msgrcv 70
+#define __NR_msgctl 71
+#define __NR_fcntl 72
+#define __NR_flock 73
+#define __NR_fsync 74
+#define __NR_fdatasync 75
+#define __NR_truncate 76
+#define __NR_ftruncate 77
+#define __NR_getdents 78
+#define __NR_getcwd 79
+#define __NR_chdir 80
+#define __NR_fchdir 81
+#define __NR_rename 82
+#define __NR_mkdir 83
+#define __NR_rmdir 84
+#define __NR_creat 85
+#define __NR_link 86
+#define __NR_unlink 87
+#define __NR_symlink 88
+#define __NR_readlink 89
+#define __NR_chmod 90
+#define __NR_fchmod 91
+#define __NR_chown 92
+#define __NR_fchown 93
+#define __NR_lchown 94
+#define __NR_umask 95
+#define __NR_gettimeofday 96
+#define __NR_getrlimit 97
+#define __NR_getrusage 98
+#define __NR_sysinfo 99
+#define __NR_times 100
+#define __NR_ptrace 101
+#define __NR_getuid 102
+#define __NR_syslog 103
+#define __NR_getgid 104
+#define __NR_setuid 105
+#define __NR_setgid 106
+#define __NR_geteuid 107
+#define __NR_getegid 108
+#define __NR_setpgid 109
+#define __NR_getppid 110
+#define __NR_getpgrp 111
+#define __NR_setsid 112
+#define __NR_setreuid 113
+#define __NR_setregid 114
+#define __NR_getgroups 115
+#define __NR_setgroups 116
+#define __NR_setresuid 117
+#define __NR_getresuid 118
+#define __NR_setresgid 119
+#define __NR_getresgid 120
+#define __NR_getpgid 121
+#define __NR_setfsuid 122
+#define __NR_setfsgid 123
+#define __NR_getsid 124
+#define __NR_capget 125
+#define __NR_capset 126
+#define __NR_rt_sigpending 127
+#define __NR_rt_sigtimedwait 128
+#define __NR_rt_sigqueueinfo 129
+#define __NR_rt_sigsuspend 130
+#define __NR_sigaltstack 131
+#define __NR_utime 132
+#define __NR_mknod 133
+#define __NR_uselib 134
+#define __NR_personality 135
+#define __NR_ustat 136
+#define __NR_statfs 137
+#define __NR_fstatfs 138
+#define __NR_sysfs 139
+#define __NR_getpriority 140
+#define __NR_setpriority 141
+#define __NR_sched_setparam 142
+#define __NR_sched_getparam 143
+#define __NR_sched_setscheduler 144
+#define __NR_sched_getscheduler 145
+#define __NR_sched_get_priority_max 146
+#define __NR_sched_get_priority_min 147
+#define __NR_sched_rr_get_interval 148
+#define __NR_mlock 149
+#define __NR_munlock 150
+#define __NR_mlockall 151
+#define __NR_munlockall 152
+#define __NR_vhangup 153
+#define __NR_modify_ldt 154
+#define __NR_pivot_root 155
+#define __NR__sysctl 156
+#define __NR_prctl 157
+#define __NR_arch_prctl 158
+#define __NR_adjtimex 159
+#define __NR_setrlimit 160
+#define __NR_chroot 161
+#define __NR_sync 162
+#define __NR_acct 163
+#define __NR_settimeofday 164
+#define __NR_mount 165
+#define __NR_umount2 166
+#define __NR_swapon 167
+#define __NR_swapoff 168
+#define __NR_reboot 169
+#define __NR_sethostname 170
+#define __NR_setdomainname 171
+#define __NR_iopl 172
+#define __NR_ioperm 173
+#define __NR_create_module 174
+#define __NR_init_module 175
+#define __NR_delete_module 176
+#define __NR_get_kernel_syms 177
+#define __NR_query_module 178
+#define __NR_quotactl 179
+#define __NR_nfsservctl 180
+#define __NR_getpmsg 181
+#define __NR_putpmsg 182
+#define __NR_afs_syscall 183
+#define __NR_tuxcall 184
+#define __NR_security 185
+#define __NR_gettid 186
+#define __NR_readahead 187
+#define __NR_setxattr 188
+#define __NR_lsetxattr 189
+#define __NR_fsetxattr 190
+#define __NR_getxattr 191
+#define __NR_lgetxattr 192
+#define __NR_fgetxattr 193
+#define __NR_listxattr 194
+#define __NR_llistxattr 195
+#define __NR_flistxattr 196
+#define __NR_removexattr 197
+#define __NR_lremovexattr 198
+#define __NR_fremovexattr 199
+#define __NR_tkill 200
+#define __NR_time 201
+#define __NR_futex 202
+#define __NR_sched_setaffinity 203
+#define __NR_sched_getaffinity 204
+#define __NR_set_thread_area 205
+#define __NR_io_setup 206
+#define __NR_io_destroy 207
+#define __NR_io_getevents 208
+#define __NR_io_submit 209
+#define __NR_io_cancel 210
+#define __NR_get_thread_area 211
+#define __NR_lookup_dcookie 212
+#define __NR_epoll_create 213
+#define __NR_epoll_ctl_old 214
+#define __NR_epoll_wait_old 215
+#define __NR_remap_file_pages 216
+#define __NR_getdents64 217
+#define __NR_set_tid_address 218
+#define __NR_restart_syscall 219
+#define __NR_semtimedop 220
+#define __NR_fadvise64 221
+#define __NR_timer_create 222
+#define __NR_timer_settime 223
+#define __NR_timer_gettime 224
+#define __NR_timer_getoverrun 225
+#define __NR_timer_delete 226
+#define __NR_clock_settime 227
+#define __NR_clock_gettime 228
+#define __NR_clock_getres 229
+#define __NR_clock_nanosleep 230
+#define __NR_exit_group 231
+#define __NR_epoll_wait 232
+#define __NR_epoll_ctl 233
+#define __NR_tgkill 234
+#define __NR_utimes 235
+#define __NR_vserver 236
+#define __NR_mbind 237
+#define __NR_set_mempolicy 238
+#define __NR_get_mempolicy 239
+#define __NR_mq_open 240
+#define __NR_mq_unlink 241
+#define __NR_mq_timedsend 242
+#define __NR_mq_timedreceive 243
+#define __NR_mq_notify 244
+#define __NR_mq_getsetattr 245
+#define __NR_kexec_load 246
+#define __NR_waitid 247
+#define __NR_add_key 248
+#define __NR_request_key 249
+#define __NR_keyctl 250
+#define __NR_ioprio_set 251
+#define __NR_ioprio_get 252
+#define __NR_inotify_init 253
+#define __NR_inotify_add_watch 254
+#define __NR_inotify_rm_watch 255
+#define __NR_migrate_pages 256
+#define __NR_openat 257
+#define __NR_mkdirat 258
+#define __NR_mknodat 259
+#define __NR_fchownat 260
+#define __NR_futimesat 261
+#define __NR_newfstatat 262
+#define __NR_unlinkat 263
+#define __NR_renameat 264
+#define __NR_linkat 265
+#define __NR_symlinkat 266
+#define __NR_readlinkat 267
+#define __NR_fchmodat 268
+#define __NR_faccessat 269
+#define __NR_pselect6 270
+#define __NR_ppoll 271
+#define __NR_unshare 272
+#define __NR_set_robust_list 273
+#define __NR_get_robust_list 274
+#define __NR_splice 275
+#define __NR_tee 276
+#define __NR_sync_file_range 277
+#define __NR_vmsplice 278
+#define __NR_move_pages 279
+#define __NR_utimensat 280
+#define __NR_epoll_pwait 281
+#define __NR_signalfd 282
+#define __NR_timerfd_create 283
+#define __NR_eventfd 284
+#define __NR_fallocate 285
+#define __NR_timerfd_settime 286
+#define __NR_timerfd_gettime 287
+#define __NR_accept4 288
+#define __NR_signalfd4 289
+#define __NR_eventfd2 290
+#define __NR_epoll_create1 291
+#define __NR_dup3 292
+#define __NR_pipe2 293
+#define __NR_inotify_init1 294
+#define __NR_preadv 295
+#define __NR_pwritev 296
+#define __NR_rt_tgsigqueueinfo 297
+#define __NR_perf_event_open 298
+#define __NR_recvmmsg 299
+#define __NR_fanotify_init 300
+#define __NR_fanotify_mark 301
+#define __NR_prlimit64 302
+#define __NR_name_to_handle_at 303
+#define __NR_open_by_handle_at 304
+#define __NR_clock_adjtime 305
+#define __NR_syncfs 306
+#define __NR_sendmmsg 307
+#define __NR_setns 308
+#define __NR_getcpu 309
+#define __NR_process_vm_readv 310
+#define __NR_process_vm_writev 311
+#define __NR_kcmp 312
+#define __NR_finit_module 313
+#define __NR_sched_setattr 314
+#define __NR_sched_getattr 315
+#define __NR_renameat2 316
+#define __NR_seccomp 317
+#define __NR_getrandom 318
+#define __NR_memfd_create 319
+#define __NR_kexec_file_load 320
+#define __NR_bpf 321
+#define __NR_execveat 322
+#define __NR_userfaultfd 323
+#define __NR_membarrier 324
+#define __NR_mlock2 325
+#define __NR_copy_file_range 326
+#define __NR_preadv2 327
+#define __NR_pwritev2 328
+#define __NR_pkey_mprotect 329
+#define __NR_pkey_alloc 330
+#define __NR_pkey_free 331
+#define __NR_statx 332
+#define __NR_io_pgetevents 333
+#define __NR_rseq 334
+#define __NR_pidfd_send_signal 424
+#define __NR_io_uring_setup 425
+#define __NR_io_uring_enter 426
+#define __NR_io_uring_register 427
+#define __NR_open_tree 428
+#define __NR_move_mount 429
+#define __NR_fsopen 430
+#define __NR_fsconfig 431
+#define __NR_fsmount 432
+#define __NR_fspick 433
+#define __NR_pidfd_open 434
+#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
+#define __NR_process_madvise 440
+#define __NR_epoll_pwait2 441
+#define __NR_mount_setattr 442
+#define __NR_quotactl_fd 443
+#define __NR_landlock_create_ruleset 444
+#define __NR_landlock_add_rule 445
+#define __NR_landlock_restrict_self 446
+#define __NR_memfd_secret 447
+#define __NR_process_mrelease 448
+#define __NR_futex_waitv 449
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/unistd_x32.h b/i686-linux-musl/include/asm-x86/asm/unistd_x32.h
new file mode 100644
index 0000000..b7abf12
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/unistd_x32.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_ASM_UNISTD_X32_H
+#define _UAPI_ASM_UNISTD_X32_H
+#define __NR_read (__X32_SYSCALL_BIT + 0)
+#define __NR_write (__X32_SYSCALL_BIT + 1)
+#define __NR_open (__X32_SYSCALL_BIT + 2)
+#define __NR_close (__X32_SYSCALL_BIT + 3)
+#define __NR_stat (__X32_SYSCALL_BIT + 4)
+#define __NR_fstat (__X32_SYSCALL_BIT + 5)
+#define __NR_lstat (__X32_SYSCALL_BIT + 6)
+#define __NR_poll (__X32_SYSCALL_BIT + 7)
+#define __NR_lseek (__X32_SYSCALL_BIT + 8)
+#define __NR_mmap (__X32_SYSCALL_BIT + 9)
+#define __NR_mprotect (__X32_SYSCALL_BIT + 10)
+#define __NR_munmap (__X32_SYSCALL_BIT + 11)
+#define __NR_brk (__X32_SYSCALL_BIT + 12)
+#define __NR_rt_sigprocmask (__X32_SYSCALL_BIT + 14)
+#define __NR_pread64 (__X32_SYSCALL_BIT + 17)
+#define __NR_pwrite64 (__X32_SYSCALL_BIT + 18)
+#define __NR_access (__X32_SYSCALL_BIT + 21)
+#define __NR_pipe (__X32_SYSCALL_BIT + 22)
+#define __NR_select (__X32_SYSCALL_BIT + 23)
+#define __NR_sched_yield (__X32_SYSCALL_BIT + 24)
+#define __NR_mremap (__X32_SYSCALL_BIT + 25)
+#define __NR_msync (__X32_SYSCALL_BIT + 26)
+#define __NR_mincore (__X32_SYSCALL_BIT + 27)
+#define __NR_madvise (__X32_SYSCALL_BIT + 28)
+#define __NR_shmget (__X32_SYSCALL_BIT + 29)
+#define __NR_shmat (__X32_SYSCALL_BIT + 30)
+#define __NR_shmctl (__X32_SYSCALL_BIT + 31)
+#define __NR_dup (__X32_SYSCALL_BIT + 32)
+#define __NR_dup2 (__X32_SYSCALL_BIT + 33)
+#define __NR_pause (__X32_SYSCALL_BIT + 34)
+#define __NR_nanosleep (__X32_SYSCALL_BIT + 35)
+#define __NR_getitimer (__X32_SYSCALL_BIT + 36)
+#define __NR_alarm (__X32_SYSCALL_BIT + 37)
+#define __NR_setitimer (__X32_SYSCALL_BIT + 38)
+#define __NR_getpid (__X32_SYSCALL_BIT + 39)
+#define __NR_sendfile (__X32_SYSCALL_BIT + 40)
+#define __NR_socket (__X32_SYSCALL_BIT + 41)
+#define __NR_connect (__X32_SYSCALL_BIT + 42)
+#define __NR_accept (__X32_SYSCALL_BIT + 43)
+#define __NR_sendto (__X32_SYSCALL_BIT + 44)
+#define __NR_shutdown (__X32_SYSCALL_BIT + 48)
+#define __NR_bind (__X32_SYSCALL_BIT + 49)
+#define __NR_listen (__X32_SYSCALL_BIT + 50)
+#define __NR_getsockname (__X32_SYSCALL_BIT + 51)
+#define __NR_getpeername (__X32_SYSCALL_BIT + 52)
+#define __NR_socketpair (__X32_SYSCALL_BIT + 53)
+#define __NR_clone (__X32_SYSCALL_BIT + 56)
+#define __NR_fork (__X32_SYSCALL_BIT + 57)
+#define __NR_vfork (__X32_SYSCALL_BIT + 58)
+#define __NR_exit (__X32_SYSCALL_BIT + 60)
+#define __NR_wait4 (__X32_SYSCALL_BIT + 61)
+#define __NR_kill (__X32_SYSCALL_BIT + 62)
+#define __NR_uname (__X32_SYSCALL_BIT + 63)
+#define __NR_semget (__X32_SYSCALL_BIT + 64)
+#define __NR_semop (__X32_SYSCALL_BIT + 65)
+#define __NR_semctl (__X32_SYSCALL_BIT + 66)
+#define __NR_shmdt (__X32_SYSCALL_BIT + 67)
+#define __NR_msgget (__X32_SYSCALL_BIT + 68)
+#define __NR_msgsnd (__X32_SYSCALL_BIT + 69)
+#define __NR_msgrcv (__X32_SYSCALL_BIT + 70)
+#define __NR_msgctl (__X32_SYSCALL_BIT + 71)
+#define __NR_fcntl (__X32_SYSCALL_BIT + 72)
+#define __NR_flock (__X32_SYSCALL_BIT + 73)
+#define __NR_fsync (__X32_SYSCALL_BIT + 74)
+#define __NR_fdatasync (__X32_SYSCALL_BIT + 75)
+#define __NR_truncate (__X32_SYSCALL_BIT + 76)
+#define __NR_ftruncate (__X32_SYSCALL_BIT + 77)
+#define __NR_getdents (__X32_SYSCALL_BIT + 78)
+#define __NR_getcwd (__X32_SYSCALL_BIT + 79)
+#define __NR_chdir (__X32_SYSCALL_BIT + 80)
+#define __NR_fchdir (__X32_SYSCALL_BIT + 81)
+#define __NR_rename (__X32_SYSCALL_BIT + 82)
+#define __NR_mkdir (__X32_SYSCALL_BIT + 83)
+#define __NR_rmdir (__X32_SYSCALL_BIT + 84)
+#define __NR_creat (__X32_SYSCALL_BIT + 85)
+#define __NR_link (__X32_SYSCALL_BIT + 86)
+#define __NR_unlink (__X32_SYSCALL_BIT + 87)
+#define __NR_symlink (__X32_SYSCALL_BIT + 88)
+#define __NR_readlink (__X32_SYSCALL_BIT + 89)
+#define __NR_chmod (__X32_SYSCALL_BIT + 90)
+#define __NR_fchmod (__X32_SYSCALL_BIT + 91)
+#define __NR_chown (__X32_SYSCALL_BIT + 92)
+#define __NR_fchown (__X32_SYSCALL_BIT + 93)
+#define __NR_lchown (__X32_SYSCALL_BIT + 94)
+#define __NR_umask (__X32_SYSCALL_BIT + 95)
+#define __NR_gettimeofday (__X32_SYSCALL_BIT + 96)
+#define __NR_getrlimit (__X32_SYSCALL_BIT + 97)
+#define __NR_getrusage (__X32_SYSCALL_BIT + 98)
+#define __NR_sysinfo (__X32_SYSCALL_BIT + 99)
+#define __NR_times (__X32_SYSCALL_BIT + 100)
+#define __NR_getuid (__X32_SYSCALL_BIT + 102)
+#define __NR_syslog (__X32_SYSCALL_BIT + 103)
+#define __NR_getgid (__X32_SYSCALL_BIT + 104)
+#define __NR_setuid (__X32_SYSCALL_BIT + 105)
+#define __NR_setgid (__X32_SYSCALL_BIT + 106)
+#define __NR_geteuid (__X32_SYSCALL_BIT + 107)
+#define __NR_getegid (__X32_SYSCALL_BIT + 108)
+#define __NR_setpgid (__X32_SYSCALL_BIT + 109)
+#define __NR_getppid (__X32_SYSCALL_BIT + 110)
+#define __NR_getpgrp (__X32_SYSCALL_BIT + 111)
+#define __NR_setsid (__X32_SYSCALL_BIT + 112)
+#define __NR_setreuid (__X32_SYSCALL_BIT + 113)
+#define __NR_setregid (__X32_SYSCALL_BIT + 114)
+#define __NR_getgroups (__X32_SYSCALL_BIT + 115)
+#define __NR_setgroups (__X32_SYSCALL_BIT + 116)
+#define __NR_setresuid (__X32_SYSCALL_BIT + 117)
+#define __NR_getresuid (__X32_SYSCALL_BIT + 118)
+#define __NR_setresgid (__X32_SYSCALL_BIT + 119)
+#define __NR_getresgid (__X32_SYSCALL_BIT + 120)
+#define __NR_getpgid (__X32_SYSCALL_BIT + 121)
+#define __NR_setfsuid (__X32_SYSCALL_BIT + 122)
+#define __NR_setfsgid (__X32_SYSCALL_BIT + 123)
+#define __NR_getsid (__X32_SYSCALL_BIT + 124)
+#define __NR_capget (__X32_SYSCALL_BIT + 125)
+#define __NR_capset (__X32_SYSCALL_BIT + 126)
+#define __NR_rt_sigsuspend (__X32_SYSCALL_BIT + 130)
+#define __NR_utime (__X32_SYSCALL_BIT + 132)
+#define __NR_mknod (__X32_SYSCALL_BIT + 133)
+#define __NR_personality (__X32_SYSCALL_BIT + 135)
+#define __NR_ustat (__X32_SYSCALL_BIT + 136)
+#define __NR_statfs (__X32_SYSCALL_BIT + 137)
+#define __NR_fstatfs (__X32_SYSCALL_BIT + 138)
+#define __NR_sysfs (__X32_SYSCALL_BIT + 139)
+#define __NR_getpriority (__X32_SYSCALL_BIT + 140)
+#define __NR_setpriority (__X32_SYSCALL_BIT + 141)
+#define __NR_sched_setparam (__X32_SYSCALL_BIT + 142)
+#define __NR_sched_getparam (__X32_SYSCALL_BIT + 143)
+#define __NR_sched_setscheduler (__X32_SYSCALL_BIT + 144)
+#define __NR_sched_getscheduler (__X32_SYSCALL_BIT + 145)
+#define __NR_sched_get_priority_max (__X32_SYSCALL_BIT + 146)
+#define __NR_sched_get_priority_min (__X32_SYSCALL_BIT + 147)
+#define __NR_sched_rr_get_interval (__X32_SYSCALL_BIT + 148)
+#define __NR_mlock (__X32_SYSCALL_BIT + 149)
+#define __NR_munlock (__X32_SYSCALL_BIT + 150)
+#define __NR_mlockall (__X32_SYSCALL_BIT + 151)
+#define __NR_munlockall (__X32_SYSCALL_BIT + 152)
+#define __NR_vhangup (__X32_SYSCALL_BIT + 153)
+#define __NR_modify_ldt (__X32_SYSCALL_BIT + 154)
+#define __NR_pivot_root (__X32_SYSCALL_BIT + 155)
+#define __NR_prctl (__X32_SYSCALL_BIT + 157)
+#define __NR_arch_prctl (__X32_SYSCALL_BIT + 158)
+#define __NR_adjtimex (__X32_SYSCALL_BIT + 159)
+#define __NR_setrlimit (__X32_SYSCALL_BIT + 160)
+#define __NR_chroot (__X32_SYSCALL_BIT + 161)
+#define __NR_sync (__X32_SYSCALL_BIT + 162)
+#define __NR_acct (__X32_SYSCALL_BIT + 163)
+#define __NR_settimeofday (__X32_SYSCALL_BIT + 164)
+#define __NR_mount (__X32_SYSCALL_BIT + 165)
+#define __NR_umount2 (__X32_SYSCALL_BIT + 166)
+#define __NR_swapon (__X32_SYSCALL_BIT + 167)
+#define __NR_swapoff (__X32_SYSCALL_BIT + 168)
+#define __NR_reboot (__X32_SYSCALL_BIT + 169)
+#define __NR_sethostname (__X32_SYSCALL_BIT + 170)
+#define __NR_setdomainname (__X32_SYSCALL_BIT + 171)
+#define __NR_iopl (__X32_SYSCALL_BIT + 172)
+#define __NR_ioperm (__X32_SYSCALL_BIT + 173)
+#define __NR_init_module (__X32_SYSCALL_BIT + 175)
+#define __NR_delete_module (__X32_SYSCALL_BIT + 176)
+#define __NR_quotactl (__X32_SYSCALL_BIT + 179)
+#define __NR_getpmsg (__X32_SYSCALL_BIT + 181)
+#define __NR_putpmsg (__X32_SYSCALL_BIT + 182)
+#define __NR_afs_syscall (__X32_SYSCALL_BIT + 183)
+#define __NR_tuxcall (__X32_SYSCALL_BIT + 184)
+#define __NR_security (__X32_SYSCALL_BIT + 185)
+#define __NR_gettid (__X32_SYSCALL_BIT + 186)
+#define __NR_readahead (__X32_SYSCALL_BIT + 187)
+#define __NR_setxattr (__X32_SYSCALL_BIT + 188)
+#define __NR_lsetxattr (__X32_SYSCALL_BIT + 189)
+#define __NR_fsetxattr (__X32_SYSCALL_BIT + 190)
+#define __NR_getxattr (__X32_SYSCALL_BIT + 191)
+#define __NR_lgetxattr (__X32_SYSCALL_BIT + 192)
+#define __NR_fgetxattr (__X32_SYSCALL_BIT + 193)
+#define __NR_listxattr (__X32_SYSCALL_BIT + 194)
+#define __NR_llistxattr (__X32_SYSCALL_BIT + 195)
+#define __NR_flistxattr (__X32_SYSCALL_BIT + 196)
+#define __NR_removexattr (__X32_SYSCALL_BIT + 197)
+#define __NR_lremovexattr (__X32_SYSCALL_BIT + 198)
+#define __NR_fremovexattr (__X32_SYSCALL_BIT + 199)
+#define __NR_tkill (__X32_SYSCALL_BIT + 200)
+#define __NR_time (__X32_SYSCALL_BIT + 201)
+#define __NR_futex (__X32_SYSCALL_BIT + 202)
+#define __NR_sched_setaffinity (__X32_SYSCALL_BIT + 203)
+#define __NR_sched_getaffinity (__X32_SYSCALL_BIT + 204)
+#define __NR_io_destroy (__X32_SYSCALL_BIT + 207)
+#define __NR_io_getevents (__X32_SYSCALL_BIT + 208)
+#define __NR_io_cancel (__X32_SYSCALL_BIT + 210)
+#define __NR_lookup_dcookie (__X32_SYSCALL_BIT + 212)
+#define __NR_epoll_create (__X32_SYSCALL_BIT + 213)
+#define __NR_remap_file_pages (__X32_SYSCALL_BIT + 216)
+#define __NR_getdents64 (__X32_SYSCALL_BIT + 217)
+#define __NR_set_tid_address (__X32_SYSCALL_BIT + 218)
+#define __NR_restart_syscall (__X32_SYSCALL_BIT + 219)
+#define __NR_semtimedop (__X32_SYSCALL_BIT + 220)
+#define __NR_fadvise64 (__X32_SYSCALL_BIT + 221)
+#define __NR_timer_settime (__X32_SYSCALL_BIT + 223)
+#define __NR_timer_gettime (__X32_SYSCALL_BIT + 224)
+#define __NR_timer_getoverrun (__X32_SYSCALL_BIT + 225)
+#define __NR_timer_delete (__X32_SYSCALL_BIT + 226)
+#define __NR_clock_settime (__X32_SYSCALL_BIT + 227)
+#define __NR_clock_gettime (__X32_SYSCALL_BIT + 228)
+#define __NR_clock_getres (__X32_SYSCALL_BIT + 229)
+#define __NR_clock_nanosleep (__X32_SYSCALL_BIT + 230)
+#define __NR_exit_group (__X32_SYSCALL_BIT + 231)
+#define __NR_epoll_wait (__X32_SYSCALL_BIT + 232)
+#define __NR_epoll_ctl (__X32_SYSCALL_BIT + 233)
+#define __NR_tgkill (__X32_SYSCALL_BIT + 234)
+#define __NR_utimes (__X32_SYSCALL_BIT + 235)
+#define __NR_mbind (__X32_SYSCALL_BIT + 237)
+#define __NR_set_mempolicy (__X32_SYSCALL_BIT + 238)
+#define __NR_get_mempolicy (__X32_SYSCALL_BIT + 239)
+#define __NR_mq_open (__X32_SYSCALL_BIT + 240)
+#define __NR_mq_unlink (__X32_SYSCALL_BIT + 241)
+#define __NR_mq_timedsend (__X32_SYSCALL_BIT + 242)
+#define __NR_mq_timedreceive (__X32_SYSCALL_BIT + 243)
+#define __NR_mq_getsetattr (__X32_SYSCALL_BIT + 245)
+#define __NR_add_key (__X32_SYSCALL_BIT + 248)
+#define __NR_request_key (__X32_SYSCALL_BIT + 249)
+#define __NR_keyctl (__X32_SYSCALL_BIT + 250)
+#define __NR_ioprio_set (__X32_SYSCALL_BIT + 251)
+#define __NR_ioprio_get (__X32_SYSCALL_BIT + 252)
+#define __NR_inotify_init (__X32_SYSCALL_BIT + 253)
+#define __NR_inotify_add_watch (__X32_SYSCALL_BIT + 254)
+#define __NR_inotify_rm_watch (__X32_SYSCALL_BIT + 255)
+#define __NR_migrate_pages (__X32_SYSCALL_BIT + 256)
+#define __NR_openat (__X32_SYSCALL_BIT + 257)
+#define __NR_mkdirat (__X32_SYSCALL_BIT + 258)
+#define __NR_mknodat (__X32_SYSCALL_BIT + 259)
+#define __NR_fchownat (__X32_SYSCALL_BIT + 260)
+#define __NR_futimesat (__X32_SYSCALL_BIT + 261)
+#define __NR_newfstatat (__X32_SYSCALL_BIT + 262)
+#define __NR_unlinkat (__X32_SYSCALL_BIT + 263)
+#define __NR_renameat (__X32_SYSCALL_BIT + 264)
+#define __NR_linkat (__X32_SYSCALL_BIT + 265)
+#define __NR_symlinkat (__X32_SYSCALL_BIT + 266)
+#define __NR_readlinkat (__X32_SYSCALL_BIT + 267)
+#define __NR_fchmodat (__X32_SYSCALL_BIT + 268)
+#define __NR_faccessat (__X32_SYSCALL_BIT + 269)
+#define __NR_pselect6 (__X32_SYSCALL_BIT + 270)
+#define __NR_ppoll (__X32_SYSCALL_BIT + 271)
+#define __NR_unshare (__X32_SYSCALL_BIT + 272)
+#define __NR_splice (__X32_SYSCALL_BIT + 275)
+#define __NR_tee (__X32_SYSCALL_BIT + 276)
+#define __NR_sync_file_range (__X32_SYSCALL_BIT + 277)
+#define __NR_utimensat (__X32_SYSCALL_BIT + 280)
+#define __NR_epoll_pwait (__X32_SYSCALL_BIT + 281)
+#define __NR_signalfd (__X32_SYSCALL_BIT + 282)
+#define __NR_timerfd_create (__X32_SYSCALL_BIT + 283)
+#define __NR_eventfd (__X32_SYSCALL_BIT + 284)
+#define __NR_fallocate (__X32_SYSCALL_BIT + 285)
+#define __NR_timerfd_settime (__X32_SYSCALL_BIT + 286)
+#define __NR_timerfd_gettime (__X32_SYSCALL_BIT + 287)
+#define __NR_accept4 (__X32_SYSCALL_BIT + 288)
+#define __NR_signalfd4 (__X32_SYSCALL_BIT + 289)
+#define __NR_eventfd2 (__X32_SYSCALL_BIT + 290)
+#define __NR_epoll_create1 (__X32_SYSCALL_BIT + 291)
+#define __NR_dup3 (__X32_SYSCALL_BIT + 292)
+#define __NR_pipe2 (__X32_SYSCALL_BIT + 293)
+#define __NR_inotify_init1 (__X32_SYSCALL_BIT + 294)
+#define __NR_perf_event_open (__X32_SYSCALL_BIT + 298)
+#define __NR_fanotify_init (__X32_SYSCALL_BIT + 300)
+#define __NR_fanotify_mark (__X32_SYSCALL_BIT + 301)
+#define __NR_prlimit64 (__X32_SYSCALL_BIT + 302)
+#define __NR_name_to_handle_at (__X32_SYSCALL_BIT + 303)
+#define __NR_open_by_handle_at (__X32_SYSCALL_BIT + 304)
+#define __NR_clock_adjtime (__X32_SYSCALL_BIT + 305)
+#define __NR_syncfs (__X32_SYSCALL_BIT + 306)
+#define __NR_setns (__X32_SYSCALL_BIT + 308)
+#define __NR_getcpu (__X32_SYSCALL_BIT + 309)
+#define __NR_kcmp (__X32_SYSCALL_BIT + 312)
+#define __NR_finit_module (__X32_SYSCALL_BIT + 313)
+#define __NR_sched_setattr (__X32_SYSCALL_BIT + 314)
+#define __NR_sched_getattr (__X32_SYSCALL_BIT + 315)
+#define __NR_renameat2 (__X32_SYSCALL_BIT + 316)
+#define __NR_seccomp (__X32_SYSCALL_BIT + 317)
+#define __NR_getrandom (__X32_SYSCALL_BIT + 318)
+#define __NR_memfd_create (__X32_SYSCALL_BIT + 319)
+#define __NR_kexec_file_load (__X32_SYSCALL_BIT + 320)
+#define __NR_bpf (__X32_SYSCALL_BIT + 321)
+#define __NR_userfaultfd (__X32_SYSCALL_BIT + 323)
+#define __NR_membarrier (__X32_SYSCALL_BIT + 324)
+#define __NR_mlock2 (__X32_SYSCALL_BIT + 325)
+#define __NR_copy_file_range (__X32_SYSCALL_BIT + 326)
+#define __NR_pkey_mprotect (__X32_SYSCALL_BIT + 329)
+#define __NR_pkey_alloc (__X32_SYSCALL_BIT + 330)
+#define __NR_pkey_free (__X32_SYSCALL_BIT + 331)
+#define __NR_statx (__X32_SYSCALL_BIT + 332)
+#define __NR_io_pgetevents (__X32_SYSCALL_BIT + 333)
+#define __NR_rseq (__X32_SYSCALL_BIT + 334)
+#define __NR_pidfd_send_signal (__X32_SYSCALL_BIT + 424)
+#define __NR_io_uring_setup (__X32_SYSCALL_BIT + 425)
+#define __NR_io_uring_enter (__X32_SYSCALL_BIT + 426)
+#define __NR_io_uring_register (__X32_SYSCALL_BIT + 427)
+#define __NR_open_tree (__X32_SYSCALL_BIT + 428)
+#define __NR_move_mount (__X32_SYSCALL_BIT + 429)
+#define __NR_fsopen (__X32_SYSCALL_BIT + 430)
+#define __NR_fsconfig (__X32_SYSCALL_BIT + 431)
+#define __NR_fsmount (__X32_SYSCALL_BIT + 432)
+#define __NR_fspick (__X32_SYSCALL_BIT + 433)
+#define __NR_pidfd_open (__X32_SYSCALL_BIT + 434)
+#define __NR_clone3 (__X32_SYSCALL_BIT + 435)
+#define __NR_close_range (__X32_SYSCALL_BIT + 436)
+#define __NR_openat2 (__X32_SYSCALL_BIT + 437)
+#define __NR_pidfd_getfd (__X32_SYSCALL_BIT + 438)
+#define __NR_faccessat2 (__X32_SYSCALL_BIT + 439)
+#define __NR_process_madvise (__X32_SYSCALL_BIT + 440)
+#define __NR_epoll_pwait2 (__X32_SYSCALL_BIT + 441)
+#define __NR_mount_setattr (__X32_SYSCALL_BIT + 442)
+#define __NR_quotactl_fd (__X32_SYSCALL_BIT + 443)
+#define __NR_landlock_create_ruleset (__X32_SYSCALL_BIT + 444)
+#define __NR_landlock_add_rule (__X32_SYSCALL_BIT + 445)
+#define __NR_landlock_restrict_self (__X32_SYSCALL_BIT + 446)
+#define __NR_memfd_secret (__X32_SYSCALL_BIT + 447)
+#define __NR_process_mrelease (__X32_SYSCALL_BIT + 448)
+#define __NR_futex_waitv (__X32_SYSCALL_BIT + 449)
+#define __NR_rt_sigaction (__X32_SYSCALL_BIT + 512)
+#define __NR_rt_sigreturn (__X32_SYSCALL_BIT + 513)
+#define __NR_ioctl (__X32_SYSCALL_BIT + 514)
+#define __NR_readv (__X32_SYSCALL_BIT + 515)
+#define __NR_writev (__X32_SYSCALL_BIT + 516)
+#define __NR_recvfrom (__X32_SYSCALL_BIT + 517)
+#define __NR_sendmsg (__X32_SYSCALL_BIT + 518)
+#define __NR_recvmsg (__X32_SYSCALL_BIT + 519)
+#define __NR_execve (__X32_SYSCALL_BIT + 520)
+#define __NR_ptrace (__X32_SYSCALL_BIT + 521)
+#define __NR_rt_sigpending (__X32_SYSCALL_BIT + 522)
+#define __NR_rt_sigtimedwait (__X32_SYSCALL_BIT + 523)
+#define __NR_rt_sigqueueinfo (__X32_SYSCALL_BIT + 524)
+#define __NR_sigaltstack (__X32_SYSCALL_BIT + 525)
+#define __NR_timer_create (__X32_SYSCALL_BIT + 526)
+#define __NR_mq_notify (__X32_SYSCALL_BIT + 527)
+#define __NR_kexec_load (__X32_SYSCALL_BIT + 528)
+#define __NR_waitid (__X32_SYSCALL_BIT + 529)
+#define __NR_set_robust_list (__X32_SYSCALL_BIT + 530)
+#define __NR_get_robust_list (__X32_SYSCALL_BIT + 531)
+#define __NR_vmsplice (__X32_SYSCALL_BIT + 532)
+#define __NR_move_pages (__X32_SYSCALL_BIT + 533)
+#define __NR_preadv (__X32_SYSCALL_BIT + 534)
+#define __NR_pwritev (__X32_SYSCALL_BIT + 535)
+#define __NR_rt_tgsigqueueinfo (__X32_SYSCALL_BIT + 536)
+#define __NR_recvmmsg (__X32_SYSCALL_BIT + 537)
+#define __NR_sendmmsg (__X32_SYSCALL_BIT + 538)
+#define __NR_process_vm_readv (__X32_SYSCALL_BIT + 539)
+#define __NR_process_vm_writev (__X32_SYSCALL_BIT + 540)
+#define __NR_setsockopt (__X32_SYSCALL_BIT + 541)
+#define __NR_getsockopt (__X32_SYSCALL_BIT + 542)
+#define __NR_io_setup (__X32_SYSCALL_BIT + 543)
+#define __NR_io_submit (__X32_SYSCALL_BIT + 544)
+#define __NR_execveat (__X32_SYSCALL_BIT + 545)
+#define __NR_preadv2 (__X32_SYSCALL_BIT + 546)
+#define __NR_pwritev2 (__X32_SYSCALL_BIT + 547)
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/vm86.h b/i686-linux-musl/include/asm-x86/asm/vm86.h
new file mode 100644
index 0000000..7193484
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/vm86.h
@@ -0,0 +1,96 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_X86_VM86_H
+#define _UAPI_ASM_X86_VM86_H
+#include <asm/processor-flags.h>
+#define BIOSSEG 0x0f000
+#define CPU_086 0
+#define CPU_186 1
+#define CPU_286 2
+#define CPU_386 3
+#define CPU_486 4
+#define CPU_586 5
+#define VM86_TYPE(retval) ((retval) & 0xff)
+#define VM86_ARG(retval) ((retval) >> 8)
+#define VM86_SIGNAL 0
+#define VM86_UNKNOWN 1
+#define VM86_INTx 2
+#define VM86_STI 3
+#define VM86_PICRETURN 4
+#define VM86_TRAP 6
+#define VM86_PLUS_INSTALL_CHECK 0
+#define VM86_ENTER 1
+#define VM86_ENTER_NO_BYPASS 2
+#define VM86_REQUEST_IRQ 3
+#define VM86_FREE_IRQ 4
+#define VM86_GET_IRQ_BITS 5
+#define VM86_GET_AND_RESET_IRQ 6
+struct vm86_regs {
+  long ebx;
+  long ecx;
+  long edx;
+  long esi;
+  long edi;
+  long ebp;
+  long eax;
+  long __null_ds;
+  long __null_es;
+  long __null_fs;
+  long __null_gs;
+  long orig_eax;
+  long eip;
+  unsigned short cs, __csh;
+  long eflags;
+  long esp;
+  unsigned short ss, __ssh;
+  unsigned short es, __esh;
+  unsigned short ds, __dsh;
+  unsigned short fs, __fsh;
+  unsigned short gs, __gsh;
+};
+struct revectored_struct {
+  unsigned long __map[8];
+};
+struct vm86_struct {
+  struct vm86_regs regs;
+  unsigned long flags;
+  unsigned long screen_bitmap;
+  unsigned long cpu_type;
+  struct revectored_struct int_revectored;
+  struct revectored_struct int21_revectored;
+};
+#define VM86_SCREEN_BITMAP 0x0001
+struct vm86plus_info_struct {
+  unsigned long force_return_for_pic : 1;
+  unsigned long vm86dbg_active : 1;
+  unsigned long vm86dbg_TFpendig : 1;
+  unsigned long unused : 28;
+  unsigned long is_vm86pus : 1;
+  unsigned char vm86dbg_intxxtab[32];
+};
+struct vm86plus_struct {
+  struct vm86_regs regs;
+  unsigned long flags;
+  unsigned long screen_bitmap;
+  unsigned long cpu_type;
+  struct revectored_struct int_revectored;
+  struct revectored_struct int21_revectored;
+  struct vm86plus_info_struct vm86plus;
+};
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/vmx.h b/i686-linux-musl/include/asm-x86/asm/vmx.h
new file mode 100644
index 0000000..6c07d4c
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/vmx.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 _UAPIVMX_H
+#define _UAPIVMX_H
+#define VMX_EXIT_REASONS_FAILED_VMENTRY 0x80000000
+#define VMX_EXIT_REASONS_SGX_ENCLAVE_MODE 0x08000000
+#define EXIT_REASON_EXCEPTION_NMI 0
+#define EXIT_REASON_EXTERNAL_INTERRUPT 1
+#define EXIT_REASON_TRIPLE_FAULT 2
+#define EXIT_REASON_INIT_SIGNAL 3
+#define EXIT_REASON_SIPI_SIGNAL 4
+#define EXIT_REASON_INTERRUPT_WINDOW 7
+#define EXIT_REASON_NMI_WINDOW 8
+#define EXIT_REASON_TASK_SWITCH 9
+#define EXIT_REASON_CPUID 10
+#define EXIT_REASON_HLT 12
+#define EXIT_REASON_INVD 13
+#define EXIT_REASON_INVLPG 14
+#define EXIT_REASON_RDPMC 15
+#define EXIT_REASON_RDTSC 16
+#define EXIT_REASON_VMCALL 18
+#define EXIT_REASON_VMCLEAR 19
+#define EXIT_REASON_VMLAUNCH 20
+#define EXIT_REASON_VMPTRLD 21
+#define EXIT_REASON_VMPTRST 22
+#define EXIT_REASON_VMREAD 23
+#define EXIT_REASON_VMRESUME 24
+#define EXIT_REASON_VMWRITE 25
+#define EXIT_REASON_VMOFF 26
+#define EXIT_REASON_VMON 27
+#define EXIT_REASON_CR_ACCESS 28
+#define EXIT_REASON_DR_ACCESS 29
+#define EXIT_REASON_IO_INSTRUCTION 30
+#define EXIT_REASON_MSR_READ 31
+#define EXIT_REASON_MSR_WRITE 32
+#define EXIT_REASON_INVALID_STATE 33
+#define EXIT_REASON_MSR_LOAD_FAIL 34
+#define EXIT_REASON_MWAIT_INSTRUCTION 36
+#define EXIT_REASON_MONITOR_TRAP_FLAG 37
+#define EXIT_REASON_MONITOR_INSTRUCTION 39
+#define EXIT_REASON_PAUSE_INSTRUCTION 40
+#define EXIT_REASON_MCE_DURING_VMENTRY 41
+#define EXIT_REASON_TPR_BELOW_THRESHOLD 43
+#define EXIT_REASON_APIC_ACCESS 44
+#define EXIT_REASON_EOI_INDUCED 45
+#define EXIT_REASON_GDTR_IDTR 46
+#define EXIT_REASON_LDTR_TR 47
+#define EXIT_REASON_EPT_VIOLATION 48
+#define EXIT_REASON_EPT_MISCONFIG 49
+#define EXIT_REASON_INVEPT 50
+#define EXIT_REASON_RDTSCP 51
+#define EXIT_REASON_PREEMPTION_TIMER 52
+#define EXIT_REASON_INVVPID 53
+#define EXIT_REASON_WBINVD 54
+#define EXIT_REASON_XSETBV 55
+#define EXIT_REASON_APIC_WRITE 56
+#define EXIT_REASON_RDRAND 57
+#define EXIT_REASON_INVPCID 58
+#define EXIT_REASON_VMFUNC 59
+#define EXIT_REASON_ENCLS 60
+#define EXIT_REASON_RDSEED 61
+#define EXIT_REASON_PML_FULL 62
+#define EXIT_REASON_XSAVES 63
+#define EXIT_REASON_XRSTORS 64
+#define EXIT_REASON_UMWAIT 67
+#define EXIT_REASON_TPAUSE 68
+#define EXIT_REASON_BUS_LOCK 74
+#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_INIT_SIGNAL, "INIT_SIGNAL" }, { EXIT_REASON_SIPI_SIGNAL, "SIPI_SIGNAL" }, { EXIT_REASON_INTERRUPT_WINDOW, "INTERRUPT_WINDOW" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVD, "INVD" }, { EXIT_REASON_INVLPG, "INVLPG" }, { EXIT_REASON_RDPMC, "RDPMC" }, { EXIT_REASON_RDTSC, "RDTSC" }, { EXIT_REASON_VMCALL, "VMCALL" }, { EXIT_REASON_VMCLEAR, "VMCLEAR" }, { EXIT_REASON_VMLAUNCH, "VMLAUNCH" }, { EXIT_REASON_VMPTRLD, "VMPTRLD" }, { EXIT_REASON_VMPTRST, "VMPTRST" }, { EXIT_REASON_VMREAD, "VMREAD" }, { EXIT_REASON_VMRESUME, "VMRESUME" }, { EXIT_REASON_VMWRITE, "VMWRITE" }, { EXIT_REASON_VMOFF, "VMOFF" }, { EXIT_REASON_VMON, "VMON" }, { EXIT_REASON_CR_ACCESS, "CR_ACCESS" }, { EXIT_REASON_DR_ACCESS, "DR_ACCESS" }, { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" }, { EXIT_REASON_MSR_READ, "MSR_READ" }, { EXIT_REASON_MSR_WRITE, "MSR_WRITE" }, { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" }, { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" }, { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" }, { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" }, { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" }, { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_RDTSCP, "RDTSCP" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_XSETBV, "XSETBV" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_RDRAND, "RDRAND" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_VMFUNC, "VMFUNC" }, { EXIT_REASON_ENCLS, "ENCLS" }, { EXIT_REASON_RDSEED, "RDSEED" }, { EXIT_REASON_PML_FULL, "PML_FULL" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }, { EXIT_REASON_UMWAIT, "UMWAIT" }, { EXIT_REASON_TPAUSE, "TPAUSE" }, { EXIT_REASON_BUS_LOCK, "BUS_LOCK" }
+#define VMX_EXIT_REASON_FLAGS { VMX_EXIT_REASONS_FAILED_VMENTRY, "FAILED_VMENTRY" }
+#define VMX_ABORT_SAVE_GUEST_MSR_FAIL 1
+#define VMX_ABORT_LOAD_HOST_PDPTE_FAIL 2
+#define VMX_ABORT_LOAD_HOST_MSR_FAIL 4
+#endif
diff --git a/i686-linux-musl/include/asm-x86/asm/vsyscall.h b/i686-linux-musl/include/asm-x86/asm/vsyscall.h
new file mode 100644
index 0000000..56abbbc
--- /dev/null
+++ b/i686-linux-musl/include/asm-x86/asm/vsyscall.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_ASM_X86_VSYSCALL_H
+#define _UAPI_ASM_X86_VSYSCALL_H
+enum vsyscall_num {
+  __NR_vgettimeofday,
+  __NR_vtime,
+  __NR_vgetcpu,
+};
+#define VSYSCALL_ADDR (- 10UL << 20)
+#endif
diff --git a/i686-linux-musl/include/asm/a.out.h b/i686-linux-musl/include/asm/a.out.h
new file mode 100644
index 0000000..3a1b845
--- /dev/null
+++ b/i686-linux-musl/include/asm/a.out.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 _ASM_X86_A_OUT_H
+#define _ASM_X86_A_OUT_H
+struct exec {
+  unsigned int a_info;
+  unsigned a_text;
+  unsigned a_data;
+  unsigned a_bss;
+  unsigned a_syms;
+  unsigned a_entry;
+  unsigned a_trsize;
+  unsigned a_drsize;
+};
+#define N_TRSIZE(a) ((a).a_trsize)
+#define N_DRSIZE(a) ((a).a_drsize)
+#define N_SYMSIZE(a) ((a).a_syms)
+#endif
diff --git a/i686-linux-musl/include/asm/auxvec.h b/i686-linux-musl/include/asm/auxvec.h
new file mode 100644
index 0000000..dd86783
--- /dev/null
+++ b/i686-linux-musl/include/asm/auxvec.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 _ASM_X86_AUXVEC_H
+#define _ASM_X86_AUXVEC_H
+#ifdef __i386__
+#define AT_SYSINFO 32
+#endif
+#define AT_SYSINFO_EHDR 33
+#define AT_VECTOR_SIZE_ARCH 3
+#endif
diff --git a/i686-linux-musl/include/asm/bitsperlong.h b/i686-linux-musl/include/asm/bitsperlong.h
new file mode 100644
index 0000000..7eca377
--- /dev/null
+++ b/i686-linux-musl/include/asm/bitsperlong.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 __ASM_X86_BITSPERLONG_H
+#define __ASM_X86_BITSPERLONG_H
+#if defined(__x86_64__) && !defined(__ILP32__)
+#define __BITS_PER_LONG 64
+#else
+#define __BITS_PER_LONG 32
+#endif
+#include <asm-generic/bitsperlong.h>
+#endif
diff --git a/i686-linux-musl/include/asm/boot.h b/i686-linux-musl/include/asm/boot.h
new file mode 100644
index 0000000..7cbb691
--- /dev/null
+++ b/i686-linux-musl/include/asm/boot.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_ASM_X86_BOOT_H
+#define _UAPI_ASM_X86_BOOT_H
+#define NORMAL_VGA 0xffff
+#define EXTENDED_VGA 0xfffe
+#define ASK_VGA 0xfffd
+#endif
diff --git a/i686-linux-musl/include/asm/bootparam.h b/i686-linux-musl/include/asm/bootparam.h
new file mode 100644
index 0000000..7401135
--- /dev/null
+++ b/i686-linux-musl/include/asm/bootparam.h
@@ -0,0 +1,195 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_X86_BOOTPARAM_H
+#define _ASM_X86_BOOTPARAM_H
+#define SETUP_NONE 0
+#define SETUP_E820_EXT 1
+#define SETUP_DTB 2
+#define SETUP_PCI 3
+#define SETUP_EFI 4
+#define SETUP_APPLE_PROPERTIES 5
+#define SETUP_JAILHOUSE 6
+#define SETUP_INDIRECT (1 << 31)
+#define SETUP_TYPE_MAX (SETUP_INDIRECT | SETUP_JAILHOUSE)
+#define RAMDISK_IMAGE_START_MASK 0x07FF
+#define RAMDISK_PROMPT_FLAG 0x8000
+#define RAMDISK_LOAD_FLAG 0x4000
+#define LOADED_HIGH (1 << 0)
+#define KASLR_FLAG (1 << 1)
+#define QUIET_FLAG (1 << 5)
+#define KEEP_SEGMENTS (1 << 6)
+#define CAN_USE_HEAP (1 << 7)
+#define XLF_KERNEL_64 (1 << 0)
+#define XLF_CAN_BE_LOADED_ABOVE_4G (1 << 1)
+#define XLF_EFI_HANDOVER_32 (1 << 2)
+#define XLF_EFI_HANDOVER_64 (1 << 3)
+#define XLF_EFI_KEXEC (1 << 4)
+#define XLF_5LEVEL (1 << 5)
+#define XLF_5LEVEL_ENABLED (1 << 6)
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#include <linux/screen_info.h>
+#include <linux/apm_bios.h>
+#include <linux/edd.h>
+#include <asm/ist.h>
+#include <video/edid.h>
+struct setup_data {
+  __u64 next;
+  __u32 type;
+  __u32 len;
+  __u8 data[0];
+};
+struct setup_indirect {
+  __u32 type;
+  __u32 reserved;
+  __u64 len;
+  __u64 addr;
+};
+struct setup_header {
+  __u8 setup_sects;
+  __u16 root_flags;
+  __u32 syssize;
+  __u16 ram_size;
+  __u16 vid_mode;
+  __u16 root_dev;
+  __u16 boot_flag;
+  __u16 jump;
+  __u32 header;
+  __u16 version;
+  __u32 realmode_swtch;
+  __u16 start_sys_seg;
+  __u16 kernel_version;
+  __u8 type_of_loader;
+  __u8 loadflags;
+  __u16 setup_move_size;
+  __u32 code32_start;
+  __u32 ramdisk_image;
+  __u32 ramdisk_size;
+  __u32 bootsect_kludge;
+  __u16 heap_end_ptr;
+  __u8 ext_loader_ver;
+  __u8 ext_loader_type;
+  __u32 cmd_line_ptr;
+  __u32 initrd_addr_max;
+  __u32 kernel_alignment;
+  __u8 relocatable_kernel;
+  __u8 min_alignment;
+  __u16 xloadflags;
+  __u32 cmdline_size;
+  __u32 hardware_subarch;
+  __u64 hardware_subarch_data;
+  __u32 payload_offset;
+  __u32 payload_length;
+  __u64 setup_data;
+  __u64 pref_address;
+  __u32 init_size;
+  __u32 handover_offset;
+  __u32 kernel_info_offset;
+} __attribute__((packed));
+struct sys_desc_table {
+  __u16 length;
+  __u8 table[14];
+};
+struct olpc_ofw_header {
+  __u32 ofw_magic;
+  __u32 ofw_version;
+  __u32 cif_handler;
+  __u32 irq_desc_table;
+} __attribute__((packed));
+struct efi_info {
+  __u32 efi_loader_signature;
+  __u32 efi_systab;
+  __u32 efi_memdesc_size;
+  __u32 efi_memdesc_version;
+  __u32 efi_memmap;
+  __u32 efi_memmap_size;
+  __u32 efi_systab_hi;
+  __u32 efi_memmap_hi;
+};
+#define E820_MAX_ENTRIES_ZEROPAGE 128
+struct boot_e820_entry {
+  __u64 addr;
+  __u64 size;
+  __u32 type;
+} __attribute__((packed));
+#define JAILHOUSE_SETUP_REQUIRED_VERSION 1
+struct jailhouse_setup_data {
+  struct {
+    __u16 version;
+    __u16 compatible_version;
+  } __attribute__((packed)) hdr;
+  struct {
+    __u16 pm_timer_address;
+    __u16 num_cpus;
+    __u64 pci_mmconfig_base;
+    __u32 tsc_khz;
+    __u32 apic_khz;
+    __u8 standard_ioapic;
+    __u8 cpu_ids[255];
+  } __attribute__((packed)) v1;
+  struct {
+    __u32 flags;
+  } __attribute__((packed)) v2;
+} __attribute__((packed));
+struct boot_params {
+  struct screen_info screen_info;
+  struct apm_bios_info apm_bios_info;
+  __u8 _pad2[4];
+  __u64 tboot_addr;
+  struct ist_info ist_info;
+  __u64 acpi_rsdp_addr;
+  __u8 _pad3[8];
+  __u8 hd0_info[16];
+  __u8 hd1_info[16];
+  struct sys_desc_table sys_desc_table;
+  struct olpc_ofw_header olpc_ofw_header;
+  __u32 ext_ramdisk_image;
+  __u32 ext_ramdisk_size;
+  __u32 ext_cmd_line_ptr;
+  __u8 _pad4[116];
+  struct edid_info edid_info;
+  struct efi_info efi_info;
+  __u32 alt_mem_k;
+  __u32 scratch;
+  __u8 e820_entries;
+  __u8 eddbuf_entries;
+  __u8 edd_mbr_sig_buf_entries;
+  __u8 kbd_status;
+  __u8 secure_boot;
+  __u8 _pad5[2];
+  __u8 sentinel;
+  __u8 _pad6[1];
+  struct setup_header hdr;
+  __u8 _pad7[0x290 - 0x1f1 - sizeof(struct setup_header)];
+  __u32 edd_mbr_sig_buffer[EDD_MBR_SIG_MAX];
+  struct boot_e820_entry e820_table[E820_MAX_ENTRIES_ZEROPAGE];
+  __u8 _pad8[48];
+  struct edd_info eddbuf[EDDMAXNR];
+  __u8 _pad9[276];
+} __attribute__((packed));
+enum x86_hardware_subarch {
+  X86_SUBARCH_PC = 0,
+  X86_SUBARCH_LGUEST,
+  X86_SUBARCH_XEN,
+  X86_SUBARCH_INTEL_MID,
+  X86_SUBARCH_CE4100,
+  X86_NR_SUBARCHS,
+};
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm/bpf_perf_event.h b/i686-linux-musl/include/asm/bpf_perf_event.h
new file mode 100644
index 0000000..fa7bc48
--- /dev/null
+++ b/i686-linux-musl/include/asm/bpf_perf_event.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-generic/bpf_perf_event.h>
diff --git a/i686-linux-musl/include/asm/byteorder.h b/i686-linux-musl/include/asm/byteorder.h
new file mode 100644
index 0000000..db3ddff
--- /dev/null
+++ b/i686-linux-musl/include/asm/byteorder.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 _ASM_X86_BYTEORDER_H
+#define _ASM_X86_BYTEORDER_H
+#include <linux/byteorder/little_endian.h>
+#endif
diff --git a/i686-linux-musl/include/asm/debugreg.h b/i686-linux-musl/include/asm/debugreg.h
new file mode 100644
index 0000000..360f432
--- /dev/null
+++ b/i686-linux-musl/include/asm/debugreg.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_ASM_X86_DEBUGREG_H
+#define _UAPI_ASM_X86_DEBUGREG_H
+#define DR_FIRSTADDR 0
+#define DR_LASTADDR 3
+#define DR_STATUS 6
+#define DR_CONTROL 7
+#define DR6_RESERVED (0xFFFF0FF0)
+#define DR_TRAP0 (0x1)
+#define DR_TRAP1 (0x2)
+#define DR_TRAP2 (0x4)
+#define DR_TRAP3 (0x8)
+#define DR_TRAP_BITS (DR_TRAP0 | DR_TRAP1 | DR_TRAP2 | DR_TRAP3)
+#define DR_BUS_LOCK (0x800)
+#define DR_STEP (0x4000)
+#define DR_SWITCH (0x8000)
+#define DR_CONTROL_SHIFT 16
+#define DR_CONTROL_SIZE 4
+#define DR_RW_EXECUTE (0x0)
+#define DR_RW_WRITE (0x1)
+#define DR_RW_READ (0x3)
+#define DR_LEN_1 (0x0)
+#define DR_LEN_2 (0x4)
+#define DR_LEN_4 (0xC)
+#define DR_LEN_8 (0x8)
+#define DR_LOCAL_ENABLE_SHIFT 0
+#define DR_GLOBAL_ENABLE_SHIFT 1
+#define DR_LOCAL_ENABLE (0x1)
+#define DR_GLOBAL_ENABLE (0x2)
+#define DR_ENABLE_SIZE 2
+#define DR_LOCAL_ENABLE_MASK (0x55)
+#define DR_GLOBAL_ENABLE_MASK (0xAA)
+#ifdef __i386__
+#define DR_CONTROL_RESERVED (0xFC00)
+#else
+#define DR_CONTROL_RESERVED (0xFFFFFFFF0000FC00UL)
+#endif
+#define DR_LOCAL_SLOWDOWN (0x100)
+#define DR_GLOBAL_SLOWDOWN (0x200)
+#endif
diff --git a/i686-linux-musl/include/asm/e820.h b/i686-linux-musl/include/asm/e820.h
new file mode 100644
index 0000000..8f00c5c
--- /dev/null
+++ b/i686-linux-musl/include/asm/e820.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_ASM_X86_E820_H
+#define _UAPI_ASM_X86_E820_H
+#define E820MAP 0x2d0
+#define E820MAX 128
+#define E820_X_MAX E820MAX
+#define E820NR 0x1e8
+#define E820_RAM 1
+#define E820_RESERVED 2
+#define E820_ACPI 3
+#define E820_NVS 4
+#define E820_UNUSABLE 5
+#define E820_PMEM 7
+#define E820_PRAM 12
+#define E820_RESERVED_KERN 128
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+struct e820entry {
+  __u64 addr;
+  __u64 size;
+  __u32 type;
+} __attribute__((packed));
+struct e820map {
+  __u32 nr_map;
+  struct e820entry map[E820_X_MAX];
+};
+#define ISA_START_ADDRESS 0xa0000
+#define ISA_END_ADDRESS 0x100000
+#define BIOS_BEGIN 0x000a0000
+#define BIOS_END 0x00100000
+#define BIOS_ROM_BASE 0xffe00000
+#define BIOS_ROM_END 0xffffffff
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm/errno.h b/i686-linux-musl/include/asm/errno.h
new file mode 100644
index 0000000..392cd94
--- /dev/null
+++ b/i686-linux-musl/include/asm/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-generic/errno.h>
diff --git a/i686-linux-musl/include/asm/fcntl.h b/i686-linux-musl/include/asm/fcntl.h
new file mode 100644
index 0000000..518d3a7
--- /dev/null
+++ b/i686-linux-musl/include/asm/fcntl.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-generic/fcntl.h>
diff --git a/i686-linux-musl/include/asm/hw_breakpoint.h b/i686-linux-musl/include/asm/hw_breakpoint.h
new file mode 100644
index 0000000..878419c
--- /dev/null
+++ b/i686-linux-musl/include/asm/hw_breakpoint.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/asm/hwcap2.h b/i686-linux-musl/include/asm/hwcap2.h
new file mode 100644
index 0000000..9f715c9
--- /dev/null
+++ b/i686-linux-musl/include/asm/hwcap2.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 _ASM_X86_HWCAP2_H
+#define _ASM_X86_HWCAP2_H
+#include <linux/const.h>
+#define HWCAP2_RING3MWAIT _BITUL(0)
+#define HWCAP2_FSGSBASE _BITUL(1)
+#endif
diff --git a/i686-linux-musl/include/asm/ioctl.h b/i686-linux-musl/include/asm/ioctl.h
new file mode 100644
index 0000000..7b7bd37
--- /dev/null
+++ b/i686-linux-musl/include/asm/ioctl.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-generic/ioctl.h>
diff --git a/i686-linux-musl/include/asm/ioctls.h b/i686-linux-musl/include/asm/ioctls.h
new file mode 100644
index 0000000..0c66935
--- /dev/null
+++ b/i686-linux-musl/include/asm/ioctls.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-generic/ioctls.h>
diff --git a/i686-linux-musl/include/asm/ipcbuf.h b/i686-linux-musl/include/asm/ipcbuf.h
new file mode 100644
index 0000000..0021f14
--- /dev/null
+++ b/i686-linux-musl/include/asm/ipcbuf.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-generic/ipcbuf.h>
diff --git a/i686-linux-musl/include/asm/ist.h b/i686-linux-musl/include/asm/ist.h
new file mode 100644
index 0000000..9648952
--- /dev/null
+++ b/i686-linux-musl/include/asm/ist.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_ASM_X86_IST_H
+#define _UAPI_ASM_X86_IST_H
+#include <linux/types.h>
+struct ist_info {
+  __u32 signature;
+  __u32 command;
+  __u32 event;
+  __u32 perf_level;
+};
+#endif
diff --git a/i686-linux-musl/include/asm/kvm.h b/i686-linux-musl/include/asm/kvm.h
new file mode 100644
index 0000000..fd0f5f8
--- /dev/null
+++ b/i686-linux-musl/include/asm/kvm.h
@@ -0,0 +1,410 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_X86_KVM_H
+#define _ASM_X86_KVM_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define KVM_PIO_PAGE_OFFSET 1
+#define KVM_COALESCED_MMIO_PAGE_OFFSET 2
+#define KVM_DIRTY_LOG_PAGE_OFFSET 64
+#define DE_VECTOR 0
+#define DB_VECTOR 1
+#define BP_VECTOR 3
+#define OF_VECTOR 4
+#define BR_VECTOR 5
+#define UD_VECTOR 6
+#define NM_VECTOR 7
+#define DF_VECTOR 8
+#define TS_VECTOR 10
+#define NP_VECTOR 11
+#define SS_VECTOR 12
+#define GP_VECTOR 13
+#define PF_VECTOR 14
+#define MF_VECTOR 16
+#define AC_VECTOR 17
+#define MC_VECTOR 18
+#define XM_VECTOR 19
+#define VE_VECTOR 20
+#define __KVM_HAVE_PIT
+#define __KVM_HAVE_IOAPIC
+#define __KVM_HAVE_IRQ_LINE
+#define __KVM_HAVE_MSI
+#define __KVM_HAVE_USER_NMI
+#define __KVM_HAVE_GUEST_DEBUG
+#define __KVM_HAVE_MSIX
+#define __KVM_HAVE_MCE
+#define __KVM_HAVE_PIT_STATE2
+#define __KVM_HAVE_XEN_HVM
+#define __KVM_HAVE_VCPU_EVENTS
+#define __KVM_HAVE_DEBUGREGS
+#define __KVM_HAVE_XSAVE
+#define __KVM_HAVE_XCRS
+#define __KVM_HAVE_READONLY_MEM
+#define KVM_NR_INTERRUPTS 256
+struct kvm_memory_alias {
+  __u32 slot;
+  __u32 flags;
+  __u64 guest_phys_addr;
+  __u64 memory_size;
+  __u64 target_phys_addr;
+};
+struct kvm_pic_state {
+  __u8 last_irr;
+  __u8 irr;
+  __u8 imr;
+  __u8 isr;
+  __u8 priority_add;
+  __u8 irq_base;
+  __u8 read_reg_select;
+  __u8 poll;
+  __u8 special_mask;
+  __u8 init_state;
+  __u8 auto_eoi;
+  __u8 rotate_on_auto_eoi;
+  __u8 special_fully_nested_mode;
+  __u8 init4;
+  __u8 elcr;
+  __u8 elcr_mask;
+};
+#define KVM_IOAPIC_NUM_PINS 24
+struct kvm_ioapic_state {
+  __u64 base_address;
+  __u32 ioregsel;
+  __u32 id;
+  __u32 irr;
+  __u32 pad;
+  union {
+    __u64 bits;
+    struct {
+      __u8 vector;
+      __u8 delivery_mode : 3;
+      __u8 dest_mode : 1;
+      __u8 delivery_status : 1;
+      __u8 polarity : 1;
+      __u8 remote_irr : 1;
+      __u8 trig_mode : 1;
+      __u8 mask : 1;
+      __u8 reserve : 7;
+      __u8 reserved[4];
+      __u8 dest_id;
+    } fields;
+  } redirtbl[KVM_IOAPIC_NUM_PINS];
+};
+#define KVM_IRQCHIP_PIC_MASTER 0
+#define KVM_IRQCHIP_PIC_SLAVE 1
+#define KVM_IRQCHIP_IOAPIC 2
+#define KVM_NR_IRQCHIPS 3
+#define KVM_RUN_X86_SMM (1 << 0)
+#define KVM_RUN_X86_BUS_LOCK (1 << 1)
+struct kvm_regs {
+  __u64 rax, rbx, rcx, rdx;
+  __u64 rsi, rdi, rsp, rbp;
+  __u64 r8, r9, r10, r11;
+  __u64 r12, r13, r14, r15;
+  __u64 rip, rflags;
+};
+#define KVM_APIC_REG_SIZE 0x400
+struct kvm_lapic_state {
+  char regs[KVM_APIC_REG_SIZE];
+};
+struct kvm_segment {
+  __u64 base;
+  __u32 limit;
+  __u16 selector;
+  __u8 type;
+  __u8 present, dpl, db, s, l, g, avl;
+  __u8 unusable;
+  __u8 padding;
+};
+struct kvm_dtable {
+  __u64 base;
+  __u16 limit;
+  __u16 padding[3];
+};
+struct kvm_sregs {
+  struct kvm_segment cs, ds, es, fs, gs, ss;
+  struct kvm_segment tr, ldt;
+  struct kvm_dtable gdt, idt;
+  __u64 cr0, cr2, cr3, cr4, cr8;
+  __u64 efer;
+  __u64 apic_base;
+  __u64 interrupt_bitmap[(KVM_NR_INTERRUPTS + 63) / 64];
+};
+struct kvm_sregs2 {
+  struct kvm_segment cs, ds, es, fs, gs, ss;
+  struct kvm_segment tr, ldt;
+  struct kvm_dtable gdt, idt;
+  __u64 cr0, cr2, cr3, cr4, cr8;
+  __u64 efer;
+  __u64 apic_base;
+  __u64 flags;
+  __u64 pdptrs[4];
+};
+#define KVM_SREGS2_FLAGS_PDPTRS_VALID 1
+struct kvm_fpu {
+  __u8 fpr[8][16];
+  __u16 fcw;
+  __u16 fsw;
+  __u8 ftwx;
+  __u8 pad1;
+  __u16 last_opcode;
+  __u64 last_ip;
+  __u64 last_dp;
+  __u8 xmm[16][16];
+  __u32 mxcsr;
+  __u32 pad2;
+};
+struct kvm_msr_entry {
+  __u32 index;
+  __u32 reserved;
+  __u64 data;
+};
+struct kvm_msrs {
+  __u32 nmsrs;
+  __u32 pad;
+  struct kvm_msr_entry entries[0];
+};
+struct kvm_msr_list {
+  __u32 nmsrs;
+  __u32 indices[0];
+};
+#define KVM_MSR_FILTER_MAX_BITMAP_SIZE 0x600
+struct kvm_msr_filter_range {
+#define KVM_MSR_FILTER_READ (1 << 0)
+#define KVM_MSR_FILTER_WRITE (1 << 1)
+  __u32 flags;
+  __u32 nmsrs;
+  __u32 base;
+  __u8 * bitmap;
+};
+#define KVM_MSR_FILTER_MAX_RANGES 16
+struct kvm_msr_filter {
+#define KVM_MSR_FILTER_DEFAULT_ALLOW (0 << 0)
+#define KVM_MSR_FILTER_DEFAULT_DENY (1 << 0)
+  __u32 flags;
+  struct kvm_msr_filter_range ranges[KVM_MSR_FILTER_MAX_RANGES];
+};
+struct kvm_cpuid_entry {
+  __u32 function;
+  __u32 eax;
+  __u32 ebx;
+  __u32 ecx;
+  __u32 edx;
+  __u32 padding;
+};
+struct kvm_cpuid {
+  __u32 nent;
+  __u32 padding;
+  struct kvm_cpuid_entry entries[0];
+};
+struct kvm_cpuid_entry2 {
+  __u32 function;
+  __u32 index;
+  __u32 flags;
+  __u32 eax;
+  __u32 ebx;
+  __u32 ecx;
+  __u32 edx;
+  __u32 padding[3];
+};
+#define KVM_CPUID_FLAG_SIGNIFCANT_INDEX (1 << 0)
+#define KVM_CPUID_FLAG_STATEFUL_FUNC (1 << 1)
+#define KVM_CPUID_FLAG_STATE_READ_NEXT (1 << 2)
+struct kvm_cpuid2 {
+  __u32 nent;
+  __u32 padding;
+  struct kvm_cpuid_entry2 entries[0];
+};
+struct kvm_pit_channel_state {
+  __u32 count;
+  __u16 latched_count;
+  __u8 count_latched;
+  __u8 status_latched;
+  __u8 status;
+  __u8 read_state;
+  __u8 write_state;
+  __u8 write_latch;
+  __u8 rw_mode;
+  __u8 mode;
+  __u8 bcd;
+  __u8 gate;
+  __s64 count_load_time;
+};
+struct kvm_debug_exit_arch {
+  __u32 exception;
+  __u32 pad;
+  __u64 pc;
+  __u64 dr6;
+  __u64 dr7;
+};
+#define KVM_GUESTDBG_USE_SW_BP 0x00010000
+#define KVM_GUESTDBG_USE_HW_BP 0x00020000
+#define KVM_GUESTDBG_INJECT_DB 0x00040000
+#define KVM_GUESTDBG_INJECT_BP 0x00080000
+#define KVM_GUESTDBG_BLOCKIRQ 0x00100000
+struct kvm_guest_debug_arch {
+  __u64 debugreg[8];
+};
+struct kvm_pit_state {
+  struct kvm_pit_channel_state channels[3];
+};
+#define KVM_PIT_FLAGS_HPET_LEGACY 0x00000001
+struct kvm_pit_state2 {
+  struct kvm_pit_channel_state channels[3];
+  __u32 flags;
+  __u32 reserved[9];
+};
+struct kvm_reinject_control {
+  __u8 pit_reinject;
+  __u8 reserved[31];
+};
+#define KVM_VCPUEVENT_VALID_NMI_PENDING 0x00000001
+#define KVM_VCPUEVENT_VALID_SIPI_VECTOR 0x00000002
+#define KVM_VCPUEVENT_VALID_SHADOW 0x00000004
+#define KVM_VCPUEVENT_VALID_SMM 0x00000008
+#define KVM_VCPUEVENT_VALID_PAYLOAD 0x00000010
+#define KVM_X86_SHADOW_INT_MOV_SS 0x01
+#define KVM_X86_SHADOW_INT_STI 0x02
+struct kvm_vcpu_events {
+  struct {
+    __u8 injected;
+    __u8 nr;
+    __u8 has_error_code;
+    __u8 pending;
+    __u32 error_code;
+  } exception;
+  struct {
+    __u8 injected;
+    __u8 nr;
+    __u8 soft;
+    __u8 shadow;
+  } interrupt;
+  struct {
+    __u8 injected;
+    __u8 pending;
+    __u8 masked;
+    __u8 pad;
+  } nmi;
+  __u32 sipi_vector;
+  __u32 flags;
+  struct {
+    __u8 smm;
+    __u8 pending;
+    __u8 smm_inside_nmi;
+    __u8 latched_init;
+  } smi;
+  __u8 reserved[27];
+  __u8 exception_has_payload;
+  __u64 exception_payload;
+};
+struct kvm_debugregs {
+  __u64 db[4];
+  __u64 dr6;
+  __u64 dr7;
+  __u64 flags;
+  __u64 reserved[9];
+};
+struct kvm_xsave {
+  __u32 region[1024];
+};
+#define KVM_MAX_XCRS 16
+struct kvm_xcr {
+  __u32 xcr;
+  __u32 reserved;
+  __u64 value;
+};
+struct kvm_xcrs {
+  __u32 nr_xcrs;
+  __u32 flags;
+  struct kvm_xcr xcrs[KVM_MAX_XCRS];
+  __u64 padding[16];
+};
+#define KVM_SYNC_X86_REGS (1UL << 0)
+#define KVM_SYNC_X86_SREGS (1UL << 1)
+#define KVM_SYNC_X86_EVENTS (1UL << 2)
+#define KVM_SYNC_X86_VALID_FIELDS (KVM_SYNC_X86_REGS | KVM_SYNC_X86_SREGS | KVM_SYNC_X86_EVENTS)
+struct kvm_sync_regs {
+  struct kvm_regs regs;
+  struct kvm_sregs sregs;
+  struct kvm_vcpu_events events;
+};
+#define KVM_X86_QUIRK_LINT0_REENABLED (1 << 0)
+#define KVM_X86_QUIRK_CD_NW_CLEARED (1 << 1)
+#define KVM_X86_QUIRK_LAPIC_MMIO_HOLE (1 << 2)
+#define KVM_X86_QUIRK_OUT_7E_INC_RIP (1 << 3)
+#define KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT (1 << 4)
+#define KVM_STATE_NESTED_FORMAT_VMX 0
+#define KVM_STATE_NESTED_FORMAT_SVM 1
+#define KVM_STATE_NESTED_GUEST_MODE 0x00000001
+#define KVM_STATE_NESTED_RUN_PENDING 0x00000002
+#define KVM_STATE_NESTED_EVMCS 0x00000004
+#define KVM_STATE_NESTED_MTF_PENDING 0x00000008
+#define KVM_STATE_NESTED_GIF_SET 0x00000100
+#define KVM_STATE_NESTED_SMM_GUEST_MODE 0x00000001
+#define KVM_STATE_NESTED_SMM_VMXON 0x00000002
+#define KVM_STATE_NESTED_VMX_VMCS_SIZE 0x1000
+#define KVM_STATE_NESTED_SVM_VMCB_SIZE 0x1000
+#define KVM_STATE_VMX_PREEMPTION_TIMER_DEADLINE 0x00000001
+struct kvm_vmx_nested_state_data {
+  __u8 vmcs12[KVM_STATE_NESTED_VMX_VMCS_SIZE];
+  __u8 shadow_vmcs12[KVM_STATE_NESTED_VMX_VMCS_SIZE];
+};
+struct kvm_vmx_nested_state_hdr {
+  __u64 vmxon_pa;
+  __u64 vmcs12_pa;
+  struct {
+    __u16 flags;
+  } smm;
+  __u16 pad;
+  __u32 flags;
+  __u64 preemption_timer_deadline;
+};
+struct kvm_svm_nested_state_data {
+  __u8 vmcb12[KVM_STATE_NESTED_SVM_VMCB_SIZE];
+};
+struct kvm_svm_nested_state_hdr {
+  __u64 vmcb_pa;
+};
+struct kvm_nested_state {
+  __u16 flags;
+  __u16 format;
+  __u32 size;
+  union {
+    struct kvm_vmx_nested_state_hdr vmx;
+    struct kvm_svm_nested_state_hdr svm;
+    __u8 pad[120];
+  } hdr;
+  union {
+    struct kvm_vmx_nested_state_data vmx[0];
+    struct kvm_svm_nested_state_data svm[0];
+  } data;
+};
+struct kvm_pmu_event_filter {
+  __u32 action;
+  __u32 nevents;
+  __u32 fixed_counter_bitmap;
+  __u32 flags;
+  __u32 pad[4];
+  __u64 events[0];
+};
+#define KVM_PMU_EVENT_ALLOW 0
+#define KVM_PMU_EVENT_DENY 1
+#define KVM_VCPU_TSC_CTRL 0
+#define KVM_VCPU_TSC_OFFSET 0
+#endif
diff --git a/i686-linux-musl/include/asm/kvm_para.h b/i686-linux-musl/include/asm/kvm_para.h
new file mode 100644
index 0000000..dd72af0
--- /dev/null
+++ b/i686-linux-musl/include/asm/kvm_para.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_ASM_X86_KVM_PARA_H
+#define _UAPI_ASM_X86_KVM_PARA_H
+#include <linux/types.h>
+#define KVM_CPUID_SIGNATURE 0x40000000
+#define KVM_SIGNATURE "KVMKVMKVM\0\0\0"
+#define KVM_CPUID_FEATURES 0x40000001
+#define KVM_FEATURE_CLOCKSOURCE 0
+#define KVM_FEATURE_NOP_IO_DELAY 1
+#define KVM_FEATURE_MMU_OP 2
+#define KVM_FEATURE_CLOCKSOURCE2 3
+#define KVM_FEATURE_ASYNC_PF 4
+#define KVM_FEATURE_STEAL_TIME 5
+#define KVM_FEATURE_PV_EOI 6
+#define KVM_FEATURE_PV_UNHALT 7
+#define KVM_FEATURE_PV_TLB_FLUSH 9
+#define KVM_FEATURE_ASYNC_PF_VMEXIT 10
+#define KVM_FEATURE_PV_SEND_IPI 11
+#define KVM_FEATURE_POLL_CONTROL 12
+#define KVM_FEATURE_PV_SCHED_YIELD 13
+#define KVM_FEATURE_ASYNC_PF_INT 14
+#define KVM_FEATURE_MSI_EXT_DEST_ID 15
+#define KVM_FEATURE_HC_MAP_GPA_RANGE 16
+#define KVM_FEATURE_MIGRATION_CONTROL 17
+#define KVM_HINTS_REALTIME 0
+#define KVM_FEATURE_CLOCKSOURCE_STABLE_BIT 24
+#define MSR_KVM_WALL_CLOCK 0x11
+#define MSR_KVM_SYSTEM_TIME 0x12
+#define KVM_MSR_ENABLED 1
+#define MSR_KVM_WALL_CLOCK_NEW 0x4b564d00
+#define MSR_KVM_SYSTEM_TIME_NEW 0x4b564d01
+#define MSR_KVM_ASYNC_PF_EN 0x4b564d02
+#define MSR_KVM_STEAL_TIME 0x4b564d03
+#define MSR_KVM_PV_EOI_EN 0x4b564d04
+#define MSR_KVM_POLL_CONTROL 0x4b564d05
+#define MSR_KVM_ASYNC_PF_INT 0x4b564d06
+#define MSR_KVM_ASYNC_PF_ACK 0x4b564d07
+#define MSR_KVM_MIGRATION_CONTROL 0x4b564d08
+struct kvm_steal_time {
+  __u64 steal;
+  __u32 version;
+  __u32 flags;
+  __u8 preempted;
+  __u8 u8_pad[3];
+  __u32 pad[11];
+};
+#define KVM_VCPU_PREEMPTED (1 << 0)
+#define KVM_VCPU_FLUSH_TLB (1 << 1)
+#define KVM_CLOCK_PAIRING_WALLCLOCK 0
+struct kvm_clock_pairing {
+  __s64 sec;
+  __s64 nsec;
+  __u64 tsc;
+  __u32 flags;
+  __u32 pad[9];
+};
+#define KVM_STEAL_ALIGNMENT_BITS 5
+#define KVM_STEAL_VALID_BITS ((- 1ULL << (KVM_STEAL_ALIGNMENT_BITS + 1)))
+#define KVM_STEAL_RESERVED_MASK (((1 << KVM_STEAL_ALIGNMENT_BITS) - 1) << 1)
+#define KVM_MAX_MMU_OP_BATCH 32
+#define KVM_ASYNC_PF_ENABLED (1 << 0)
+#define KVM_ASYNC_PF_SEND_ALWAYS (1 << 1)
+#define KVM_ASYNC_PF_DELIVERY_AS_PF_VMEXIT (1 << 2)
+#define KVM_ASYNC_PF_DELIVERY_AS_INT (1 << 3)
+#define KVM_ASYNC_PF_VEC_MASK GENMASK(7, 0)
+#define KVM_MIGRATION_READY (1 << 0)
+#define KVM_MAP_GPA_RANGE_PAGE_SZ_4K 0
+#define KVM_MAP_GPA_RANGE_PAGE_SZ_2M (1 << 0)
+#define KVM_MAP_GPA_RANGE_PAGE_SZ_1G (1 << 1)
+#define KVM_MAP_GPA_RANGE_ENC_STAT(n) (n << 4)
+#define KVM_MAP_GPA_RANGE_ENCRYPTED KVM_MAP_GPA_RANGE_ENC_STAT(1)
+#define KVM_MAP_GPA_RANGE_DECRYPTED KVM_MAP_GPA_RANGE_ENC_STAT(0)
+#define KVM_MMU_OP_WRITE_PTE 1
+#define KVM_MMU_OP_FLUSH_TLB 2
+#define KVM_MMU_OP_RELEASE_PT 3
+struct kvm_mmu_op_header {
+  __u32 op;
+  __u32 pad;
+};
+struct kvm_mmu_op_write_pte {
+  struct kvm_mmu_op_header header;
+  __u64 pte_phys;
+  __u64 pte_val;
+};
+struct kvm_mmu_op_flush_tlb {
+  struct kvm_mmu_op_header header;
+};
+struct kvm_mmu_op_release_pt {
+  struct kvm_mmu_op_header header;
+  __u64 pt_phys;
+};
+#define KVM_PV_REASON_PAGE_NOT_PRESENT 1
+#define KVM_PV_REASON_PAGE_READY 2
+struct kvm_vcpu_pv_apf_data {
+  __u32 flags;
+  __u32 token;
+  __u8 pad[56];
+  __u32 enabled;
+};
+#define KVM_PV_EOI_BIT 0
+#define KVM_PV_EOI_MASK (0x1 << KVM_PV_EOI_BIT)
+#define KVM_PV_EOI_ENABLED KVM_PV_EOI_MASK
+#define KVM_PV_EOI_DISABLED 0x0
+#endif
diff --git a/i686-linux-musl/include/asm/kvm_perf.h b/i686-linux-musl/include/asm/kvm_perf.h
new file mode 100644
index 0000000..c5c8f8e
--- /dev/null
+++ b/i686-linux-musl/include/asm/kvm_perf.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 _ASM_X86_KVM_PERF_H
+#define _ASM_X86_KVM_PERF_H
+#include <asm/svm.h>
+#include <asm/vmx.h>
+#include <asm/kvm.h>
+#define DECODE_STR_LEN 20
+#define VCPU_ID "vcpu_id"
+#define KVM_ENTRY_TRACE "kvm:kvm_entry"
+#define KVM_EXIT_TRACE "kvm:kvm_exit"
+#define KVM_EXIT_REASON "exit_reason"
+#endif
diff --git a/i686-linux-musl/include/asm/ldt.h b/i686-linux-musl/include/asm/ldt.h
new file mode 100644
index 0000000..a98aedf
--- /dev/null
+++ b/i686-linux-musl/include/asm/ldt.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 _ASM_X86_LDT_H
+#define _ASM_X86_LDT_H
+#define LDT_ENTRIES 8192
+#define LDT_ENTRY_SIZE 8
+#ifndef __ASSEMBLY__
+struct user_desc {
+  unsigned int entry_number;
+  unsigned int base_addr;
+  unsigned int limit;
+  unsigned int seg_32bit : 1;
+  unsigned int contents : 2;
+  unsigned int read_exec_only : 1;
+  unsigned int limit_in_pages : 1;
+  unsigned int seg_not_present : 1;
+  unsigned int useable : 1;
+#ifdef __x86_64__
+  unsigned int lm : 1;
+#endif
+};
+#define MODIFY_LDT_CONTENTS_DATA 0
+#define MODIFY_LDT_CONTENTS_STACK 1
+#define MODIFY_LDT_CONTENTS_CODE 2
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm/mce.h b/i686-linux-musl/include/asm/mce.h
new file mode 100644
index 0000000..359af57
--- /dev/null
+++ b/i686-linux-musl/include/asm/mce.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 _UAPI_ASM_X86_MCE_H
+#define _UAPI_ASM_X86_MCE_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+struct mce {
+  __u64 status;
+  __u64 misc;
+  __u64 addr;
+  __u64 mcgstatus;
+  __u64 ip;
+  __u64 tsc;
+  __u64 time;
+  __u8 cpuvendor;
+  __u8 inject_flags;
+  __u8 severity;
+  __u8 pad;
+  __u32 cpuid;
+  __u8 cs;
+  __u8 bank;
+  __u8 cpu;
+  __u8 finished;
+  __u32 extcpu;
+  __u32 socketid;
+  __u32 apicid;
+  __u64 mcgcap;
+  __u64 synd;
+  __u64 ipid;
+  __u64 ppin;
+  __u32 microcode;
+  __u64 kflags;
+};
+#define MCE_GET_RECORD_LEN _IOR('M', 1, int)
+#define MCE_GET_LOG_LEN _IOR('M', 2, int)
+#define MCE_GETCLEAR_FLAGS _IOR('M', 3, int)
+#endif
diff --git a/i686-linux-musl/include/asm/mman.h b/i686-linux-musl/include/asm/mman.h
new file mode 100644
index 0000000..1061a6f
--- /dev/null
+++ b/i686-linux-musl/include/asm/mman.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 _ASM_X86_MMAN_H
+#define _ASM_X86_MMAN_H
+#define MAP_32BIT 0x40
+#include <asm-generic/mman.h>
+#endif
diff --git a/i686-linux-musl/include/asm/msgbuf.h b/i686-linux-musl/include/asm/msgbuf.h
new file mode 100644
index 0000000..b100b20
--- /dev/null
+++ b/i686-linux-musl/include/asm/msgbuf.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 __ASM_X64_MSGBUF_H
+#define __ASM_X64_MSGBUF_H
+#if !defined(__x86_64__) || !defined(__ILP32__)
+#include <asm-generic/msgbuf.h>
+#else
+#include <asm/ipcbuf.h>
+struct msqid64_ds {
+  struct ipc64_perm msg_perm;
+  __kernel_long_t msg_stime;
+  __kernel_long_t msg_rtime;
+  __kernel_long_t msg_ctime;
+  __kernel_ulong_t msg_cbytes;
+  __kernel_ulong_t msg_qnum;
+  __kernel_ulong_t msg_qbytes;
+  __kernel_pid_t msg_lspid;
+  __kernel_pid_t msg_lrpid;
+  __kernel_ulong_t __unused4;
+  __kernel_ulong_t __unused5;
+};
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm/msr.h b/i686-linux-musl/include/asm/msr.h
new file mode 100644
index 0000000..c772838
--- /dev/null
+++ b/i686-linux-musl/include/asm/msr.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_ASM_X86_MSR_H
+#define _UAPI_ASM_X86_MSR_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define X86_IOC_RDMSR_REGS _IOWR('c', 0xA0, __u32[8])
+#define X86_IOC_WRMSR_REGS _IOWR('c', 0xA1, __u32[8])
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm/mtrr.h b/i686-linux-musl/include/asm/mtrr.h
new file mode 100644
index 0000000..c709a70
--- /dev/null
+++ b/i686-linux-musl/include/asm/mtrr.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_ASM_X86_MTRR_H
+#define _UAPI_ASM_X86_MTRR_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#include <linux/errno.h>
+#define MTRR_IOCTL_BASE 'M'
+#ifdef __i386__
+struct mtrr_sentry {
+  unsigned long base;
+  unsigned int size;
+  unsigned int type;
+};
+struct mtrr_gentry {
+  unsigned int regnum;
+  unsigned long base;
+  unsigned int size;
+  unsigned int type;
+};
+#else
+struct mtrr_sentry {
+  __u64 base;
+  __u32 size;
+  __u32 type;
+};
+struct mtrr_gentry {
+  __u64 base;
+  __u32 size;
+  __u32 regnum;
+  __u32 type;
+  __u32 _pad;
+};
+#endif
+struct mtrr_var_range {
+  __u32 base_lo;
+  __u32 base_hi;
+  __u32 mask_lo;
+  __u32 mask_hi;
+};
+typedef __u8 mtrr_type;
+#define MTRR_NUM_FIXED_RANGES 88
+#define MTRR_MAX_VAR_RANGES 256
+struct mtrr_state_type {
+  struct mtrr_var_range var_ranges[MTRR_MAX_VAR_RANGES];
+  mtrr_type fixed_ranges[MTRR_NUM_FIXED_RANGES];
+  unsigned char enabled;
+  unsigned char have_fixed;
+  mtrr_type def_type;
+};
+#define MTRRphysBase_MSR(reg) (0x200 + 2 * (reg))
+#define MTRRphysMask_MSR(reg) (0x200 + 2 * (reg) + 1)
+#define MTRRIOC_ADD_ENTRY _IOW(MTRR_IOCTL_BASE, 0, struct mtrr_sentry)
+#define MTRRIOC_SET_ENTRY _IOW(MTRR_IOCTL_BASE, 1, struct mtrr_sentry)
+#define MTRRIOC_DEL_ENTRY _IOW(MTRR_IOCTL_BASE, 2, struct mtrr_sentry)
+#define MTRRIOC_GET_ENTRY _IOWR(MTRR_IOCTL_BASE, 3, struct mtrr_gentry)
+#define MTRRIOC_KILL_ENTRY _IOW(MTRR_IOCTL_BASE, 4, struct mtrr_sentry)
+#define MTRRIOC_ADD_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 5, struct mtrr_sentry)
+#define MTRRIOC_SET_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 6, struct mtrr_sentry)
+#define MTRRIOC_DEL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 7, struct mtrr_sentry)
+#define MTRRIOC_GET_PAGE_ENTRY _IOWR(MTRR_IOCTL_BASE, 8, struct mtrr_gentry)
+#define MTRRIOC_KILL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 9, struct mtrr_sentry)
+#define MTRR_TYPE_UNCACHABLE 0
+#define MTRR_TYPE_WRCOMB 1
+#define MTRR_TYPE_WRTHROUGH 4
+#define MTRR_TYPE_WRPROT 5
+#define MTRR_TYPE_WRBACK 6
+#define MTRR_NUM_TYPES 7
+#define MTRR_TYPE_INVALID 0xff
+#endif
diff --git a/i686-linux-musl/include/asm/param.h b/i686-linux-musl/include/asm/param.h
new file mode 100644
index 0000000..5ccf935
--- /dev/null
+++ b/i686-linux-musl/include/asm/param.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-generic/param.h>
diff --git a/i686-linux-musl/include/asm/perf_regs.h b/i686-linux-musl/include/asm/perf_regs.h
new file mode 100644
index 0000000..984b7ea
--- /dev/null
+++ b/i686-linux-musl/include/asm/perf_regs.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 _ASM_X86_PERF_REGS_H
+#define _ASM_X86_PERF_REGS_H
+enum perf_event_x86_regs {
+  PERF_REG_X86_AX,
+  PERF_REG_X86_BX,
+  PERF_REG_X86_CX,
+  PERF_REG_X86_DX,
+  PERF_REG_X86_SI,
+  PERF_REG_X86_DI,
+  PERF_REG_X86_BP,
+  PERF_REG_X86_SP,
+  PERF_REG_X86_IP,
+  PERF_REG_X86_FLAGS,
+  PERF_REG_X86_CS,
+  PERF_REG_X86_SS,
+  PERF_REG_X86_DS,
+  PERF_REG_X86_ES,
+  PERF_REG_X86_FS,
+  PERF_REG_X86_GS,
+  PERF_REG_X86_R8,
+  PERF_REG_X86_R9,
+  PERF_REG_X86_R10,
+  PERF_REG_X86_R11,
+  PERF_REG_X86_R12,
+  PERF_REG_X86_R13,
+  PERF_REG_X86_R14,
+  PERF_REG_X86_R15,
+  PERF_REG_X86_32_MAX = PERF_REG_X86_GS + 1,
+  PERF_REG_X86_64_MAX = PERF_REG_X86_R15 + 1,
+  PERF_REG_X86_XMM0 = 32,
+  PERF_REG_X86_XMM1 = 34,
+  PERF_REG_X86_XMM2 = 36,
+  PERF_REG_X86_XMM3 = 38,
+  PERF_REG_X86_XMM4 = 40,
+  PERF_REG_X86_XMM5 = 42,
+  PERF_REG_X86_XMM6 = 44,
+  PERF_REG_X86_XMM7 = 46,
+  PERF_REG_X86_XMM8 = 48,
+  PERF_REG_X86_XMM9 = 50,
+  PERF_REG_X86_XMM10 = 52,
+  PERF_REG_X86_XMM11 = 54,
+  PERF_REG_X86_XMM12 = 56,
+  PERF_REG_X86_XMM13 = 58,
+  PERF_REG_X86_XMM14 = 60,
+  PERF_REG_X86_XMM15 = 62,
+  PERF_REG_X86_XMM_MAX = PERF_REG_X86_XMM15 + 2,
+};
+#define PERF_REG_EXTENDED_MASK (~((1ULL << PERF_REG_X86_XMM0) - 1))
+#endif
diff --git a/i686-linux-musl/include/asm/poll.h b/i686-linux-musl/include/asm/poll.h
new file mode 100644
index 0000000..d7e8adc
--- /dev/null
+++ b/i686-linux-musl/include/asm/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-generic/poll.h>
diff --git a/i686-linux-musl/include/asm/posix_types.h b/i686-linux-musl/include/asm/posix_types.h
new file mode 100644
index 0000000..67ed19b
--- /dev/null
+++ b/i686-linux-musl/include/asm/posix_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!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifdef __i386__
+#include <asm/posix_types_32.h>
+#elif defined(__ILP32__)
+#include <asm/posix_types_x32.h>
+#else
+#include <asm/posix_types_64.h>
+#endif
diff --git a/i686-linux-musl/include/asm/posix_types_32.h b/i686-linux-musl/include/asm/posix_types_32.h
new file mode 100644
index 0000000..c339b4f
--- /dev/null
+++ b/i686-linux-musl/include/asm/posix_types_32.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 _ASM_X86_POSIX_TYPES_32_H
+#define _ASM_X86_POSIX_TYPES_32_H
+typedef unsigned short __kernel_mode_t;
+#define __kernel_mode_t __kernel_mode_t
+typedef unsigned short __kernel_ipc_pid_t;
+#define __kernel_ipc_pid_t __kernel_ipc_pid_t
+typedef unsigned short __kernel_uid_t;
+typedef unsigned short __kernel_gid_t;
+#define __kernel_uid_t __kernel_uid_t
+typedef unsigned short __kernel_old_dev_t;
+#define __kernel_old_dev_t __kernel_old_dev_t
+#include <asm-generic/posix_types.h>
+#endif
diff --git a/i686-linux-musl/include/asm/posix_types_64.h b/i686-linux-musl/include/asm/posix_types_64.h
new file mode 100644
index 0000000..23cdec1
--- /dev/null
+++ b/i686-linux-musl/include/asm/posix_types_64.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 _ASM_X86_POSIX_TYPES_64_H
+#define _ASM_X86_POSIX_TYPES_64_H
+typedef unsigned short __kernel_old_uid_t;
+typedef unsigned short __kernel_old_gid_t;
+#define __kernel_old_uid_t __kernel_old_uid_t
+typedef unsigned long __kernel_old_dev_t;
+#define __kernel_old_dev_t __kernel_old_dev_t
+#include <asm-generic/posix_types.h>
+#endif
diff --git a/i686-linux-musl/include/asm/posix_types_x32.h b/i686-linux-musl/include/asm/posix_types_x32.h
new file mode 100644
index 0000000..96cf8b9
--- /dev/null
+++ b/i686-linux-musl/include/asm/posix_types_x32.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 _ASM_X86_POSIX_TYPES_X32_H
+#define _ASM_X86_POSIX_TYPES_X32_H
+typedef long long __kernel_long_t;
+typedef unsigned long long __kernel_ulong_t;
+#define __kernel_long_t __kernel_long_t
+#include <asm/posix_types_64.h>
+#endif
diff --git a/i686-linux-musl/include/asm/prctl.h b/i686-linux-musl/include/asm/prctl.h
new file mode 100644
index 0000000..d8014b1
--- /dev/null
+++ b/i686-linux-musl/include/asm/prctl.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 _ASM_X86_PRCTL_H
+#define _ASM_X86_PRCTL_H
+#define ARCH_SET_GS 0x1001
+#define ARCH_SET_FS 0x1002
+#define ARCH_GET_FS 0x1003
+#define ARCH_GET_GS 0x1004
+#define ARCH_GET_CPUID 0x1011
+#define ARCH_SET_CPUID 0x1012
+#define ARCH_GET_XCOMP_SUPP 0x1021
+#define ARCH_GET_XCOMP_PERM 0x1022
+#define ARCH_REQ_XCOMP_PERM 0x1023
+#define ARCH_MAP_VDSO_X32 0x2001
+#define ARCH_MAP_VDSO_32 0x2002
+#define ARCH_MAP_VDSO_64 0x2003
+#endif
diff --git a/i686-linux-musl/include/asm/processor-flags.h b/i686-linux-musl/include/asm/processor-flags.h
new file mode 100644
index 0000000..85f9d7e
--- /dev/null
+++ b/i686-linux-musl/include/asm/processor-flags.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_ASM_X86_PROCESSOR_FLAGS_H
+#define _UAPI_ASM_X86_PROCESSOR_FLAGS_H
+#include <linux/const.h>
+#define X86_EFLAGS_CF_BIT 0
+#define X86_EFLAGS_CF _BITUL(X86_EFLAGS_CF_BIT)
+#define X86_EFLAGS_FIXED_BIT 1
+#define X86_EFLAGS_FIXED _BITUL(X86_EFLAGS_FIXED_BIT)
+#define X86_EFLAGS_PF_BIT 2
+#define X86_EFLAGS_PF _BITUL(X86_EFLAGS_PF_BIT)
+#define X86_EFLAGS_AF_BIT 4
+#define X86_EFLAGS_AF _BITUL(X86_EFLAGS_AF_BIT)
+#define X86_EFLAGS_ZF_BIT 6
+#define X86_EFLAGS_ZF _BITUL(X86_EFLAGS_ZF_BIT)
+#define X86_EFLAGS_SF_BIT 7
+#define X86_EFLAGS_SF _BITUL(X86_EFLAGS_SF_BIT)
+#define X86_EFLAGS_TF_BIT 8
+#define X86_EFLAGS_TF _BITUL(X86_EFLAGS_TF_BIT)
+#define X86_EFLAGS_IF_BIT 9
+#define X86_EFLAGS_IF _BITUL(X86_EFLAGS_IF_BIT)
+#define X86_EFLAGS_DF_BIT 10
+#define X86_EFLAGS_DF _BITUL(X86_EFLAGS_DF_BIT)
+#define X86_EFLAGS_OF_BIT 11
+#define X86_EFLAGS_OF _BITUL(X86_EFLAGS_OF_BIT)
+#define X86_EFLAGS_IOPL_BIT 12
+#define X86_EFLAGS_IOPL (_AC(3, UL) << X86_EFLAGS_IOPL_BIT)
+#define X86_EFLAGS_NT_BIT 14
+#define X86_EFLAGS_NT _BITUL(X86_EFLAGS_NT_BIT)
+#define X86_EFLAGS_RF_BIT 16
+#define X86_EFLAGS_RF _BITUL(X86_EFLAGS_RF_BIT)
+#define X86_EFLAGS_VM_BIT 17
+#define X86_EFLAGS_VM _BITUL(X86_EFLAGS_VM_BIT)
+#define X86_EFLAGS_AC_BIT 18
+#define X86_EFLAGS_AC _BITUL(X86_EFLAGS_AC_BIT)
+#define X86_EFLAGS_VIF_BIT 19
+#define X86_EFLAGS_VIF _BITUL(X86_EFLAGS_VIF_BIT)
+#define X86_EFLAGS_VIP_BIT 20
+#define X86_EFLAGS_VIP _BITUL(X86_EFLAGS_VIP_BIT)
+#define X86_EFLAGS_ID_BIT 21
+#define X86_EFLAGS_ID _BITUL(X86_EFLAGS_ID_BIT)
+#define X86_CR0_PE_BIT 0
+#define X86_CR0_PE _BITUL(X86_CR0_PE_BIT)
+#define X86_CR0_MP_BIT 1
+#define X86_CR0_MP _BITUL(X86_CR0_MP_BIT)
+#define X86_CR0_EM_BIT 2
+#define X86_CR0_EM _BITUL(X86_CR0_EM_BIT)
+#define X86_CR0_TS_BIT 3
+#define X86_CR0_TS _BITUL(X86_CR0_TS_BIT)
+#define X86_CR0_ET_BIT 4
+#define X86_CR0_ET _BITUL(X86_CR0_ET_BIT)
+#define X86_CR0_NE_BIT 5
+#define X86_CR0_NE _BITUL(X86_CR0_NE_BIT)
+#define X86_CR0_WP_BIT 16
+#define X86_CR0_WP _BITUL(X86_CR0_WP_BIT)
+#define X86_CR0_AM_BIT 18
+#define X86_CR0_AM _BITUL(X86_CR0_AM_BIT)
+#define X86_CR0_NW_BIT 29
+#define X86_CR0_NW _BITUL(X86_CR0_NW_BIT)
+#define X86_CR0_CD_BIT 30
+#define X86_CR0_CD _BITUL(X86_CR0_CD_BIT)
+#define X86_CR0_PG_BIT 31
+#define X86_CR0_PG _BITUL(X86_CR0_PG_BIT)
+#define X86_CR3_PWT_BIT 3
+#define X86_CR3_PWT _BITUL(X86_CR3_PWT_BIT)
+#define X86_CR3_PCD_BIT 4
+#define X86_CR3_PCD _BITUL(X86_CR3_PCD_BIT)
+#define X86_CR3_PCID_BITS 12
+#define X86_CR3_PCID_MASK (_AC((1UL << X86_CR3_PCID_BITS) - 1, UL))
+#define X86_CR3_PCID_NOFLUSH_BIT 63
+#define X86_CR3_PCID_NOFLUSH _BITULL(X86_CR3_PCID_NOFLUSH_BIT)
+#define X86_CR4_VME_BIT 0
+#define X86_CR4_VME _BITUL(X86_CR4_VME_BIT)
+#define X86_CR4_PVI_BIT 1
+#define X86_CR4_PVI _BITUL(X86_CR4_PVI_BIT)
+#define X86_CR4_TSD_BIT 2
+#define X86_CR4_TSD _BITUL(X86_CR4_TSD_BIT)
+#define X86_CR4_DE_BIT 3
+#define X86_CR4_DE _BITUL(X86_CR4_DE_BIT)
+#define X86_CR4_PSE_BIT 4
+#define X86_CR4_PSE _BITUL(X86_CR4_PSE_BIT)
+#define X86_CR4_PAE_BIT 5
+#define X86_CR4_PAE _BITUL(X86_CR4_PAE_BIT)
+#define X86_CR4_MCE_BIT 6
+#define X86_CR4_MCE _BITUL(X86_CR4_MCE_BIT)
+#define X86_CR4_PGE_BIT 7
+#define X86_CR4_PGE _BITUL(X86_CR4_PGE_BIT)
+#define X86_CR4_PCE_BIT 8
+#define X86_CR4_PCE _BITUL(X86_CR4_PCE_BIT)
+#define X86_CR4_OSFXSR_BIT 9
+#define X86_CR4_OSFXSR _BITUL(X86_CR4_OSFXSR_BIT)
+#define X86_CR4_OSXMMEXCPT_BIT 10
+#define X86_CR4_OSXMMEXCPT _BITUL(X86_CR4_OSXMMEXCPT_BIT)
+#define X86_CR4_UMIP_BIT 11
+#define X86_CR4_UMIP _BITUL(X86_CR4_UMIP_BIT)
+#define X86_CR4_LA57_BIT 12
+#define X86_CR4_LA57 _BITUL(X86_CR4_LA57_BIT)
+#define X86_CR4_VMXE_BIT 13
+#define X86_CR4_VMXE _BITUL(X86_CR4_VMXE_BIT)
+#define X86_CR4_SMXE_BIT 14
+#define X86_CR4_SMXE _BITUL(X86_CR4_SMXE_BIT)
+#define X86_CR4_FSGSBASE_BIT 16
+#define X86_CR4_FSGSBASE _BITUL(X86_CR4_FSGSBASE_BIT)
+#define X86_CR4_PCIDE_BIT 17
+#define X86_CR4_PCIDE _BITUL(X86_CR4_PCIDE_BIT)
+#define X86_CR4_OSXSAVE_BIT 18
+#define X86_CR4_OSXSAVE _BITUL(X86_CR4_OSXSAVE_BIT)
+#define X86_CR4_SMEP_BIT 20
+#define X86_CR4_SMEP _BITUL(X86_CR4_SMEP_BIT)
+#define X86_CR4_SMAP_BIT 21
+#define X86_CR4_SMAP _BITUL(X86_CR4_SMAP_BIT)
+#define X86_CR4_PKE_BIT 22
+#define X86_CR4_PKE _BITUL(X86_CR4_PKE_BIT)
+#define X86_CR8_TPR _AC(0x0000000f, UL)
+#define CX86_PCR0 0x20
+#define CX86_GCR 0xb8
+#define CX86_CCR0 0xc0
+#define CX86_CCR1 0xc1
+#define CX86_CCR2 0xc2
+#define CX86_CCR3 0xc3
+#define CX86_CCR4 0xe8
+#define CX86_CCR5 0xe9
+#define CX86_CCR6 0xea
+#define CX86_CCR7 0xeb
+#define CX86_PCR1 0xf0
+#define CX86_DIR0 0xfe
+#define CX86_DIR1 0xff
+#define CX86_ARR_BASE 0xc4
+#define CX86_RCR_BASE 0xdc
+#define CR0_STATE (X86_CR0_PE | X86_CR0_MP | X86_CR0_ET | X86_CR0_NE | X86_CR0_WP | X86_CR0_AM | X86_CR0_PG)
+#endif
diff --git a/i686-linux-musl/include/asm/ptrace-abi.h b/i686-linux-musl/include/asm/ptrace-abi.h
new file mode 100644
index 0000000..e501d9f
--- /dev/null
+++ b/i686-linux-musl/include/asm/ptrace-abi.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 _ASM_X86_PTRACE_ABI_H
+#define _ASM_X86_PTRACE_ABI_H
+#ifdef __i386__
+#define EBX 0
+#define ECX 1
+#define EDX 2
+#define ESI 3
+#define EDI 4
+#define EBP 5
+#define EAX 6
+#define DS 7
+#define ES 8
+#define FS 9
+#define GS 10
+#define ORIG_EAX 11
+#define EIP 12
+#define CS 13
+#define EFL 14
+#define UESP 15
+#define SS 16
+#define FRAME_SIZE 17
+#else
+#if defined(__ASSEMBLY__) || defined(__FRAME_OFFSETS)
+#define R15 0
+#define R14 8
+#define R13 16
+#define R12 24
+#define RBP 32
+#define RBX 40
+#define R11 48
+#define R10 56
+#define R9 64
+#define R8 72
+#define RAX 80
+#define RCX 88
+#define RDX 96
+#define RSI 104
+#define RDI 112
+#define ORIG_RAX 120
+#define RIP 128
+#define CS 136
+#define EFLAGS 144
+#define RSP 152
+#define SS 160
+#endif
+#define FRAME_SIZE 168
+#endif
+#define PTRACE_GETREGS 12
+#define PTRACE_SETREGS 13
+#define PTRACE_GETFPREGS 14
+#define PTRACE_SETFPREGS 15
+#define PTRACE_GETFPXREGS 18
+#define PTRACE_SETFPXREGS 19
+#define PTRACE_OLDSETOPTIONS 21
+#define PTRACE_GET_THREAD_AREA 25
+#define PTRACE_SET_THREAD_AREA 26
+#ifdef __x86_64__
+#define PTRACE_ARCH_PRCTL 30
+#endif
+#define PTRACE_SYSEMU 31
+#define PTRACE_SYSEMU_SINGLESTEP 32
+#define PTRACE_SINGLEBLOCK 33
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm/ptrace.h b/i686-linux-musl/include/asm/ptrace.h
new file mode 100644
index 0000000..3f4404a
--- /dev/null
+++ b/i686-linux-musl/include/asm/ptrace.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_ASM_X86_PTRACE_H
+#define _UAPI_ASM_X86_PTRACE_H
+#include <linux/compiler.h>
+#include <asm/ptrace-abi.h>
+#include <asm/processor-flags.h>
+#ifndef __ASSEMBLY__
+#ifdef __i386__
+struct pt_regs {
+  long ebx;
+  long ecx;
+  long edx;
+  long esi;
+  long edi;
+  long ebp;
+  long eax;
+  int xds;
+  int xes;
+  int xfs;
+  int xgs;
+  long orig_eax;
+  long eip;
+  int xcs;
+  long eflags;
+  long esp;
+  int xss;
+};
+#else
+struct pt_regs {
+  unsigned long r15;
+  unsigned long r14;
+  unsigned long r13;
+  unsigned long r12;
+  unsigned long rbp;
+  unsigned long rbx;
+  unsigned long r11;
+  unsigned long r10;
+  unsigned long r9;
+  unsigned long r8;
+  unsigned long rax;
+  unsigned long rcx;
+  unsigned long rdx;
+  unsigned long rsi;
+  unsigned long rdi;
+  unsigned long orig_rax;
+  unsigned long rip;
+  unsigned long cs;
+  unsigned long eflags;
+  unsigned long rsp;
+  unsigned long ss;
+};
+#endif
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm/resource.h b/i686-linux-musl/include/asm/resource.h
new file mode 100644
index 0000000..371adb5
--- /dev/null
+++ b/i686-linux-musl/include/asm/resource.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-generic/resource.h>
diff --git a/i686-linux-musl/include/asm/sembuf.h b/i686-linux-musl/include/asm/sembuf.h
new file mode 100644
index 0000000..c633425
--- /dev/null
+++ b/i686-linux-musl/include/asm/sembuf.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 _ASM_X86_SEMBUF_H
+#define _ASM_X86_SEMBUF_H
+#include <asm/ipcbuf.h>
+struct semid64_ds {
+  struct ipc64_perm sem_perm;
+#ifdef __i386__
+  unsigned long sem_otime;
+  unsigned long sem_otime_high;
+  unsigned long sem_ctime;
+  unsigned long sem_ctime_high;
+#else
+  __kernel_long_t sem_otime;
+  __kernel_ulong_t __unused1;
+  __kernel_long_t sem_ctime;
+  __kernel_ulong_t __unused2;
+#endif
+  __kernel_ulong_t sem_nsems;
+  __kernel_ulong_t __unused3;
+  __kernel_ulong_t __unused4;
+};
+#endif
diff --git a/i686-linux-musl/include/asm/setup.h b/i686-linux-musl/include/asm/setup.h
new file mode 100644
index 0000000..878419c
--- /dev/null
+++ b/i686-linux-musl/include/asm/setup.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/asm/sgx.h b/i686-linux-musl/include/asm/sgx.h
new file mode 100644
index 0000000..1874b78
--- /dev/null
+++ b/i686-linux-musl/include/asm/sgx.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_ASM_X86_SGX_H
+#define _UAPI_ASM_X86_SGX_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+enum sgx_page_flags {
+  SGX_PAGE_MEASURE = 0x01,
+};
+#define SGX_MAGIC 0xA4
+#define SGX_IOC_ENCLAVE_CREATE _IOW(SGX_MAGIC, 0x00, struct sgx_enclave_create)
+#define SGX_IOC_ENCLAVE_ADD_PAGES _IOWR(SGX_MAGIC, 0x01, struct sgx_enclave_add_pages)
+#define SGX_IOC_ENCLAVE_INIT _IOW(SGX_MAGIC, 0x02, struct sgx_enclave_init)
+#define SGX_IOC_ENCLAVE_PROVISION _IOW(SGX_MAGIC, 0x03, struct sgx_enclave_provision)
+#define SGX_IOC_VEPC_REMOVE_ALL _IO(SGX_MAGIC, 0x04)
+struct sgx_enclave_create {
+  __u64 src;
+};
+struct sgx_enclave_add_pages {
+  __u64 src;
+  __u64 offset;
+  __u64 length;
+  __u64 secinfo;
+  __u64 flags;
+  __u64 count;
+};
+struct sgx_enclave_init {
+  __u64 sigstruct;
+};
+struct sgx_enclave_provision {
+  __u64 fd;
+};
+struct sgx_enclave_run;
+typedef int(* sgx_enclave_user_handler_t) (long rdi, long rsi, long rdx, long rsp, long r8, long r9, struct sgx_enclave_run * run);
+struct sgx_enclave_run {
+  __u64 tcs;
+  __u32 function;
+  __u16 exception_vector;
+  __u16 exception_error_code;
+  __u64 exception_addr;
+  __u64 user_handler;
+  __u64 user_data;
+  __u8 reserved[216];
+};
+typedef int(* vdso_sgx_enter_enclave_t) (unsigned long rdi, unsigned long rsi, unsigned long rdx, unsigned int function, unsigned long r8, unsigned long r9, struct sgx_enclave_run * run);
+#endif
diff --git a/i686-linux-musl/include/asm/shmbuf.h b/i686-linux-musl/include/asm/shmbuf.h
new file mode 100644
index 0000000..03e195e
--- /dev/null
+++ b/i686-linux-musl/include/asm/shmbuf.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 __ASM_X86_SHMBUF_H
+#define __ASM_X86_SHMBUF_H
+#if !defined(__x86_64__) || !defined(__ILP32__)
+#include <asm-generic/shmbuf.h>
+#else
+struct shmid64_ds {
+  struct ipc64_perm shm_perm;
+  size_t shm_segsz;
+  __kernel_long_t shm_atime;
+  __kernel_long_t shm_dtime;
+  __kernel_long_t shm_ctime;
+  __kernel_pid_t shm_cpid;
+  __kernel_pid_t shm_lpid;
+  __kernel_ulong_t shm_nattch;
+  __kernel_ulong_t __unused4;
+  __kernel_ulong_t __unused5;
+};
+struct shminfo64 {
+  __kernel_ulong_t shmmax;
+  __kernel_ulong_t shmmin;
+  __kernel_ulong_t shmmni;
+  __kernel_ulong_t shmseg;
+  __kernel_ulong_t shmall;
+  __kernel_ulong_t __unused1;
+  __kernel_ulong_t __unused2;
+  __kernel_ulong_t __unused3;
+  __kernel_ulong_t __unused4;
+};
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm/sigcontext.h b/i686-linux-musl/include/asm/sigcontext.h
new file mode 100644
index 0000000..7d5b4d4
--- /dev/null
+++ b/i686-linux-musl/include/asm/sigcontext.h
@@ -0,0 +1,225 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_X86_SIGCONTEXT_H
+#define _UAPI_ASM_X86_SIGCONTEXT_H
+#include <linux/compiler.h>
+#include <linux/types.h>
+#define FP_XSTATE_MAGIC1 0x46505853U
+#define FP_XSTATE_MAGIC2 0x46505845U
+#define FP_XSTATE_MAGIC2_SIZE sizeof(FP_XSTATE_MAGIC2)
+struct _fpx_sw_bytes {
+  __u32 magic1;
+  __u32 extended_size;
+  __u64 xfeatures;
+  __u32 xstate_size;
+  __u32 padding[7];
+};
+struct _fpreg {
+  __u16 significand[4];
+  __u16 exponent;
+};
+struct _fpxreg {
+  __u16 significand[4];
+  __u16 exponent;
+  __u16 padding[3];
+};
+struct _xmmreg {
+  __u32 element[4];
+};
+#define X86_FXSR_MAGIC 0x0000
+struct _fpstate_32 {
+  __u32 cw;
+  __u32 sw;
+  __u32 tag;
+  __u32 ipoff;
+  __u32 cssel;
+  __u32 dataoff;
+  __u32 datasel;
+  struct _fpreg _st[8];
+  __u16 status;
+  __u16 magic;
+  __u32 _fxsr_env[6];
+  __u32 mxcsr;
+  __u32 reserved;
+  struct _fpxreg _fxsr_st[8];
+  struct _xmmreg _xmm[8];
+  union {
+    __u32 padding1[44];
+    __u32 padding[44];
+  };
+  union {
+    __u32 padding2[12];
+    struct _fpx_sw_bytes sw_reserved;
+  };
+};
+struct _fpstate_64 {
+  __u16 cwd;
+  __u16 swd;
+  __u16 twd;
+  __u16 fop;
+  __u64 rip;
+  __u64 rdp;
+  __u32 mxcsr;
+  __u32 mxcsr_mask;
+  __u32 st_space[32];
+  __u32 xmm_space[64];
+  __u32 reserved2[12];
+  union {
+    __u32 reserved3[12];
+    struct _fpx_sw_bytes sw_reserved;
+  };
+};
+#ifdef __i386__
+#define _fpstate _fpstate_32
+#else
+#define _fpstate _fpstate_64
+#endif
+struct _header {
+  __u64 xfeatures;
+  __u64 reserved1[2];
+  __u64 reserved2[5];
+};
+struct _ymmh_state {
+  __u32 ymmh_space[64];
+};
+struct _xstate {
+  struct _fpstate fpstate;
+  struct _header xstate_hdr;
+  struct _ymmh_state ymmh;
+};
+struct sigcontext_32 {
+  __u16 gs, __gsh;
+  __u16 fs, __fsh;
+  __u16 es, __esh;
+  __u16 ds, __dsh;
+  __u32 di;
+  __u32 si;
+  __u32 bp;
+  __u32 sp;
+  __u32 bx;
+  __u32 dx;
+  __u32 cx;
+  __u32 ax;
+  __u32 trapno;
+  __u32 err;
+  __u32 ip;
+  __u16 cs, __csh;
+  __u32 flags;
+  __u32 sp_at_signal;
+  __u16 ss, __ssh;
+  __u32 fpstate;
+  __u32 oldmask;
+  __u32 cr2;
+};
+struct sigcontext_64 {
+  __u64 r8;
+  __u64 r9;
+  __u64 r10;
+  __u64 r11;
+  __u64 r12;
+  __u64 r13;
+  __u64 r14;
+  __u64 r15;
+  __u64 di;
+  __u64 si;
+  __u64 bp;
+  __u64 bx;
+  __u64 dx;
+  __u64 ax;
+  __u64 cx;
+  __u64 sp;
+  __u64 ip;
+  __u64 flags;
+  __u16 cs;
+  __u16 gs;
+  __u16 fs;
+  __u16 ss;
+  __u64 err;
+  __u64 trapno;
+  __u64 oldmask;
+  __u64 cr2;
+  __u64 fpstate;
+  __u64 reserved1[8];
+};
+#define _fpstate_ia32 _fpstate_32
+#define sigcontext_ia32 sigcontext_32
+#ifdef __i386__
+struct sigcontext {
+  __u16 gs, __gsh;
+  __u16 fs, __fsh;
+  __u16 es, __esh;
+  __u16 ds, __dsh;
+  __u32 edi;
+  __u32 esi;
+  __u32 ebp;
+  __u32 esp;
+  __u32 ebx;
+  __u32 edx;
+  __u32 ecx;
+  __u32 eax;
+  __u32 trapno;
+  __u32 err;
+  __u32 eip;
+  __u16 cs, __csh;
+  __u32 eflags;
+  __u32 esp_at_signal;
+  __u16 ss, __ssh;
+  struct _fpstate __user * fpstate;
+  __u32 oldmask;
+  __u32 cr2;
+};
+#else
+struct sigcontext {
+  __u64 r8;
+  __u64 r9;
+  __u64 r10;
+  __u64 r11;
+  __u64 r12;
+  __u64 r13;
+  __u64 r14;
+  __u64 r15;
+  __u64 rdi;
+  __u64 rsi;
+  __u64 rbp;
+  __u64 rbx;
+  __u64 rdx;
+  __u64 rax;
+  __u64 rcx;
+  __u64 rsp;
+  __u64 rip;
+  __u64 eflags;
+  __u16 cs;
+  __u16 gs;
+  __u16 fs;
+  union {
+    __u16 ss;
+    __u16 __pad0;
+  };
+  __u64 err;
+  __u64 trapno;
+  __u64 oldmask;
+  __u64 cr2;
+  struct _fpstate __user * fpstate;
+#ifdef __ILP32__
+  __u32 __fpstate_pad;
+#endif
+  __u64 reserved1[8];
+};
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm/sigcontext32.h b/i686-linux-musl/include/asm/sigcontext32.h
new file mode 100644
index 0000000..639467e
--- /dev/null
+++ b/i686-linux-musl/include/asm/sigcontext32.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 _ASM_X86_SIGCONTEXT32_H
+#define _ASM_X86_SIGCONTEXT32_H
+#include <asm/sigcontext.h>
+#endif
diff --git a/i686-linux-musl/include/asm/siginfo.h b/i686-linux-musl/include/asm/siginfo.h
new file mode 100644
index 0000000..0de5283
--- /dev/null
+++ b/i686-linux-musl/include/asm/siginfo.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 _ASM_X86_SIGINFO_H
+#define _ASM_X86_SIGINFO_H
+#ifdef __x86_64__
+#ifdef __ILP32__
+typedef long long __kernel_si_clock_t __attribute__((aligned(4)));
+#define __ARCH_SI_CLOCK_T __kernel_si_clock_t
+#define __ARCH_SI_ATTRIBUTES __attribute__((aligned(8)))
+#endif
+#endif
+#include <asm-generic/siginfo.h>
+#endif
diff --git a/i686-linux-musl/include/asm/signal.h b/i686-linux-musl/include/asm/signal.h
new file mode 100644
index 0000000..8226da8
--- /dev/null
+++ b/i686-linux-musl/include/asm/signal.h
@@ -0,0 +1,96 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_X86_SIGNAL_H
+#define _UAPI_ASM_X86_SIGNAL_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#include <linux/time.h>
+#include <linux/compiler.h>
+struct siginfo;
+#define _KERNEL_NSIG 32
+typedef unsigned long sigset_t;
+#endif
+#define SIGHUP 1
+#define SIGINT 2
+#define SIGQUIT 3
+#define SIGILL 4
+#define SIGTRAP 5
+#define SIGABRT 6
+#define SIGIOT 6
+#define SIGBUS 7
+#define SIGFPE 8
+#define SIGKILL 9
+#define SIGUSR1 10
+#define SIGSEGV 11
+#define SIGUSR2 12
+#define SIGPIPE 13
+#define SIGALRM 14
+#define SIGTERM 15
+#define SIGSTKFLT 16
+#define SIGCHLD 17
+#define SIGCONT 18
+#define SIGSTOP 19
+#define SIGTSTP 20
+#define SIGTTIN 21
+#define SIGTTOU 22
+#define SIGURG 23
+#define SIGXCPU 24
+#define SIGXFSZ 25
+#define SIGVTALRM 26
+#define SIGPROF 27
+#define SIGWINCH 28
+#define SIGIO 29
+#define SIGPOLL SIGIO
+#define SIGPWR 30
+#define SIGSYS 31
+#define SIGUNUSED 31
+#define __SIGRTMIN 32
+#define __SIGRTMAX _KERNEL__NSIG
+#define SA_RESTORER 0x04000000
+#define MINSIGSTKSZ 2048
+#define SIGSTKSZ 8192
+#include <asm-generic/signal-defs.h>
+#ifndef __ASSEMBLY__
+#ifdef __i386__
+struct sigaction {
+  union {
+    __sighandler_t _sa_handler;
+    void(* _sa_sigaction) (int, struct siginfo *, void *);
+  } _u;
+  sigset_t sa_mask;
+  unsigned long sa_flags;
+  void(* sa_restorer) (void);
+};
+#define sa_handler _u._sa_handler
+#define sa_sigaction _u._sa_sigaction
+#else
+struct sigaction {
+  __sighandler_t sa_handler;
+  unsigned long sa_flags;
+  __sigrestore_t sa_restorer;
+  sigset_t sa_mask;
+};
+#endif
+typedef struct sigaltstack {
+  void __user * ss_sp;
+  int ss_flags;
+  size_t ss_size;
+} stack_t;
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm/socket.h b/i686-linux-musl/include/asm/socket.h
new file mode 100644
index 0000000..50a9874
--- /dev/null
+++ b/i686-linux-musl/include/asm/socket.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-generic/socket.h>
diff --git a/i686-linux-musl/include/asm/sockios.h b/i686-linux-musl/include/asm/sockios.h
new file mode 100644
index 0000000..710db92
--- /dev/null
+++ b/i686-linux-musl/include/asm/sockios.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-generic/sockios.h>
diff --git a/i686-linux-musl/include/asm/stat.h b/i686-linux-musl/include/asm/stat.h
new file mode 100644
index 0000000..9b8c37e
--- /dev/null
+++ b/i686-linux-musl/include/asm/stat.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 _ASM_X86_STAT_H
+#define _ASM_X86_STAT_H
+#include <asm/posix_types.h>
+#define STAT_HAVE_NSEC 1
+#ifdef __i386__
+struct stat {
+  unsigned long st_dev;
+  unsigned long st_ino;
+  unsigned short st_mode;
+  unsigned short st_nlink;
+  unsigned short st_uid;
+  unsigned short st_gid;
+  unsigned long st_rdev;
+  unsigned long st_size;
+  unsigned long st_blksize;
+  unsigned long st_blocks;
+  unsigned long st_atime;
+  unsigned long st_atime_nsec;
+  unsigned long st_mtime;
+  unsigned long st_mtime_nsec;
+  unsigned long st_ctime;
+  unsigned long st_ctime_nsec;
+  unsigned long __unused4;
+  unsigned long __unused5;
+};
+#define INIT_STRUCT_STAT_PADDING(st) do { st.__unused4 = 0; st.__unused5 = 0; \
+} while(0)
+#define STAT64_HAS_BROKEN_ST_INO 1
+struct stat64 {
+  unsigned long long st_dev;
+  unsigned char __pad0[4];
+  unsigned long __st_ino;
+  unsigned int st_mode;
+  unsigned int st_nlink;
+  unsigned long st_uid;
+  unsigned long st_gid;
+  unsigned long long st_rdev;
+  unsigned char __pad3[4];
+  long long st_size;
+  unsigned long st_blksize;
+  unsigned long long st_blocks;
+  unsigned long st_atime;
+  unsigned long st_atime_nsec;
+  unsigned long st_mtime;
+  unsigned int st_mtime_nsec;
+  unsigned long st_ctime;
+  unsigned long st_ctime_nsec;
+  unsigned long long st_ino;
+};
+#define INIT_STRUCT_STAT64_PADDING(st) do { memset(& st.__pad0, 0, sizeof(st.__pad0)); memset(& st.__pad3, 0, sizeof(st.__pad3)); \
+} while(0)
+#else
+struct stat {
+  __kernel_ulong_t st_dev;
+  __kernel_ulong_t st_ino;
+  __kernel_ulong_t st_nlink;
+  unsigned int st_mode;
+  unsigned int st_uid;
+  unsigned int st_gid;
+  unsigned int __pad0;
+  __kernel_ulong_t st_rdev;
+  __kernel_long_t st_size;
+  __kernel_long_t st_blksize;
+  __kernel_long_t st_blocks;
+  __kernel_ulong_t st_atime;
+  __kernel_ulong_t st_atime_nsec;
+  __kernel_ulong_t st_mtime;
+  __kernel_ulong_t st_mtime_nsec;
+  __kernel_ulong_t st_ctime;
+  __kernel_ulong_t st_ctime_nsec;
+  __kernel_long_t __linux_unused[3];
+};
+#define INIT_STRUCT_STAT_PADDING(st) do { st.__pad0 = 0; st.__linux_unused[0] = 0; st.__linux_unused[1] = 0; st.__linux_unused[2] = 0; \
+} while(0)
+#endif
+struct __old_kernel_stat {
+  unsigned short st_dev;
+  unsigned short st_ino;
+  unsigned short st_mode;
+  unsigned short st_nlink;
+  unsigned short st_uid;
+  unsigned short st_gid;
+  unsigned short st_rdev;
+#ifdef __i386__
+  unsigned long st_size;
+  unsigned long st_atime;
+  unsigned long st_mtime;
+  unsigned long st_ctime;
+#else
+  unsigned int st_size;
+  unsigned int st_atime;
+  unsigned int st_mtime;
+  unsigned int st_ctime;
+#endif
+};
+#endif
diff --git a/i686-linux-musl/include/asm/statfs.h b/i686-linux-musl/include/asm/statfs.h
new file mode 100644
index 0000000..3ac754c
--- /dev/null
+++ b/i686-linux-musl/include/asm/statfs.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 _ASM_X86_STATFS_H
+#define _ASM_X86_STATFS_H
+#define ARCH_PACK_COMPAT_STATFS64 __attribute__((packed, aligned(4)))
+#include <asm-generic/statfs.h>
+#endif
diff --git a/i686-linux-musl/include/asm/svm.h b/i686-linux-musl/include/asm/svm.h
new file mode 100644
index 0000000..d051481
--- /dev/null
+++ b/i686-linux-musl/include/asm/svm.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__SVM_H
+#define _UAPI__SVM_H
+#define SVM_EXIT_READ_CR0 0x000
+#define SVM_EXIT_READ_CR2 0x002
+#define SVM_EXIT_READ_CR3 0x003
+#define SVM_EXIT_READ_CR4 0x004
+#define SVM_EXIT_READ_CR8 0x008
+#define SVM_EXIT_WRITE_CR0 0x010
+#define SVM_EXIT_WRITE_CR2 0x012
+#define SVM_EXIT_WRITE_CR3 0x013
+#define SVM_EXIT_WRITE_CR4 0x014
+#define SVM_EXIT_WRITE_CR8 0x018
+#define SVM_EXIT_READ_DR0 0x020
+#define SVM_EXIT_READ_DR1 0x021
+#define SVM_EXIT_READ_DR2 0x022
+#define SVM_EXIT_READ_DR3 0x023
+#define SVM_EXIT_READ_DR4 0x024
+#define SVM_EXIT_READ_DR5 0x025
+#define SVM_EXIT_READ_DR6 0x026
+#define SVM_EXIT_READ_DR7 0x027
+#define SVM_EXIT_WRITE_DR0 0x030
+#define SVM_EXIT_WRITE_DR1 0x031
+#define SVM_EXIT_WRITE_DR2 0x032
+#define SVM_EXIT_WRITE_DR3 0x033
+#define SVM_EXIT_WRITE_DR4 0x034
+#define SVM_EXIT_WRITE_DR5 0x035
+#define SVM_EXIT_WRITE_DR6 0x036
+#define SVM_EXIT_WRITE_DR7 0x037
+#define SVM_EXIT_EXCP_BASE 0x040
+#define SVM_EXIT_LAST_EXCP 0x05f
+#define SVM_EXIT_INTR 0x060
+#define SVM_EXIT_NMI 0x061
+#define SVM_EXIT_SMI 0x062
+#define SVM_EXIT_INIT 0x063
+#define SVM_EXIT_VINTR 0x064
+#define SVM_EXIT_CR0_SEL_WRITE 0x065
+#define SVM_EXIT_IDTR_READ 0x066
+#define SVM_EXIT_GDTR_READ 0x067
+#define SVM_EXIT_LDTR_READ 0x068
+#define SVM_EXIT_TR_READ 0x069
+#define SVM_EXIT_IDTR_WRITE 0x06a
+#define SVM_EXIT_GDTR_WRITE 0x06b
+#define SVM_EXIT_LDTR_WRITE 0x06c
+#define SVM_EXIT_TR_WRITE 0x06d
+#define SVM_EXIT_RDTSC 0x06e
+#define SVM_EXIT_RDPMC 0x06f
+#define SVM_EXIT_PUSHF 0x070
+#define SVM_EXIT_POPF 0x071
+#define SVM_EXIT_CPUID 0x072
+#define SVM_EXIT_RSM 0x073
+#define SVM_EXIT_IRET 0x074
+#define SVM_EXIT_SWINT 0x075
+#define SVM_EXIT_INVD 0x076
+#define SVM_EXIT_PAUSE 0x077
+#define SVM_EXIT_HLT 0x078
+#define SVM_EXIT_INVLPG 0x079
+#define SVM_EXIT_INVLPGA 0x07a
+#define SVM_EXIT_IOIO 0x07b
+#define SVM_EXIT_MSR 0x07c
+#define SVM_EXIT_TASK_SWITCH 0x07d
+#define SVM_EXIT_FERR_FREEZE 0x07e
+#define SVM_EXIT_SHUTDOWN 0x07f
+#define SVM_EXIT_VMRUN 0x080
+#define SVM_EXIT_VMMCALL 0x081
+#define SVM_EXIT_VMLOAD 0x082
+#define SVM_EXIT_VMSAVE 0x083
+#define SVM_EXIT_STGI 0x084
+#define SVM_EXIT_CLGI 0x085
+#define SVM_EXIT_SKINIT 0x086
+#define SVM_EXIT_RDTSCP 0x087
+#define SVM_EXIT_ICEBP 0x088
+#define SVM_EXIT_WBINVD 0x089
+#define SVM_EXIT_MONITOR 0x08a
+#define SVM_EXIT_MWAIT 0x08b
+#define SVM_EXIT_MWAIT_COND 0x08c
+#define SVM_EXIT_XSETBV 0x08d
+#define SVM_EXIT_RDPRU 0x08e
+#define SVM_EXIT_EFER_WRITE_TRAP 0x08f
+#define SVM_EXIT_CR0_WRITE_TRAP 0x090
+#define SVM_EXIT_CR1_WRITE_TRAP 0x091
+#define SVM_EXIT_CR2_WRITE_TRAP 0x092
+#define SVM_EXIT_CR3_WRITE_TRAP 0x093
+#define SVM_EXIT_CR4_WRITE_TRAP 0x094
+#define SVM_EXIT_CR5_WRITE_TRAP 0x095
+#define SVM_EXIT_CR6_WRITE_TRAP 0x096
+#define SVM_EXIT_CR7_WRITE_TRAP 0x097
+#define SVM_EXIT_CR8_WRITE_TRAP 0x098
+#define SVM_EXIT_CR9_WRITE_TRAP 0x099
+#define SVM_EXIT_CR10_WRITE_TRAP 0x09a
+#define SVM_EXIT_CR11_WRITE_TRAP 0x09b
+#define SVM_EXIT_CR12_WRITE_TRAP 0x09c
+#define SVM_EXIT_CR13_WRITE_TRAP 0x09d
+#define SVM_EXIT_CR14_WRITE_TRAP 0x09e
+#define SVM_EXIT_CR15_WRITE_TRAP 0x09f
+#define SVM_EXIT_INVPCID 0x0a2
+#define SVM_EXIT_NPF 0x400
+#define SVM_EXIT_AVIC_INCOMPLETE_IPI 0x401
+#define SVM_EXIT_AVIC_UNACCELERATED_ACCESS 0x402
+#define SVM_EXIT_VMGEXIT 0x403
+#define SVM_VMGEXIT_MMIO_READ 0x80000001
+#define SVM_VMGEXIT_MMIO_WRITE 0x80000002
+#define SVM_VMGEXIT_NMI_COMPLETE 0x80000003
+#define SVM_VMGEXIT_AP_HLT_LOOP 0x80000004
+#define SVM_VMGEXIT_AP_JUMP_TABLE 0x80000005
+#define SVM_VMGEXIT_SET_AP_JUMP_TABLE 0
+#define SVM_VMGEXIT_GET_AP_JUMP_TABLE 1
+#define SVM_VMGEXIT_UNSUPPORTED_EVENT 0x8000ffff
+#define SVM_EXIT_SW 0xf0000000
+#define SVM_EXIT_ERR - 1
+#define SVM_EXIT_REASONS { SVM_EXIT_READ_CR0, "read_cr0" }, { SVM_EXIT_READ_CR2, "read_cr2" }, { SVM_EXIT_READ_CR3, "read_cr3" }, { SVM_EXIT_READ_CR4, "read_cr4" }, { SVM_EXIT_READ_CR8, "read_cr8" }, { SVM_EXIT_WRITE_CR0, "write_cr0" }, { SVM_EXIT_WRITE_CR2, "write_cr2" }, { SVM_EXIT_WRITE_CR3, "write_cr3" }, { SVM_EXIT_WRITE_CR4, "write_cr4" }, { SVM_EXIT_WRITE_CR8, "write_cr8" }, { SVM_EXIT_READ_DR0, "read_dr0" }, { SVM_EXIT_READ_DR1, "read_dr1" }, { SVM_EXIT_READ_DR2, "read_dr2" }, { SVM_EXIT_READ_DR3, "read_dr3" }, { SVM_EXIT_READ_DR4, "read_dr4" }, { SVM_EXIT_READ_DR5, "read_dr5" }, { SVM_EXIT_READ_DR6, "read_dr6" }, { SVM_EXIT_READ_DR7, "read_dr7" }, { SVM_EXIT_WRITE_DR0, "write_dr0" }, { SVM_EXIT_WRITE_DR1, "write_dr1" }, { SVM_EXIT_WRITE_DR2, "write_dr2" }, { SVM_EXIT_WRITE_DR3, "write_dr3" }, { SVM_EXIT_WRITE_DR4, "write_dr4" }, { SVM_EXIT_WRITE_DR5, "write_dr5" }, { SVM_EXIT_WRITE_DR6, "write_dr6" }, { SVM_EXIT_WRITE_DR7, "write_dr7" }, { SVM_EXIT_EXCP_BASE + DE_VECTOR, "DE excp" }, { SVM_EXIT_EXCP_BASE + DB_VECTOR, "DB excp" }, { SVM_EXIT_EXCP_BASE + BP_VECTOR, "BP excp" }, { SVM_EXIT_EXCP_BASE + OF_VECTOR, "OF excp" }, { SVM_EXIT_EXCP_BASE + BR_VECTOR, "BR excp" }, { SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" }, { SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" }, { SVM_EXIT_EXCP_BASE + DF_VECTOR, "DF excp" }, { SVM_EXIT_EXCP_BASE + TS_VECTOR, "TS excp" }, { SVM_EXIT_EXCP_BASE + NP_VECTOR, "NP excp" }, { SVM_EXIT_EXCP_BASE + SS_VECTOR, "SS excp" }, { SVM_EXIT_EXCP_BASE + GP_VECTOR, "GP excp" }, { SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" }, { SVM_EXIT_EXCP_BASE + MF_VECTOR, "MF excp" }, { SVM_EXIT_EXCP_BASE + AC_VECTOR, "AC excp" }, { SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" }, { SVM_EXIT_EXCP_BASE + XM_VECTOR, "XF excp" }, { SVM_EXIT_INTR, "interrupt" }, { SVM_EXIT_NMI, "nmi" }, { SVM_EXIT_SMI, "smi" }, { SVM_EXIT_INIT, "init" }, { SVM_EXIT_VINTR, "vintr" }, { SVM_EXIT_CR0_SEL_WRITE, "cr0_sel_write" }, { SVM_EXIT_IDTR_READ, "read_idtr" }, { SVM_EXIT_GDTR_READ, "read_gdtr" }, { SVM_EXIT_LDTR_READ, "read_ldtr" }, { SVM_EXIT_TR_READ, "read_rt" }, { SVM_EXIT_IDTR_WRITE, "write_idtr" }, { SVM_EXIT_GDTR_WRITE, "write_gdtr" }, { SVM_EXIT_LDTR_WRITE, "write_ldtr" }, { SVM_EXIT_TR_WRITE, "write_rt" }, { SVM_EXIT_RDTSC, "rdtsc" }, { SVM_EXIT_RDPMC, "rdpmc" }, { SVM_EXIT_PUSHF, "pushf" }, { SVM_EXIT_POPF, "popf" }, { SVM_EXIT_CPUID, "cpuid" }, { SVM_EXIT_RSM, "rsm" }, { SVM_EXIT_IRET, "iret" }, { SVM_EXIT_SWINT, "swint" }, { SVM_EXIT_INVD, "invd" }, { SVM_EXIT_PAUSE, "pause" }, { SVM_EXIT_HLT, "hlt" }, { SVM_EXIT_INVLPG, "invlpg" }, { SVM_EXIT_INVLPGA, "invlpga" }, { SVM_EXIT_IOIO, "io" }, { SVM_EXIT_MSR, "msr" }, { SVM_EXIT_TASK_SWITCH, "task_switch" }, { SVM_EXIT_FERR_FREEZE, "ferr_freeze" }, { SVM_EXIT_SHUTDOWN, "shutdown" }, { SVM_EXIT_VMRUN, "vmrun" }, { SVM_EXIT_VMMCALL, "hypercall" }, { SVM_EXIT_VMLOAD, "vmload" }, { SVM_EXIT_VMSAVE, "vmsave" }, { SVM_EXIT_STGI, "stgi" }, { SVM_EXIT_CLGI, "clgi" }, { SVM_EXIT_SKINIT, "skinit" }, { SVM_EXIT_RDTSCP, "rdtscp" }, { SVM_EXIT_ICEBP, "icebp" }, { SVM_EXIT_WBINVD, "wbinvd" }, { SVM_EXIT_MONITOR, "monitor" }, { SVM_EXIT_MWAIT, "mwait" }, { SVM_EXIT_XSETBV, "xsetbv" }, { SVM_EXIT_EFER_WRITE_TRAP, "write_efer_trap" }, { SVM_EXIT_CR0_WRITE_TRAP, "write_cr0_trap" }, { SVM_EXIT_CR4_WRITE_TRAP, "write_cr4_trap" }, { SVM_EXIT_CR8_WRITE_TRAP, "write_cr8_trap" }, { SVM_EXIT_INVPCID, "invpcid" }, { SVM_EXIT_NPF, "npf" }, { SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, { SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" }, { SVM_EXIT_VMGEXIT, "vmgexit" }, { SVM_VMGEXIT_MMIO_READ, "vmgexit_mmio_read" }, { SVM_VMGEXIT_MMIO_WRITE, "vmgexit_mmio_write" }, { SVM_VMGEXIT_NMI_COMPLETE, "vmgexit_nmi_complete" }, { SVM_VMGEXIT_AP_HLT_LOOP, "vmgexit_ap_hlt_loop" }, { SVM_VMGEXIT_AP_JUMP_TABLE, "vmgexit_ap_jump_table" }, { SVM_EXIT_ERR, "invalid_guest_state" }
+#endif
diff --git a/i686-linux-musl/include/asm/swab.h b/i686-linux-musl/include/asm/swab.h
new file mode 100644
index 0000000..24fd5e3
--- /dev/null
+++ b/i686-linux-musl/include/asm/swab.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 _ASM_X86_SWAB_H
+#define _ASM_X86_SWAB_H
+#include <linux/types.h>
+#include <linux/compiler.h>
+#define __arch_swab32 __arch_swab32
+#ifdef __i386__
+#else
+#endif
+#define __arch_swab64 __arch_swab64
+#endif
diff --git a/i686-linux-musl/include/asm/termbits.h b/i686-linux-musl/include/asm/termbits.h
new file mode 100644
index 0000000..42af6fe
--- /dev/null
+++ b/i686-linux-musl/include/asm/termbits.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-generic/termbits.h>
diff --git a/i686-linux-musl/include/asm/termios.h b/i686-linux-musl/include/asm/termios.h
new file mode 100644
index 0000000..feca4c6
--- /dev/null
+++ b/i686-linux-musl/include/asm/termios.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-generic/termios.h>
diff --git a/i686-linux-musl/include/asm/types.h b/i686-linux-musl/include/asm/types.h
new file mode 100644
index 0000000..8250f43
--- /dev/null
+++ b/i686-linux-musl/include/asm/types.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-generic/types.h>
diff --git a/i686-linux-musl/include/asm/ucontext.h b/i686-linux-musl/include/asm/ucontext.h
new file mode 100644
index 0000000..1bb416f
--- /dev/null
+++ b/i686-linux-musl/include/asm/ucontext.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 _ASM_X86_UCONTEXT_H
+#define _ASM_X86_UCONTEXT_H
+#define UC_FP_XSTATE 0x1
+#ifdef __x86_64__
+#define UC_SIGCONTEXT_SS 0x2
+#define UC_STRICT_RESTORE_SS 0x4
+#endif
+#include <asm-generic/ucontext.h>
+#endif
diff --git a/i686-linux-musl/include/asm/unistd.h b/i686-linux-musl/include/asm/unistd.h
new file mode 100644
index 0000000..8cab383
--- /dev/null
+++ b/i686-linux-musl/include/asm/unistd.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_ASM_X86_UNISTD_H
+#define _UAPI_ASM_X86_UNISTD_H
+#define __X32_SYSCALL_BIT 0x40000000
+#ifdef __i386__
+#include <asm/unistd_32.h>
+#elif defined(__ILP32__)
+#include <asm/unistd_x32.h>
+#else
+#include <asm/unistd_64.h>
+#endif
+#endif
diff --git a/i686-linux-musl/include/asm/unistd_32.h b/i686-linux-musl/include/asm/unistd_32.h
new file mode 100644
index 0000000..3a353fe
--- /dev/null
+++ b/i686-linux-musl/include/asm/unistd_32.h
@@ -0,0 +1,460 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_UNISTD_32_H
+#define _UAPI_ASM_UNISTD_32_H
+#define __NR_restart_syscall 0
+#define __NR_exit 1
+#define __NR_fork 2
+#define __NR_read 3
+#define __NR_write 4
+#define __NR_open 5
+#define __NR_close 6
+#define __NR_waitpid 7
+#define __NR_creat 8
+#define __NR_link 9
+#define __NR_unlink 10
+#define __NR_execve 11
+#define __NR_chdir 12
+#define __NR_time 13
+#define __NR_mknod 14
+#define __NR_chmod 15
+#define __NR_lchown 16
+#define __NR_break 17
+#define __NR_oldstat 18
+#define __NR_lseek 19
+#define __NR_getpid 20
+#define __NR_mount 21
+#define __NR_umount 22
+#define __NR_setuid 23
+#define __NR_getuid 24
+#define __NR_stime 25
+#define __NR_ptrace 26
+#define __NR_alarm 27
+#define __NR_oldfstat 28
+#define __NR_pause 29
+#define __NR_utime 30
+#define __NR_stty 31
+#define __NR_gtty 32
+#define __NR_access 33
+#define __NR_nice 34
+#define __NR_ftime 35
+#define __NR_sync 36
+#define __NR_kill 37
+#define __NR_rename 38
+#define __NR_mkdir 39
+#define __NR_rmdir 40
+#define __NR_dup 41
+#define __NR_pipe 42
+#define __NR_times 43
+#define __NR_prof 44
+#define __NR_brk 45
+#define __NR_setgid 46
+#define __NR_getgid 47
+#define __NR_signal 48
+#define __NR_geteuid 49
+#define __NR_getegid 50
+#define __NR_acct 51
+#define __NR_umount2 52
+#define __NR_lock 53
+#define __NR_ioctl 54
+#define __NR_fcntl 55
+#define __NR_mpx 56
+#define __NR_setpgid 57
+#define __NR_ulimit 58
+#define __NR_oldolduname 59
+#define __NR_umask 60
+#define __NR_chroot 61
+#define __NR_ustat 62
+#define __NR_dup2 63
+#define __NR_getppid 64
+#define __NR_getpgrp 65
+#define __NR_setsid 66
+#define __NR_sigaction 67
+#define __NR_sgetmask 68
+#define __NR_ssetmask 69
+#define __NR_setreuid 70
+#define __NR_setregid 71
+#define __NR_sigsuspend 72
+#define __NR_sigpending 73
+#define __NR_sethostname 74
+#define __NR_setrlimit 75
+#define __NR_getrlimit 76
+#define __NR_getrusage 77
+#define __NR_gettimeofday 78
+#define __NR_settimeofday 79
+#define __NR_getgroups 80
+#define __NR_setgroups 81
+#define __NR_select 82
+#define __NR_symlink 83
+#define __NR_oldlstat 84
+#define __NR_readlink 85
+#define __NR_uselib 86
+#define __NR_swapon 87
+#define __NR_reboot 88
+#define __NR_readdir 89
+#define __NR_mmap 90
+#define __NR_munmap 91
+#define __NR_truncate 92
+#define __NR_ftruncate 93
+#define __NR_fchmod 94
+#define __NR_fchown 95
+#define __NR_getpriority 96
+#define __NR_setpriority 97
+#define __NR_profil 98
+#define __NR_statfs 99
+#define __NR_fstatfs 100
+#define __NR_ioperm 101
+#define __NR_socketcall 102
+#define __NR_syslog 103
+#define __NR_setitimer 104
+#define __NR_getitimer 105
+#define __NR_stat 106
+#define __NR_lstat 107
+#define __NR_fstat 108
+#define __NR_olduname 109
+#define __NR_iopl 110
+#define __NR_vhangup 111
+#define __NR_idle 112
+#define __NR_vm86old 113
+#define __NR_wait4 114
+#define __NR_swapoff 115
+#define __NR_sysinfo 116
+#define __NR_ipc 117
+#define __NR_fsync 118
+#define __NR_sigreturn 119
+#define __NR_clone 120
+#define __NR_setdomainname 121
+#define __NR_uname 122
+#define __NR_modify_ldt 123
+#define __NR_adjtimex 124
+#define __NR_mprotect 125
+#define __NR_sigprocmask 126
+#define __NR_create_module 127
+#define __NR_init_module 128
+#define __NR_delete_module 129
+#define __NR_get_kernel_syms 130
+#define __NR_quotactl 131
+#define __NR_getpgid 132
+#define __NR_fchdir 133
+#define __NR_bdflush 134
+#define __NR_sysfs 135
+#define __NR_personality 136
+#define __NR_afs_syscall 137
+#define __NR_setfsuid 138
+#define __NR_setfsgid 139
+#define __NR__llseek 140
+#define __NR_getdents 141
+#define __NR__newselect 142
+#define __NR_flock 143
+#define __NR_msync 144
+#define __NR_readv 145
+#define __NR_writev 146
+#define __NR_getsid 147
+#define __NR_fdatasync 148
+#define __NR__sysctl 149
+#define __NR_mlock 150
+#define __NR_munlock 151
+#define __NR_mlockall 152
+#define __NR_munlockall 153
+#define __NR_sched_setparam 154
+#define __NR_sched_getparam 155
+#define __NR_sched_setscheduler 156
+#define __NR_sched_getscheduler 157
+#define __NR_sched_yield 158
+#define __NR_sched_get_priority_max 159
+#define __NR_sched_get_priority_min 160
+#define __NR_sched_rr_get_interval 161
+#define __NR_nanosleep 162
+#define __NR_mremap 163
+#define __NR_setresuid 164
+#define __NR_getresuid 165
+#define __NR_vm86 166
+#define __NR_query_module 167
+#define __NR_poll 168
+#define __NR_nfsservctl 169
+#define __NR_setresgid 170
+#define __NR_getresgid 171
+#define __NR_prctl 172
+#define __NR_rt_sigreturn 173
+#define __NR_rt_sigaction 174
+#define __NR_rt_sigprocmask 175
+#define __NR_rt_sigpending 176
+#define __NR_rt_sigtimedwait 177
+#define __NR_rt_sigqueueinfo 178
+#define __NR_rt_sigsuspend 179
+#define __NR_pread64 180
+#define __NR_pwrite64 181
+#define __NR_chown 182
+#define __NR_getcwd 183
+#define __NR_capget 184
+#define __NR_capset 185
+#define __NR_sigaltstack 186
+#define __NR_sendfile 187
+#define __NR_getpmsg 188
+#define __NR_putpmsg 189
+#define __NR_vfork 190
+#define __NR_ugetrlimit 191
+#define __NR_mmap2 192
+#define __NR_truncate64 193
+#define __NR_ftruncate64 194
+#define __NR_stat64 195
+#define __NR_lstat64 196
+#define __NR_fstat64 197
+#define __NR_lchown32 198
+#define __NR_getuid32 199
+#define __NR_getgid32 200
+#define __NR_geteuid32 201
+#define __NR_getegid32 202
+#define __NR_setreuid32 203
+#define __NR_setregid32 204
+#define __NR_getgroups32 205
+#define __NR_setgroups32 206
+#define __NR_fchown32 207
+#define __NR_setresuid32 208
+#define __NR_getresuid32 209
+#define __NR_setresgid32 210
+#define __NR_getresgid32 211
+#define __NR_chown32 212
+#define __NR_setuid32 213
+#define __NR_setgid32 214
+#define __NR_setfsuid32 215
+#define __NR_setfsgid32 216
+#define __NR_pivot_root 217
+#define __NR_mincore 218
+#define __NR_madvise 219
+#define __NR_getdents64 220
+#define __NR_fcntl64 221
+#define __NR_gettid 224
+#define __NR_readahead 225
+#define __NR_setxattr 226
+#define __NR_lsetxattr 227
+#define __NR_fsetxattr 228
+#define __NR_getxattr 229
+#define __NR_lgetxattr 230
+#define __NR_fgetxattr 231
+#define __NR_listxattr 232
+#define __NR_llistxattr 233
+#define __NR_flistxattr 234
+#define __NR_removexattr 235
+#define __NR_lremovexattr 236
+#define __NR_fremovexattr 237
+#define __NR_tkill 238
+#define __NR_sendfile64 239
+#define __NR_futex 240
+#define __NR_sched_setaffinity 241
+#define __NR_sched_getaffinity 242
+#define __NR_set_thread_area 243
+#define __NR_get_thread_area 244
+#define __NR_io_setup 245
+#define __NR_io_destroy 246
+#define __NR_io_getevents 247
+#define __NR_io_submit 248
+#define __NR_io_cancel 249
+#define __NR_fadvise64 250
+#define __NR_exit_group 252
+#define __NR_lookup_dcookie 253
+#define __NR_epoll_create 254
+#define __NR_epoll_ctl 255
+#define __NR_epoll_wait 256
+#define __NR_remap_file_pages 257
+#define __NR_set_tid_address 258
+#define __NR_timer_create 259
+#define __NR_timer_settime 260
+#define __NR_timer_gettime 261
+#define __NR_timer_getoverrun 262
+#define __NR_timer_delete 263
+#define __NR_clock_settime 264
+#define __NR_clock_gettime 265
+#define __NR_clock_getres 266
+#define __NR_clock_nanosleep 267
+#define __NR_statfs64 268
+#define __NR_fstatfs64 269
+#define __NR_tgkill 270
+#define __NR_utimes 271
+#define __NR_fadvise64_64 272
+#define __NR_vserver 273
+#define __NR_mbind 274
+#define __NR_get_mempolicy 275
+#define __NR_set_mempolicy 276
+#define __NR_mq_open 277
+#define __NR_mq_unlink 278
+#define __NR_mq_timedsend 279
+#define __NR_mq_timedreceive 280
+#define __NR_mq_notify 281
+#define __NR_mq_getsetattr 282
+#define __NR_kexec_load 283
+#define __NR_waitid 284
+#define __NR_add_key 286
+#define __NR_request_key 287
+#define __NR_keyctl 288
+#define __NR_ioprio_set 289
+#define __NR_ioprio_get 290
+#define __NR_inotify_init 291
+#define __NR_inotify_add_watch 292
+#define __NR_inotify_rm_watch 293
+#define __NR_migrate_pages 294
+#define __NR_openat 295
+#define __NR_mkdirat 296
+#define __NR_mknodat 297
+#define __NR_fchownat 298
+#define __NR_futimesat 299
+#define __NR_fstatat64 300
+#define __NR_unlinkat 301
+#define __NR_renameat 302
+#define __NR_linkat 303
+#define __NR_symlinkat 304
+#define __NR_readlinkat 305
+#define __NR_fchmodat 306
+#define __NR_faccessat 307
+#define __NR_pselect6 308
+#define __NR_ppoll 309
+#define __NR_unshare 310
+#define __NR_set_robust_list 311
+#define __NR_get_robust_list 312
+#define __NR_splice 313
+#define __NR_sync_file_range 314
+#define __NR_tee 315
+#define __NR_vmsplice 316
+#define __NR_move_pages 317
+#define __NR_getcpu 318
+#define __NR_epoll_pwait 319
+#define __NR_utimensat 320
+#define __NR_signalfd 321
+#define __NR_timerfd_create 322
+#define __NR_eventfd 323
+#define __NR_fallocate 324
+#define __NR_timerfd_settime 325
+#define __NR_timerfd_gettime 326
+#define __NR_signalfd4 327
+#define __NR_eventfd2 328
+#define __NR_epoll_create1 329
+#define __NR_dup3 330
+#define __NR_pipe2 331
+#define __NR_inotify_init1 332
+#define __NR_preadv 333
+#define __NR_pwritev 334
+#define __NR_rt_tgsigqueueinfo 335
+#define __NR_perf_event_open 336
+#define __NR_recvmmsg 337
+#define __NR_fanotify_init 338
+#define __NR_fanotify_mark 339
+#define __NR_prlimit64 340
+#define __NR_name_to_handle_at 341
+#define __NR_open_by_handle_at 342
+#define __NR_clock_adjtime 343
+#define __NR_syncfs 344
+#define __NR_sendmmsg 345
+#define __NR_setns 346
+#define __NR_process_vm_readv 347
+#define __NR_process_vm_writev 348
+#define __NR_kcmp 349
+#define __NR_finit_module 350
+#define __NR_sched_setattr 351
+#define __NR_sched_getattr 352
+#define __NR_renameat2 353
+#define __NR_seccomp 354
+#define __NR_getrandom 355
+#define __NR_memfd_create 356
+#define __NR_bpf 357
+#define __NR_execveat 358
+#define __NR_socket 359
+#define __NR_socketpair 360
+#define __NR_bind 361
+#define __NR_connect 362
+#define __NR_listen 363
+#define __NR_accept4 364
+#define __NR_getsockopt 365
+#define __NR_setsockopt 366
+#define __NR_getsockname 367
+#define __NR_getpeername 368
+#define __NR_sendto 369
+#define __NR_sendmsg 370
+#define __NR_recvfrom 371
+#define __NR_recvmsg 372
+#define __NR_shutdown 373
+#define __NR_userfaultfd 374
+#define __NR_membarrier 375
+#define __NR_mlock2 376
+#define __NR_copy_file_range 377
+#define __NR_preadv2 378
+#define __NR_pwritev2 379
+#define __NR_pkey_mprotect 380
+#define __NR_pkey_alloc 381
+#define __NR_pkey_free 382
+#define __NR_statx 383
+#define __NR_arch_prctl 384
+#define __NR_io_pgetevents 385
+#define __NR_rseq 386
+#define __NR_semget 393
+#define __NR_semctl 394
+#define __NR_shmget 395
+#define __NR_shmctl 396
+#define __NR_shmat 397
+#define __NR_shmdt 398
+#define __NR_msgget 399
+#define __NR_msgsnd 400
+#define __NR_msgrcv 401
+#define __NR_msgctl 402
+#define __NR_clock_gettime64 403
+#define __NR_clock_settime64 404
+#define __NR_clock_adjtime64 405
+#define __NR_clock_getres_time64 406
+#define __NR_clock_nanosleep_time64 407
+#define __NR_timer_gettime64 408
+#define __NR_timer_settime64 409
+#define __NR_timerfd_gettime64 410
+#define __NR_timerfd_settime64 411
+#define __NR_utimensat_time64 412
+#define __NR_pselect6_time64 413
+#define __NR_ppoll_time64 414
+#define __NR_io_pgetevents_time64 416
+#define __NR_recvmmsg_time64 417
+#define __NR_mq_timedsend_time64 418
+#define __NR_mq_timedreceive_time64 419
+#define __NR_semtimedop_time64 420
+#define __NR_rt_sigtimedwait_time64 421
+#define __NR_futex_time64 422
+#define __NR_sched_rr_get_interval_time64 423
+#define __NR_pidfd_send_signal 424
+#define __NR_io_uring_setup 425
+#define __NR_io_uring_enter 426
+#define __NR_io_uring_register 427
+#define __NR_open_tree 428
+#define __NR_move_mount 429
+#define __NR_fsopen 430
+#define __NR_fsconfig 431
+#define __NR_fsmount 432
+#define __NR_fspick 433
+#define __NR_pidfd_open 434
+#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
+#define __NR_process_madvise 440
+#define __NR_epoll_pwait2 441
+#define __NR_mount_setattr 442
+#define __NR_quotactl_fd 443
+#define __NR_landlock_create_ruleset 444
+#define __NR_landlock_add_rule 445
+#define __NR_landlock_restrict_self 446
+#define __NR_memfd_secret 447
+#define __NR_process_mrelease 448
+#define __NR_futex_waitv 449
+#endif
diff --git a/i686-linux-musl/include/asm/unistd_64.h b/i686-linux-musl/include/asm/unistd_64.h
new file mode 100644
index 0000000..5fa4d2c
--- /dev/null
+++ b/i686-linux-musl/include/asm/unistd_64.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_ASM_UNISTD_64_H
+#define _UAPI_ASM_UNISTD_64_H
+#define __NR_read 0
+#define __NR_write 1
+#define __NR_open 2
+#define __NR_close 3
+#define __NR_stat 4
+#define __NR_fstat 5
+#define __NR_lstat 6
+#define __NR_poll 7
+#define __NR_lseek 8
+#define __NR_mmap 9
+#define __NR_mprotect 10
+#define __NR_munmap 11
+#define __NR_brk 12
+#define __NR_rt_sigaction 13
+#define __NR_rt_sigprocmask 14
+#define __NR_rt_sigreturn 15
+#define __NR_ioctl 16
+#define __NR_pread64 17
+#define __NR_pwrite64 18
+#define __NR_readv 19
+#define __NR_writev 20
+#define __NR_access 21
+#define __NR_pipe 22
+#define __NR_select 23
+#define __NR_sched_yield 24
+#define __NR_mremap 25
+#define __NR_msync 26
+#define __NR_mincore 27
+#define __NR_madvise 28
+#define __NR_shmget 29
+#define __NR_shmat 30
+#define __NR_shmctl 31
+#define __NR_dup 32
+#define __NR_dup2 33
+#define __NR_pause 34
+#define __NR_nanosleep 35
+#define __NR_getitimer 36
+#define __NR_alarm 37
+#define __NR_setitimer 38
+#define __NR_getpid 39
+#define __NR_sendfile 40
+#define __NR_socket 41
+#define __NR_connect 42
+#define __NR_accept 43
+#define __NR_sendto 44
+#define __NR_recvfrom 45
+#define __NR_sendmsg 46
+#define __NR_recvmsg 47
+#define __NR_shutdown 48
+#define __NR_bind 49
+#define __NR_listen 50
+#define __NR_getsockname 51
+#define __NR_getpeername 52
+#define __NR_socketpair 53
+#define __NR_setsockopt 54
+#define __NR_getsockopt 55
+#define __NR_clone 56
+#define __NR_fork 57
+#define __NR_vfork 58
+#define __NR_execve 59
+#define __NR_exit 60
+#define __NR_wait4 61
+#define __NR_kill 62
+#define __NR_uname 63
+#define __NR_semget 64
+#define __NR_semop 65
+#define __NR_semctl 66
+#define __NR_shmdt 67
+#define __NR_msgget 68
+#define __NR_msgsnd 69
+#define __NR_msgrcv 70
+#define __NR_msgctl 71
+#define __NR_fcntl 72
+#define __NR_flock 73
+#define __NR_fsync 74
+#define __NR_fdatasync 75
+#define __NR_truncate 76
+#define __NR_ftruncate 77
+#define __NR_getdents 78
+#define __NR_getcwd 79
+#define __NR_chdir 80
+#define __NR_fchdir 81
+#define __NR_rename 82
+#define __NR_mkdir 83
+#define __NR_rmdir 84
+#define __NR_creat 85
+#define __NR_link 86
+#define __NR_unlink 87
+#define __NR_symlink 88
+#define __NR_readlink 89
+#define __NR_chmod 90
+#define __NR_fchmod 91
+#define __NR_chown 92
+#define __NR_fchown 93
+#define __NR_lchown 94
+#define __NR_umask 95
+#define __NR_gettimeofday 96
+#define __NR_getrlimit 97
+#define __NR_getrusage 98
+#define __NR_sysinfo 99
+#define __NR_times 100
+#define __NR_ptrace 101
+#define __NR_getuid 102
+#define __NR_syslog 103
+#define __NR_getgid 104
+#define __NR_setuid 105
+#define __NR_setgid 106
+#define __NR_geteuid 107
+#define __NR_getegid 108
+#define __NR_setpgid 109
+#define __NR_getppid 110
+#define __NR_getpgrp 111
+#define __NR_setsid 112
+#define __NR_setreuid 113
+#define __NR_setregid 114
+#define __NR_getgroups 115
+#define __NR_setgroups 116
+#define __NR_setresuid 117
+#define __NR_getresuid 118
+#define __NR_setresgid 119
+#define __NR_getresgid 120
+#define __NR_getpgid 121
+#define __NR_setfsuid 122
+#define __NR_setfsgid 123
+#define __NR_getsid 124
+#define __NR_capget 125
+#define __NR_capset 126
+#define __NR_rt_sigpending 127
+#define __NR_rt_sigtimedwait 128
+#define __NR_rt_sigqueueinfo 129
+#define __NR_rt_sigsuspend 130
+#define __NR_sigaltstack 131
+#define __NR_utime 132
+#define __NR_mknod 133
+#define __NR_uselib 134
+#define __NR_personality 135
+#define __NR_ustat 136
+#define __NR_statfs 137
+#define __NR_fstatfs 138
+#define __NR_sysfs 139
+#define __NR_getpriority 140
+#define __NR_setpriority 141
+#define __NR_sched_setparam 142
+#define __NR_sched_getparam 143
+#define __NR_sched_setscheduler 144
+#define __NR_sched_getscheduler 145
+#define __NR_sched_get_priority_max 146
+#define __NR_sched_get_priority_min 147
+#define __NR_sched_rr_get_interval 148
+#define __NR_mlock 149
+#define __NR_munlock 150
+#define __NR_mlockall 151
+#define __NR_munlockall 152
+#define __NR_vhangup 153
+#define __NR_modify_ldt 154
+#define __NR_pivot_root 155
+#define __NR__sysctl 156
+#define __NR_prctl 157
+#define __NR_arch_prctl 158
+#define __NR_adjtimex 159
+#define __NR_setrlimit 160
+#define __NR_chroot 161
+#define __NR_sync 162
+#define __NR_acct 163
+#define __NR_settimeofday 164
+#define __NR_mount 165
+#define __NR_umount2 166
+#define __NR_swapon 167
+#define __NR_swapoff 168
+#define __NR_reboot 169
+#define __NR_sethostname 170
+#define __NR_setdomainname 171
+#define __NR_iopl 172
+#define __NR_ioperm 173
+#define __NR_create_module 174
+#define __NR_init_module 175
+#define __NR_delete_module 176
+#define __NR_get_kernel_syms 177
+#define __NR_query_module 178
+#define __NR_quotactl 179
+#define __NR_nfsservctl 180
+#define __NR_getpmsg 181
+#define __NR_putpmsg 182
+#define __NR_afs_syscall 183
+#define __NR_tuxcall 184
+#define __NR_security 185
+#define __NR_gettid 186
+#define __NR_readahead 187
+#define __NR_setxattr 188
+#define __NR_lsetxattr 189
+#define __NR_fsetxattr 190
+#define __NR_getxattr 191
+#define __NR_lgetxattr 192
+#define __NR_fgetxattr 193
+#define __NR_listxattr 194
+#define __NR_llistxattr 195
+#define __NR_flistxattr 196
+#define __NR_removexattr 197
+#define __NR_lremovexattr 198
+#define __NR_fremovexattr 199
+#define __NR_tkill 200
+#define __NR_time 201
+#define __NR_futex 202
+#define __NR_sched_setaffinity 203
+#define __NR_sched_getaffinity 204
+#define __NR_set_thread_area 205
+#define __NR_io_setup 206
+#define __NR_io_destroy 207
+#define __NR_io_getevents 208
+#define __NR_io_submit 209
+#define __NR_io_cancel 210
+#define __NR_get_thread_area 211
+#define __NR_lookup_dcookie 212
+#define __NR_epoll_create 213
+#define __NR_epoll_ctl_old 214
+#define __NR_epoll_wait_old 215
+#define __NR_remap_file_pages 216
+#define __NR_getdents64 217
+#define __NR_set_tid_address 218
+#define __NR_restart_syscall 219
+#define __NR_semtimedop 220
+#define __NR_fadvise64 221
+#define __NR_timer_create 222
+#define __NR_timer_settime 223
+#define __NR_timer_gettime 224
+#define __NR_timer_getoverrun 225
+#define __NR_timer_delete 226
+#define __NR_clock_settime 227
+#define __NR_clock_gettime 228
+#define __NR_clock_getres 229
+#define __NR_clock_nanosleep 230
+#define __NR_exit_group 231
+#define __NR_epoll_wait 232
+#define __NR_epoll_ctl 233
+#define __NR_tgkill 234
+#define __NR_utimes 235
+#define __NR_vserver 236
+#define __NR_mbind 237
+#define __NR_set_mempolicy 238
+#define __NR_get_mempolicy 239
+#define __NR_mq_open 240
+#define __NR_mq_unlink 241
+#define __NR_mq_timedsend 242
+#define __NR_mq_timedreceive 243
+#define __NR_mq_notify 244
+#define __NR_mq_getsetattr 245
+#define __NR_kexec_load 246
+#define __NR_waitid 247
+#define __NR_add_key 248
+#define __NR_request_key 249
+#define __NR_keyctl 250
+#define __NR_ioprio_set 251
+#define __NR_ioprio_get 252
+#define __NR_inotify_init 253
+#define __NR_inotify_add_watch 254
+#define __NR_inotify_rm_watch 255
+#define __NR_migrate_pages 256
+#define __NR_openat 257
+#define __NR_mkdirat 258
+#define __NR_mknodat 259
+#define __NR_fchownat 260
+#define __NR_futimesat 261
+#define __NR_newfstatat 262
+#define __NR_unlinkat 263
+#define __NR_renameat 264
+#define __NR_linkat 265
+#define __NR_symlinkat 266
+#define __NR_readlinkat 267
+#define __NR_fchmodat 268
+#define __NR_faccessat 269
+#define __NR_pselect6 270
+#define __NR_ppoll 271
+#define __NR_unshare 272
+#define __NR_set_robust_list 273
+#define __NR_get_robust_list 274
+#define __NR_splice 275
+#define __NR_tee 276
+#define __NR_sync_file_range 277
+#define __NR_vmsplice 278
+#define __NR_move_pages 279
+#define __NR_utimensat 280
+#define __NR_epoll_pwait 281
+#define __NR_signalfd 282
+#define __NR_timerfd_create 283
+#define __NR_eventfd 284
+#define __NR_fallocate 285
+#define __NR_timerfd_settime 286
+#define __NR_timerfd_gettime 287
+#define __NR_accept4 288
+#define __NR_signalfd4 289
+#define __NR_eventfd2 290
+#define __NR_epoll_create1 291
+#define __NR_dup3 292
+#define __NR_pipe2 293
+#define __NR_inotify_init1 294
+#define __NR_preadv 295
+#define __NR_pwritev 296
+#define __NR_rt_tgsigqueueinfo 297
+#define __NR_perf_event_open 298
+#define __NR_recvmmsg 299
+#define __NR_fanotify_init 300
+#define __NR_fanotify_mark 301
+#define __NR_prlimit64 302
+#define __NR_name_to_handle_at 303
+#define __NR_open_by_handle_at 304
+#define __NR_clock_adjtime 305
+#define __NR_syncfs 306
+#define __NR_sendmmsg 307
+#define __NR_setns 308
+#define __NR_getcpu 309
+#define __NR_process_vm_readv 310
+#define __NR_process_vm_writev 311
+#define __NR_kcmp 312
+#define __NR_finit_module 313
+#define __NR_sched_setattr 314
+#define __NR_sched_getattr 315
+#define __NR_renameat2 316
+#define __NR_seccomp 317
+#define __NR_getrandom 318
+#define __NR_memfd_create 319
+#define __NR_kexec_file_load 320
+#define __NR_bpf 321
+#define __NR_execveat 322
+#define __NR_userfaultfd 323
+#define __NR_membarrier 324
+#define __NR_mlock2 325
+#define __NR_copy_file_range 326
+#define __NR_preadv2 327
+#define __NR_pwritev2 328
+#define __NR_pkey_mprotect 329
+#define __NR_pkey_alloc 330
+#define __NR_pkey_free 331
+#define __NR_statx 332
+#define __NR_io_pgetevents 333
+#define __NR_rseq 334
+#define __NR_pidfd_send_signal 424
+#define __NR_io_uring_setup 425
+#define __NR_io_uring_enter 426
+#define __NR_io_uring_register 427
+#define __NR_open_tree 428
+#define __NR_move_mount 429
+#define __NR_fsopen 430
+#define __NR_fsconfig 431
+#define __NR_fsmount 432
+#define __NR_fspick 433
+#define __NR_pidfd_open 434
+#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
+#define __NR_process_madvise 440
+#define __NR_epoll_pwait2 441
+#define __NR_mount_setattr 442
+#define __NR_quotactl_fd 443
+#define __NR_landlock_create_ruleset 444
+#define __NR_landlock_add_rule 445
+#define __NR_landlock_restrict_self 446
+#define __NR_memfd_secret 447
+#define __NR_process_mrelease 448
+#define __NR_futex_waitv 449
+#endif
diff --git a/i686-linux-musl/include/asm/unistd_x32.h b/i686-linux-musl/include/asm/unistd_x32.h
new file mode 100644
index 0000000..b7abf12
--- /dev/null
+++ b/i686-linux-musl/include/asm/unistd_x32.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_ASM_UNISTD_X32_H
+#define _UAPI_ASM_UNISTD_X32_H
+#define __NR_read (__X32_SYSCALL_BIT + 0)
+#define __NR_write (__X32_SYSCALL_BIT + 1)
+#define __NR_open (__X32_SYSCALL_BIT + 2)
+#define __NR_close (__X32_SYSCALL_BIT + 3)
+#define __NR_stat (__X32_SYSCALL_BIT + 4)
+#define __NR_fstat (__X32_SYSCALL_BIT + 5)
+#define __NR_lstat (__X32_SYSCALL_BIT + 6)
+#define __NR_poll (__X32_SYSCALL_BIT + 7)
+#define __NR_lseek (__X32_SYSCALL_BIT + 8)
+#define __NR_mmap (__X32_SYSCALL_BIT + 9)
+#define __NR_mprotect (__X32_SYSCALL_BIT + 10)
+#define __NR_munmap (__X32_SYSCALL_BIT + 11)
+#define __NR_brk (__X32_SYSCALL_BIT + 12)
+#define __NR_rt_sigprocmask (__X32_SYSCALL_BIT + 14)
+#define __NR_pread64 (__X32_SYSCALL_BIT + 17)
+#define __NR_pwrite64 (__X32_SYSCALL_BIT + 18)
+#define __NR_access (__X32_SYSCALL_BIT + 21)
+#define __NR_pipe (__X32_SYSCALL_BIT + 22)
+#define __NR_select (__X32_SYSCALL_BIT + 23)
+#define __NR_sched_yield (__X32_SYSCALL_BIT + 24)
+#define __NR_mremap (__X32_SYSCALL_BIT + 25)
+#define __NR_msync (__X32_SYSCALL_BIT + 26)
+#define __NR_mincore (__X32_SYSCALL_BIT + 27)
+#define __NR_madvise (__X32_SYSCALL_BIT + 28)
+#define __NR_shmget (__X32_SYSCALL_BIT + 29)
+#define __NR_shmat (__X32_SYSCALL_BIT + 30)
+#define __NR_shmctl (__X32_SYSCALL_BIT + 31)
+#define __NR_dup (__X32_SYSCALL_BIT + 32)
+#define __NR_dup2 (__X32_SYSCALL_BIT + 33)
+#define __NR_pause (__X32_SYSCALL_BIT + 34)
+#define __NR_nanosleep (__X32_SYSCALL_BIT + 35)
+#define __NR_getitimer (__X32_SYSCALL_BIT + 36)
+#define __NR_alarm (__X32_SYSCALL_BIT + 37)
+#define __NR_setitimer (__X32_SYSCALL_BIT + 38)
+#define __NR_getpid (__X32_SYSCALL_BIT + 39)
+#define __NR_sendfile (__X32_SYSCALL_BIT + 40)
+#define __NR_socket (__X32_SYSCALL_BIT + 41)
+#define __NR_connect (__X32_SYSCALL_BIT + 42)
+#define __NR_accept (__X32_SYSCALL_BIT + 43)
+#define __NR_sendto (__X32_SYSCALL_BIT + 44)
+#define __NR_shutdown (__X32_SYSCALL_BIT + 48)
+#define __NR_bind (__X32_SYSCALL_BIT + 49)
+#define __NR_listen (__X32_SYSCALL_BIT + 50)
+#define __NR_getsockname (__X32_SYSCALL_BIT + 51)
+#define __NR_getpeername (__X32_SYSCALL_BIT + 52)
+#define __NR_socketpair (__X32_SYSCALL_BIT + 53)
+#define __NR_clone (__X32_SYSCALL_BIT + 56)
+#define __NR_fork (__X32_SYSCALL_BIT + 57)
+#define __NR_vfork (__X32_SYSCALL_BIT + 58)
+#define __NR_exit (__X32_SYSCALL_BIT + 60)
+#define __NR_wait4 (__X32_SYSCALL_BIT + 61)
+#define __NR_kill (__X32_SYSCALL_BIT + 62)
+#define __NR_uname (__X32_SYSCALL_BIT + 63)
+#define __NR_semget (__X32_SYSCALL_BIT + 64)
+#define __NR_semop (__X32_SYSCALL_BIT + 65)
+#define __NR_semctl (__X32_SYSCALL_BIT + 66)
+#define __NR_shmdt (__X32_SYSCALL_BIT + 67)
+#define __NR_msgget (__X32_SYSCALL_BIT + 68)
+#define __NR_msgsnd (__X32_SYSCALL_BIT + 69)
+#define __NR_msgrcv (__X32_SYSCALL_BIT + 70)
+#define __NR_msgctl (__X32_SYSCALL_BIT + 71)
+#define __NR_fcntl (__X32_SYSCALL_BIT + 72)
+#define __NR_flock (__X32_SYSCALL_BIT + 73)
+#define __NR_fsync (__X32_SYSCALL_BIT + 74)
+#define __NR_fdatasync (__X32_SYSCALL_BIT + 75)
+#define __NR_truncate (__X32_SYSCALL_BIT + 76)
+#define __NR_ftruncate (__X32_SYSCALL_BIT + 77)
+#define __NR_getdents (__X32_SYSCALL_BIT + 78)
+#define __NR_getcwd (__X32_SYSCALL_BIT + 79)
+#define __NR_chdir (__X32_SYSCALL_BIT + 80)
+#define __NR_fchdir (__X32_SYSCALL_BIT + 81)
+#define __NR_rename (__X32_SYSCALL_BIT + 82)
+#define __NR_mkdir (__X32_SYSCALL_BIT + 83)
+#define __NR_rmdir (__X32_SYSCALL_BIT + 84)
+#define __NR_creat (__X32_SYSCALL_BIT + 85)
+#define __NR_link (__X32_SYSCALL_BIT + 86)
+#define __NR_unlink (__X32_SYSCALL_BIT + 87)
+#define __NR_symlink (__X32_SYSCALL_BIT + 88)
+#define __NR_readlink (__X32_SYSCALL_BIT + 89)
+#define __NR_chmod (__X32_SYSCALL_BIT + 90)
+#define __NR_fchmod (__X32_SYSCALL_BIT + 91)
+#define __NR_chown (__X32_SYSCALL_BIT + 92)
+#define __NR_fchown (__X32_SYSCALL_BIT + 93)
+#define __NR_lchown (__X32_SYSCALL_BIT + 94)
+#define __NR_umask (__X32_SYSCALL_BIT + 95)
+#define __NR_gettimeofday (__X32_SYSCALL_BIT + 96)
+#define __NR_getrlimit (__X32_SYSCALL_BIT + 97)
+#define __NR_getrusage (__X32_SYSCALL_BIT + 98)
+#define __NR_sysinfo (__X32_SYSCALL_BIT + 99)
+#define __NR_times (__X32_SYSCALL_BIT + 100)
+#define __NR_getuid (__X32_SYSCALL_BIT + 102)
+#define __NR_syslog (__X32_SYSCALL_BIT + 103)
+#define __NR_getgid (__X32_SYSCALL_BIT + 104)
+#define __NR_setuid (__X32_SYSCALL_BIT + 105)
+#define __NR_setgid (__X32_SYSCALL_BIT + 106)
+#define __NR_geteuid (__X32_SYSCALL_BIT + 107)
+#define __NR_getegid (__X32_SYSCALL_BIT + 108)
+#define __NR_setpgid (__X32_SYSCALL_BIT + 109)
+#define __NR_getppid (__X32_SYSCALL_BIT + 110)
+#define __NR_getpgrp (__X32_SYSCALL_BIT + 111)
+#define __NR_setsid (__X32_SYSCALL_BIT + 112)
+#define __NR_setreuid (__X32_SYSCALL_BIT + 113)
+#define __NR_setregid (__X32_SYSCALL_BIT + 114)
+#define __NR_getgroups (__X32_SYSCALL_BIT + 115)
+#define __NR_setgroups (__X32_SYSCALL_BIT + 116)
+#define __NR_setresuid (__X32_SYSCALL_BIT + 117)
+#define __NR_getresuid (__X32_SYSCALL_BIT + 118)
+#define __NR_setresgid (__X32_SYSCALL_BIT + 119)
+#define __NR_getresgid (__X32_SYSCALL_BIT + 120)
+#define __NR_getpgid (__X32_SYSCALL_BIT + 121)
+#define __NR_setfsuid (__X32_SYSCALL_BIT + 122)
+#define __NR_setfsgid (__X32_SYSCALL_BIT + 123)
+#define __NR_getsid (__X32_SYSCALL_BIT + 124)
+#define __NR_capget (__X32_SYSCALL_BIT + 125)
+#define __NR_capset (__X32_SYSCALL_BIT + 126)
+#define __NR_rt_sigsuspend (__X32_SYSCALL_BIT + 130)
+#define __NR_utime (__X32_SYSCALL_BIT + 132)
+#define __NR_mknod (__X32_SYSCALL_BIT + 133)
+#define __NR_personality (__X32_SYSCALL_BIT + 135)
+#define __NR_ustat (__X32_SYSCALL_BIT + 136)
+#define __NR_statfs (__X32_SYSCALL_BIT + 137)
+#define __NR_fstatfs (__X32_SYSCALL_BIT + 138)
+#define __NR_sysfs (__X32_SYSCALL_BIT + 139)
+#define __NR_getpriority (__X32_SYSCALL_BIT + 140)
+#define __NR_setpriority (__X32_SYSCALL_BIT + 141)
+#define __NR_sched_setparam (__X32_SYSCALL_BIT + 142)
+#define __NR_sched_getparam (__X32_SYSCALL_BIT + 143)
+#define __NR_sched_setscheduler (__X32_SYSCALL_BIT + 144)
+#define __NR_sched_getscheduler (__X32_SYSCALL_BIT + 145)
+#define __NR_sched_get_priority_max (__X32_SYSCALL_BIT + 146)
+#define __NR_sched_get_priority_min (__X32_SYSCALL_BIT + 147)
+#define __NR_sched_rr_get_interval (__X32_SYSCALL_BIT + 148)
+#define __NR_mlock (__X32_SYSCALL_BIT + 149)
+#define __NR_munlock (__X32_SYSCALL_BIT + 150)
+#define __NR_mlockall (__X32_SYSCALL_BIT + 151)
+#define __NR_munlockall (__X32_SYSCALL_BIT + 152)
+#define __NR_vhangup (__X32_SYSCALL_BIT + 153)
+#define __NR_modify_ldt (__X32_SYSCALL_BIT + 154)
+#define __NR_pivot_root (__X32_SYSCALL_BIT + 155)
+#define __NR_prctl (__X32_SYSCALL_BIT + 157)
+#define __NR_arch_prctl (__X32_SYSCALL_BIT + 158)
+#define __NR_adjtimex (__X32_SYSCALL_BIT + 159)
+#define __NR_setrlimit (__X32_SYSCALL_BIT + 160)
+#define __NR_chroot (__X32_SYSCALL_BIT + 161)
+#define __NR_sync (__X32_SYSCALL_BIT + 162)
+#define __NR_acct (__X32_SYSCALL_BIT + 163)
+#define __NR_settimeofday (__X32_SYSCALL_BIT + 164)
+#define __NR_mount (__X32_SYSCALL_BIT + 165)
+#define __NR_umount2 (__X32_SYSCALL_BIT + 166)
+#define __NR_swapon (__X32_SYSCALL_BIT + 167)
+#define __NR_swapoff (__X32_SYSCALL_BIT + 168)
+#define __NR_reboot (__X32_SYSCALL_BIT + 169)
+#define __NR_sethostname (__X32_SYSCALL_BIT + 170)
+#define __NR_setdomainname (__X32_SYSCALL_BIT + 171)
+#define __NR_iopl (__X32_SYSCALL_BIT + 172)
+#define __NR_ioperm (__X32_SYSCALL_BIT + 173)
+#define __NR_init_module (__X32_SYSCALL_BIT + 175)
+#define __NR_delete_module (__X32_SYSCALL_BIT + 176)
+#define __NR_quotactl (__X32_SYSCALL_BIT + 179)
+#define __NR_getpmsg (__X32_SYSCALL_BIT + 181)
+#define __NR_putpmsg (__X32_SYSCALL_BIT + 182)
+#define __NR_afs_syscall (__X32_SYSCALL_BIT + 183)
+#define __NR_tuxcall (__X32_SYSCALL_BIT + 184)
+#define __NR_security (__X32_SYSCALL_BIT + 185)
+#define __NR_gettid (__X32_SYSCALL_BIT + 186)
+#define __NR_readahead (__X32_SYSCALL_BIT + 187)
+#define __NR_setxattr (__X32_SYSCALL_BIT + 188)
+#define __NR_lsetxattr (__X32_SYSCALL_BIT + 189)
+#define __NR_fsetxattr (__X32_SYSCALL_BIT + 190)
+#define __NR_getxattr (__X32_SYSCALL_BIT + 191)
+#define __NR_lgetxattr (__X32_SYSCALL_BIT + 192)
+#define __NR_fgetxattr (__X32_SYSCALL_BIT + 193)
+#define __NR_listxattr (__X32_SYSCALL_BIT + 194)
+#define __NR_llistxattr (__X32_SYSCALL_BIT + 195)
+#define __NR_flistxattr (__X32_SYSCALL_BIT + 196)
+#define __NR_removexattr (__X32_SYSCALL_BIT + 197)
+#define __NR_lremovexattr (__X32_SYSCALL_BIT + 198)
+#define __NR_fremovexattr (__X32_SYSCALL_BIT + 199)
+#define __NR_tkill (__X32_SYSCALL_BIT + 200)
+#define __NR_time (__X32_SYSCALL_BIT + 201)
+#define __NR_futex (__X32_SYSCALL_BIT + 202)
+#define __NR_sched_setaffinity (__X32_SYSCALL_BIT + 203)
+#define __NR_sched_getaffinity (__X32_SYSCALL_BIT + 204)
+#define __NR_io_destroy (__X32_SYSCALL_BIT + 207)
+#define __NR_io_getevents (__X32_SYSCALL_BIT + 208)
+#define __NR_io_cancel (__X32_SYSCALL_BIT + 210)
+#define __NR_lookup_dcookie (__X32_SYSCALL_BIT + 212)
+#define __NR_epoll_create (__X32_SYSCALL_BIT + 213)
+#define __NR_remap_file_pages (__X32_SYSCALL_BIT + 216)
+#define __NR_getdents64 (__X32_SYSCALL_BIT + 217)
+#define __NR_set_tid_address (__X32_SYSCALL_BIT + 218)
+#define __NR_restart_syscall (__X32_SYSCALL_BIT + 219)
+#define __NR_semtimedop (__X32_SYSCALL_BIT + 220)
+#define __NR_fadvise64 (__X32_SYSCALL_BIT + 221)
+#define __NR_timer_settime (__X32_SYSCALL_BIT + 223)
+#define __NR_timer_gettime (__X32_SYSCALL_BIT + 224)
+#define __NR_timer_getoverrun (__X32_SYSCALL_BIT + 225)
+#define __NR_timer_delete (__X32_SYSCALL_BIT + 226)
+#define __NR_clock_settime (__X32_SYSCALL_BIT + 227)
+#define __NR_clock_gettime (__X32_SYSCALL_BIT + 228)
+#define __NR_clock_getres (__X32_SYSCALL_BIT + 229)
+#define __NR_clock_nanosleep (__X32_SYSCALL_BIT + 230)
+#define __NR_exit_group (__X32_SYSCALL_BIT + 231)
+#define __NR_epoll_wait (__X32_SYSCALL_BIT + 232)
+#define __NR_epoll_ctl (__X32_SYSCALL_BIT + 233)
+#define __NR_tgkill (__X32_SYSCALL_BIT + 234)
+#define __NR_utimes (__X32_SYSCALL_BIT + 235)
+#define __NR_mbind (__X32_SYSCALL_BIT + 237)
+#define __NR_set_mempolicy (__X32_SYSCALL_BIT + 238)
+#define __NR_get_mempolicy (__X32_SYSCALL_BIT + 239)
+#define __NR_mq_open (__X32_SYSCALL_BIT + 240)
+#define __NR_mq_unlink (__X32_SYSCALL_BIT + 241)
+#define __NR_mq_timedsend (__X32_SYSCALL_BIT + 242)
+#define __NR_mq_timedreceive (__X32_SYSCALL_BIT + 243)
+#define __NR_mq_getsetattr (__X32_SYSCALL_BIT + 245)
+#define __NR_add_key (__X32_SYSCALL_BIT + 248)
+#define __NR_request_key (__X32_SYSCALL_BIT + 249)
+#define __NR_keyctl (__X32_SYSCALL_BIT + 250)
+#define __NR_ioprio_set (__X32_SYSCALL_BIT + 251)
+#define __NR_ioprio_get (__X32_SYSCALL_BIT + 252)
+#define __NR_inotify_init (__X32_SYSCALL_BIT + 253)
+#define __NR_inotify_add_watch (__X32_SYSCALL_BIT + 254)
+#define __NR_inotify_rm_watch (__X32_SYSCALL_BIT + 255)
+#define __NR_migrate_pages (__X32_SYSCALL_BIT + 256)
+#define __NR_openat (__X32_SYSCALL_BIT + 257)
+#define __NR_mkdirat (__X32_SYSCALL_BIT + 258)
+#define __NR_mknodat (__X32_SYSCALL_BIT + 259)
+#define __NR_fchownat (__X32_SYSCALL_BIT + 260)
+#define __NR_futimesat (__X32_SYSCALL_BIT + 261)
+#define __NR_newfstatat (__X32_SYSCALL_BIT + 262)
+#define __NR_unlinkat (__X32_SYSCALL_BIT + 263)
+#define __NR_renameat (__X32_SYSCALL_BIT + 264)
+#define __NR_linkat (__X32_SYSCALL_BIT + 265)
+#define __NR_symlinkat (__X32_SYSCALL_BIT + 266)
+#define __NR_readlinkat (__X32_SYSCALL_BIT + 267)
+#define __NR_fchmodat (__X32_SYSCALL_BIT + 268)
+#define __NR_faccessat (__X32_SYSCALL_BIT + 269)
+#define __NR_pselect6 (__X32_SYSCALL_BIT + 270)
+#define __NR_ppoll (__X32_SYSCALL_BIT + 271)
+#define __NR_unshare (__X32_SYSCALL_BIT + 272)
+#define __NR_splice (__X32_SYSCALL_BIT + 275)
+#define __NR_tee (__X32_SYSCALL_BIT + 276)
+#define __NR_sync_file_range (__X32_SYSCALL_BIT + 277)
+#define __NR_utimensat (__X32_SYSCALL_BIT + 280)
+#define __NR_epoll_pwait (__X32_SYSCALL_BIT + 281)
+#define __NR_signalfd (__X32_SYSCALL_BIT + 282)
+#define __NR_timerfd_create (__X32_SYSCALL_BIT + 283)
+#define __NR_eventfd (__X32_SYSCALL_BIT + 284)
+#define __NR_fallocate (__X32_SYSCALL_BIT + 285)
+#define __NR_timerfd_settime (__X32_SYSCALL_BIT + 286)
+#define __NR_timerfd_gettime (__X32_SYSCALL_BIT + 287)
+#define __NR_accept4 (__X32_SYSCALL_BIT + 288)
+#define __NR_signalfd4 (__X32_SYSCALL_BIT + 289)
+#define __NR_eventfd2 (__X32_SYSCALL_BIT + 290)
+#define __NR_epoll_create1 (__X32_SYSCALL_BIT + 291)
+#define __NR_dup3 (__X32_SYSCALL_BIT + 292)
+#define __NR_pipe2 (__X32_SYSCALL_BIT + 293)
+#define __NR_inotify_init1 (__X32_SYSCALL_BIT + 294)
+#define __NR_perf_event_open (__X32_SYSCALL_BIT + 298)
+#define __NR_fanotify_init (__X32_SYSCALL_BIT + 300)
+#define __NR_fanotify_mark (__X32_SYSCALL_BIT + 301)
+#define __NR_prlimit64 (__X32_SYSCALL_BIT + 302)
+#define __NR_name_to_handle_at (__X32_SYSCALL_BIT + 303)
+#define __NR_open_by_handle_at (__X32_SYSCALL_BIT + 304)
+#define __NR_clock_adjtime (__X32_SYSCALL_BIT + 305)
+#define __NR_syncfs (__X32_SYSCALL_BIT + 306)
+#define __NR_setns (__X32_SYSCALL_BIT + 308)
+#define __NR_getcpu (__X32_SYSCALL_BIT + 309)
+#define __NR_kcmp (__X32_SYSCALL_BIT + 312)
+#define __NR_finit_module (__X32_SYSCALL_BIT + 313)
+#define __NR_sched_setattr (__X32_SYSCALL_BIT + 314)
+#define __NR_sched_getattr (__X32_SYSCALL_BIT + 315)
+#define __NR_renameat2 (__X32_SYSCALL_BIT + 316)
+#define __NR_seccomp (__X32_SYSCALL_BIT + 317)
+#define __NR_getrandom (__X32_SYSCALL_BIT + 318)
+#define __NR_memfd_create (__X32_SYSCALL_BIT + 319)
+#define __NR_kexec_file_load (__X32_SYSCALL_BIT + 320)
+#define __NR_bpf (__X32_SYSCALL_BIT + 321)
+#define __NR_userfaultfd (__X32_SYSCALL_BIT + 323)
+#define __NR_membarrier (__X32_SYSCALL_BIT + 324)
+#define __NR_mlock2 (__X32_SYSCALL_BIT + 325)
+#define __NR_copy_file_range (__X32_SYSCALL_BIT + 326)
+#define __NR_pkey_mprotect (__X32_SYSCALL_BIT + 329)
+#define __NR_pkey_alloc (__X32_SYSCALL_BIT + 330)
+#define __NR_pkey_free (__X32_SYSCALL_BIT + 331)
+#define __NR_statx (__X32_SYSCALL_BIT + 332)
+#define __NR_io_pgetevents (__X32_SYSCALL_BIT + 333)
+#define __NR_rseq (__X32_SYSCALL_BIT + 334)
+#define __NR_pidfd_send_signal (__X32_SYSCALL_BIT + 424)
+#define __NR_io_uring_setup (__X32_SYSCALL_BIT + 425)
+#define __NR_io_uring_enter (__X32_SYSCALL_BIT + 426)
+#define __NR_io_uring_register (__X32_SYSCALL_BIT + 427)
+#define __NR_open_tree (__X32_SYSCALL_BIT + 428)
+#define __NR_move_mount (__X32_SYSCALL_BIT + 429)
+#define __NR_fsopen (__X32_SYSCALL_BIT + 430)
+#define __NR_fsconfig (__X32_SYSCALL_BIT + 431)
+#define __NR_fsmount (__X32_SYSCALL_BIT + 432)
+#define __NR_fspick (__X32_SYSCALL_BIT + 433)
+#define __NR_pidfd_open (__X32_SYSCALL_BIT + 434)
+#define __NR_clone3 (__X32_SYSCALL_BIT + 435)
+#define __NR_close_range (__X32_SYSCALL_BIT + 436)
+#define __NR_openat2 (__X32_SYSCALL_BIT + 437)
+#define __NR_pidfd_getfd (__X32_SYSCALL_BIT + 438)
+#define __NR_faccessat2 (__X32_SYSCALL_BIT + 439)
+#define __NR_process_madvise (__X32_SYSCALL_BIT + 440)
+#define __NR_epoll_pwait2 (__X32_SYSCALL_BIT + 441)
+#define __NR_mount_setattr (__X32_SYSCALL_BIT + 442)
+#define __NR_quotactl_fd (__X32_SYSCALL_BIT + 443)
+#define __NR_landlock_create_ruleset (__X32_SYSCALL_BIT + 444)
+#define __NR_landlock_add_rule (__X32_SYSCALL_BIT + 445)
+#define __NR_landlock_restrict_self (__X32_SYSCALL_BIT + 446)
+#define __NR_memfd_secret (__X32_SYSCALL_BIT + 447)
+#define __NR_process_mrelease (__X32_SYSCALL_BIT + 448)
+#define __NR_futex_waitv (__X32_SYSCALL_BIT + 449)
+#define __NR_rt_sigaction (__X32_SYSCALL_BIT + 512)
+#define __NR_rt_sigreturn (__X32_SYSCALL_BIT + 513)
+#define __NR_ioctl (__X32_SYSCALL_BIT + 514)
+#define __NR_readv (__X32_SYSCALL_BIT + 515)
+#define __NR_writev (__X32_SYSCALL_BIT + 516)
+#define __NR_recvfrom (__X32_SYSCALL_BIT + 517)
+#define __NR_sendmsg (__X32_SYSCALL_BIT + 518)
+#define __NR_recvmsg (__X32_SYSCALL_BIT + 519)
+#define __NR_execve (__X32_SYSCALL_BIT + 520)
+#define __NR_ptrace (__X32_SYSCALL_BIT + 521)
+#define __NR_rt_sigpending (__X32_SYSCALL_BIT + 522)
+#define __NR_rt_sigtimedwait (__X32_SYSCALL_BIT + 523)
+#define __NR_rt_sigqueueinfo (__X32_SYSCALL_BIT + 524)
+#define __NR_sigaltstack (__X32_SYSCALL_BIT + 525)
+#define __NR_timer_create (__X32_SYSCALL_BIT + 526)
+#define __NR_mq_notify (__X32_SYSCALL_BIT + 527)
+#define __NR_kexec_load (__X32_SYSCALL_BIT + 528)
+#define __NR_waitid (__X32_SYSCALL_BIT + 529)
+#define __NR_set_robust_list (__X32_SYSCALL_BIT + 530)
+#define __NR_get_robust_list (__X32_SYSCALL_BIT + 531)
+#define __NR_vmsplice (__X32_SYSCALL_BIT + 532)
+#define __NR_move_pages (__X32_SYSCALL_BIT + 533)
+#define __NR_preadv (__X32_SYSCALL_BIT + 534)
+#define __NR_pwritev (__X32_SYSCALL_BIT + 535)
+#define __NR_rt_tgsigqueueinfo (__X32_SYSCALL_BIT + 536)
+#define __NR_recvmmsg (__X32_SYSCALL_BIT + 537)
+#define __NR_sendmmsg (__X32_SYSCALL_BIT + 538)
+#define __NR_process_vm_readv (__X32_SYSCALL_BIT + 539)
+#define __NR_process_vm_writev (__X32_SYSCALL_BIT + 540)
+#define __NR_setsockopt (__X32_SYSCALL_BIT + 541)
+#define __NR_getsockopt (__X32_SYSCALL_BIT + 542)
+#define __NR_io_setup (__X32_SYSCALL_BIT + 543)
+#define __NR_io_submit (__X32_SYSCALL_BIT + 544)
+#define __NR_execveat (__X32_SYSCALL_BIT + 545)
+#define __NR_preadv2 (__X32_SYSCALL_BIT + 546)
+#define __NR_pwritev2 (__X32_SYSCALL_BIT + 547)
+#endif
diff --git a/i686-linux-musl/include/asm/vm86.h b/i686-linux-musl/include/asm/vm86.h
new file mode 100644
index 0000000..7193484
--- /dev/null
+++ b/i686-linux-musl/include/asm/vm86.h
@@ -0,0 +1,96 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_X86_VM86_H
+#define _UAPI_ASM_X86_VM86_H
+#include <asm/processor-flags.h>
+#define BIOSSEG 0x0f000
+#define CPU_086 0
+#define CPU_186 1
+#define CPU_286 2
+#define CPU_386 3
+#define CPU_486 4
+#define CPU_586 5
+#define VM86_TYPE(retval) ((retval) & 0xff)
+#define VM86_ARG(retval) ((retval) >> 8)
+#define VM86_SIGNAL 0
+#define VM86_UNKNOWN 1
+#define VM86_INTx 2
+#define VM86_STI 3
+#define VM86_PICRETURN 4
+#define VM86_TRAP 6
+#define VM86_PLUS_INSTALL_CHECK 0
+#define VM86_ENTER 1
+#define VM86_ENTER_NO_BYPASS 2
+#define VM86_REQUEST_IRQ 3
+#define VM86_FREE_IRQ 4
+#define VM86_GET_IRQ_BITS 5
+#define VM86_GET_AND_RESET_IRQ 6
+struct vm86_regs {
+  long ebx;
+  long ecx;
+  long edx;
+  long esi;
+  long edi;
+  long ebp;
+  long eax;
+  long __null_ds;
+  long __null_es;
+  long __null_fs;
+  long __null_gs;
+  long orig_eax;
+  long eip;
+  unsigned short cs, __csh;
+  long eflags;
+  long esp;
+  unsigned short ss, __ssh;
+  unsigned short es, __esh;
+  unsigned short ds, __dsh;
+  unsigned short fs, __fsh;
+  unsigned short gs, __gsh;
+};
+struct revectored_struct {
+  unsigned long __map[8];
+};
+struct vm86_struct {
+  struct vm86_regs regs;
+  unsigned long flags;
+  unsigned long screen_bitmap;
+  unsigned long cpu_type;
+  struct revectored_struct int_revectored;
+  struct revectored_struct int21_revectored;
+};
+#define VM86_SCREEN_BITMAP 0x0001
+struct vm86plus_info_struct {
+  unsigned long force_return_for_pic : 1;
+  unsigned long vm86dbg_active : 1;
+  unsigned long vm86dbg_TFpendig : 1;
+  unsigned long unused : 28;
+  unsigned long is_vm86pus : 1;
+  unsigned char vm86dbg_intxxtab[32];
+};
+struct vm86plus_struct {
+  struct vm86_regs regs;
+  unsigned long flags;
+  unsigned long screen_bitmap;
+  unsigned long cpu_type;
+  struct revectored_struct int_revectored;
+  struct revectored_struct int21_revectored;
+  struct vm86plus_info_struct vm86plus;
+};
+#endif
diff --git a/i686-linux-musl/include/asm/vmx.h b/i686-linux-musl/include/asm/vmx.h
new file mode 100644
index 0000000..6c07d4c
--- /dev/null
+++ b/i686-linux-musl/include/asm/vmx.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 _UAPIVMX_H
+#define _UAPIVMX_H
+#define VMX_EXIT_REASONS_FAILED_VMENTRY 0x80000000
+#define VMX_EXIT_REASONS_SGX_ENCLAVE_MODE 0x08000000
+#define EXIT_REASON_EXCEPTION_NMI 0
+#define EXIT_REASON_EXTERNAL_INTERRUPT 1
+#define EXIT_REASON_TRIPLE_FAULT 2
+#define EXIT_REASON_INIT_SIGNAL 3
+#define EXIT_REASON_SIPI_SIGNAL 4
+#define EXIT_REASON_INTERRUPT_WINDOW 7
+#define EXIT_REASON_NMI_WINDOW 8
+#define EXIT_REASON_TASK_SWITCH 9
+#define EXIT_REASON_CPUID 10
+#define EXIT_REASON_HLT 12
+#define EXIT_REASON_INVD 13
+#define EXIT_REASON_INVLPG 14
+#define EXIT_REASON_RDPMC 15
+#define EXIT_REASON_RDTSC 16
+#define EXIT_REASON_VMCALL 18
+#define EXIT_REASON_VMCLEAR 19
+#define EXIT_REASON_VMLAUNCH 20
+#define EXIT_REASON_VMPTRLD 21
+#define EXIT_REASON_VMPTRST 22
+#define EXIT_REASON_VMREAD 23
+#define EXIT_REASON_VMRESUME 24
+#define EXIT_REASON_VMWRITE 25
+#define EXIT_REASON_VMOFF 26
+#define EXIT_REASON_VMON 27
+#define EXIT_REASON_CR_ACCESS 28
+#define EXIT_REASON_DR_ACCESS 29
+#define EXIT_REASON_IO_INSTRUCTION 30
+#define EXIT_REASON_MSR_READ 31
+#define EXIT_REASON_MSR_WRITE 32
+#define EXIT_REASON_INVALID_STATE 33
+#define EXIT_REASON_MSR_LOAD_FAIL 34
+#define EXIT_REASON_MWAIT_INSTRUCTION 36
+#define EXIT_REASON_MONITOR_TRAP_FLAG 37
+#define EXIT_REASON_MONITOR_INSTRUCTION 39
+#define EXIT_REASON_PAUSE_INSTRUCTION 40
+#define EXIT_REASON_MCE_DURING_VMENTRY 41
+#define EXIT_REASON_TPR_BELOW_THRESHOLD 43
+#define EXIT_REASON_APIC_ACCESS 44
+#define EXIT_REASON_EOI_INDUCED 45
+#define EXIT_REASON_GDTR_IDTR 46
+#define EXIT_REASON_LDTR_TR 47
+#define EXIT_REASON_EPT_VIOLATION 48
+#define EXIT_REASON_EPT_MISCONFIG 49
+#define EXIT_REASON_INVEPT 50
+#define EXIT_REASON_RDTSCP 51
+#define EXIT_REASON_PREEMPTION_TIMER 52
+#define EXIT_REASON_INVVPID 53
+#define EXIT_REASON_WBINVD 54
+#define EXIT_REASON_XSETBV 55
+#define EXIT_REASON_APIC_WRITE 56
+#define EXIT_REASON_RDRAND 57
+#define EXIT_REASON_INVPCID 58
+#define EXIT_REASON_VMFUNC 59
+#define EXIT_REASON_ENCLS 60
+#define EXIT_REASON_RDSEED 61
+#define EXIT_REASON_PML_FULL 62
+#define EXIT_REASON_XSAVES 63
+#define EXIT_REASON_XRSTORS 64
+#define EXIT_REASON_UMWAIT 67
+#define EXIT_REASON_TPAUSE 68
+#define EXIT_REASON_BUS_LOCK 74
+#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_INIT_SIGNAL, "INIT_SIGNAL" }, { EXIT_REASON_SIPI_SIGNAL, "SIPI_SIGNAL" }, { EXIT_REASON_INTERRUPT_WINDOW, "INTERRUPT_WINDOW" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVD, "INVD" }, { EXIT_REASON_INVLPG, "INVLPG" }, { EXIT_REASON_RDPMC, "RDPMC" }, { EXIT_REASON_RDTSC, "RDTSC" }, { EXIT_REASON_VMCALL, "VMCALL" }, { EXIT_REASON_VMCLEAR, "VMCLEAR" }, { EXIT_REASON_VMLAUNCH, "VMLAUNCH" }, { EXIT_REASON_VMPTRLD, "VMPTRLD" }, { EXIT_REASON_VMPTRST, "VMPTRST" }, { EXIT_REASON_VMREAD, "VMREAD" }, { EXIT_REASON_VMRESUME, "VMRESUME" }, { EXIT_REASON_VMWRITE, "VMWRITE" }, { EXIT_REASON_VMOFF, "VMOFF" }, { EXIT_REASON_VMON, "VMON" }, { EXIT_REASON_CR_ACCESS, "CR_ACCESS" }, { EXIT_REASON_DR_ACCESS, "DR_ACCESS" }, { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" }, { EXIT_REASON_MSR_READ, "MSR_READ" }, { EXIT_REASON_MSR_WRITE, "MSR_WRITE" }, { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" }, { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" }, { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" }, { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" }, { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" }, { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_RDTSCP, "RDTSCP" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_XSETBV, "XSETBV" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_RDRAND, "RDRAND" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_VMFUNC, "VMFUNC" }, { EXIT_REASON_ENCLS, "ENCLS" }, { EXIT_REASON_RDSEED, "RDSEED" }, { EXIT_REASON_PML_FULL, "PML_FULL" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }, { EXIT_REASON_UMWAIT, "UMWAIT" }, { EXIT_REASON_TPAUSE, "TPAUSE" }, { EXIT_REASON_BUS_LOCK, "BUS_LOCK" }
+#define VMX_EXIT_REASON_FLAGS { VMX_EXIT_REASONS_FAILED_VMENTRY, "FAILED_VMENTRY" }
+#define VMX_ABORT_SAVE_GUEST_MSR_FAIL 1
+#define VMX_ABORT_LOAD_HOST_PDPTE_FAIL 2
+#define VMX_ABORT_LOAD_HOST_MSR_FAIL 4
+#endif
diff --git a/i686-linux-musl/include/asm/vsyscall.h b/i686-linux-musl/include/asm/vsyscall.h
new file mode 100644
index 0000000..56abbbc
--- /dev/null
+++ b/i686-linux-musl/include/asm/vsyscall.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_ASM_X86_VSYSCALL_H
+#define _UAPI_ASM_X86_VSYSCALL_H
+enum vsyscall_num {
+  __NR_vgettimeofday,
+  __NR_vtime,
+  __NR_vgetcpu,
+};
+#define VSYSCALL_ADDR (- 10UL << 20)
+#endif
diff --git a/i686-linux-musl/include/assert.h b/i686-linux-musl/include/assert.h
new file mode 100644
index 0000000..d14ec94
--- /dev/null
+++ b/i686-linux-musl/include/assert.h
@@ -0,0 +1,23 @@
+#include <features.h>
+
+#undef assert
+
+#ifdef NDEBUG
+#define	assert(x) (void)0
+#else
+#define assert(x) ((void)((x) || (__assert_fail(#x, __FILE__, __LINE__, __func__),0)))
+#endif
+
+#if __STDC_VERSION__ >= 201112L && !defined(__cplusplus)
+#define static_assert _Static_assert
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_Noreturn void __assert_fail (const char *, const char *, int, const char *);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/i686-linux-musl/include/bionic/b64.h b/i686-linux-musl/include/bionic/b64.h
new file mode 100644
index 0000000..f365bae
--- /dev/null
+++ b/i686-linux-musl/include/bionic/b64.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include <sys/cdefs.h>
+#include <sys/types.h>
+
+__BEGIN_DECLS
+
+int b64_ntop(unsigned char const* __src, size_t __src_size, char* __dst, size_t __dst_size);
+int b64_pton(char const* __src, u_char* __dst, size_t __dst_size);
+
+__END_DECLS
diff --git a/i686-linux-musl/include/bionic/execinfo.h b/i686-linux-musl/include/bionic/execinfo.h
new file mode 100644
index 0000000..347ae92
--- /dev/null
+++ b/i686-linux-musl/include/bionic/execinfo.h
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#pragma once
+
+#include <sys/cdefs.h>
+
+/**
+ * @file execinfo.h
+ * @brief Functions to do in process backtracing.
+ */
+
+__BEGIN_DECLS
+
+/**
+ * [backtrace(3)](https://man7.org/linux/man-pages/man3/backtrace.3.html)
+ * Saves a backtrace for the current call in the array pointed to by buffer.
+ * "size" indicates the maximum number of void* pointers that can be set.
+ *
+ * Returns the number of addresses stored in "buffer", which is not greater
+ * than "size". If the return value is equal to "size" then the number of
+ * addresses may have been truncated.
+ *
+ * Available since API level 33.
+ */
+int backtrace(void** buffer, int size) __INTRODUCED_IN(33);
+
+/**
+ * [backtrace_symbols(3)](https://man7.org/linux/man-pages/man3/backtrace_symbols.3.html)
+ * Given an array of void* pointers, translate the addresses into an array
+ * of strings that represent the backtrace.
+ *
+ * Returns a pointer to allocated memory, on error NULL is returned. It is
+ * the responsibility of the caller to free the returned memory.
+ *
+ * Available since API level 33.
+ */
+char** backtrace_symbols(void* const* buffer, int size) __INTRODUCED_IN(33);
+
+/**
+ * [backtrace_symbols_fd(3)](https://man7.org/linux/man-pages/man3/backtrace_symbols_fd.3.html)
+ * Given an array of void* pointers, translate the addresses into an array
+ * of strings that represent the backtrace and write to the file represented
+ * by "fd". The file is written such that one line equals one void* address.
+ *
+ * Available since API level 33.
+ */
+void backtrace_symbols_fd(void* const* buffer, int size, int fd) __INTRODUCED_IN(33);
+
+__END_DECLS
diff --git a/i686-linux-musl/include/bits/alltypes.h b/i686-linux-musl/include/bits/alltypes.h
new file mode 100644
index 0000000..b145b9a
--- /dev/null
+++ b/i686-linux-musl/include/bits/alltypes.h
@@ -0,0 +1,438 @@
+#define _REDIR_TIME64 1
+#define _Addr int
+#define _Int64 long long
+#define _Reg int
+
+#define __BYTE_ORDER 1234
+#define __LONG_MAX 0x7fffffffL
+
+#ifndef __cplusplus
+#ifdef __WCHAR_TYPE__
+#if defined(__NEED_wchar_t) && !defined(__DEFINED_wchar_t)
+typedef __WCHAR_TYPE__ wchar_t;
+#define __DEFINED_wchar_t
+#endif
+
+#else
+#if defined(__NEED_wchar_t) && !defined(__DEFINED_wchar_t)
+typedef long wchar_t;
+#define __DEFINED_wchar_t
+#endif
+
+#endif
+#endif
+
+#if defined(__FLT_EVAL_METHOD__) && __FLT_EVAL_METHOD__ == 0
+#if defined(__NEED_float_t) && !defined(__DEFINED_float_t)
+typedef float float_t;
+#define __DEFINED_float_t
+#endif
+
+#if defined(__NEED_double_t) && !defined(__DEFINED_double_t)
+typedef double double_t;
+#define __DEFINED_double_t
+#endif
+
+#else
+#if defined(__NEED_float_t) && !defined(__DEFINED_float_t)
+typedef long double float_t;
+#define __DEFINED_float_t
+#endif
+
+#if defined(__NEED_double_t) && !defined(__DEFINED_double_t)
+typedef long double double_t;
+#define __DEFINED_double_t
+#endif
+
+#endif
+
+#if !defined(__cplusplus)
+#if defined(__NEED_max_align_t) && !defined(__DEFINED_max_align_t)
+typedef struct { _Alignas(8) long long __ll; long double __ld; } max_align_t;
+#define __DEFINED_max_align_t
+#endif
+
+#elif defined(__GNUC__)
+#if defined(__NEED_max_align_t) && !defined(__DEFINED_max_align_t)
+typedef struct { __attribute__((__aligned__(8))) long long __ll; long double __ld; } max_align_t;
+#define __DEFINED_max_align_t
+#endif
+
+#else
+#if defined(__NEED_max_align_t) && !defined(__DEFINED_max_align_t)
+typedef struct { alignas(8) long long __ll; long double __ld; } max_align_t;
+#define __DEFINED_max_align_t
+#endif
+
+#endif
+#define __LITTLE_ENDIAN 1234
+#define __BIG_ENDIAN 4321
+#define __USE_TIME_BITS64 1
+
+#if defined(__NEED_size_t) && !defined(__DEFINED_size_t)
+typedef unsigned _Addr size_t;
+#define __DEFINED_size_t
+#endif
+
+#if defined(__NEED_uintptr_t) && !defined(__DEFINED_uintptr_t)
+typedef unsigned _Addr uintptr_t;
+#define __DEFINED_uintptr_t
+#endif
+
+#if defined(__NEED_ptrdiff_t) && !defined(__DEFINED_ptrdiff_t)
+typedef _Addr ptrdiff_t;
+#define __DEFINED_ptrdiff_t
+#endif
+
+#if defined(__NEED_ssize_t) && !defined(__DEFINED_ssize_t)
+typedef _Addr ssize_t;
+#define __DEFINED_ssize_t
+#endif
+
+#if defined(__NEED_intptr_t) && !defined(__DEFINED_intptr_t)
+typedef _Addr intptr_t;
+#define __DEFINED_intptr_t
+#endif
+
+#if defined(__NEED_regoff_t) && !defined(__DEFINED_regoff_t)
+typedef _Addr regoff_t;
+#define __DEFINED_regoff_t
+#endif
+
+#if defined(__NEED_register_t) && !defined(__DEFINED_register_t)
+typedef _Reg register_t;
+#define __DEFINED_register_t
+#endif
+
+#if defined(__NEED_time_t) && !defined(__DEFINED_time_t)
+typedef _Int64 time_t;
+#define __DEFINED_time_t
+#endif
+
+#if defined(__NEED_suseconds_t) && !defined(__DEFINED_suseconds_t)
+typedef _Int64 suseconds_t;
+#define __DEFINED_suseconds_t
+#endif
+
+
+#if defined(__NEED_int8_t) && !defined(__DEFINED_int8_t)
+typedef signed char     int8_t;
+#define __DEFINED_int8_t
+#endif
+
+#if defined(__NEED_int16_t) && !defined(__DEFINED_int16_t)
+typedef signed short    int16_t;
+#define __DEFINED_int16_t
+#endif
+
+#if defined(__NEED_int32_t) && !defined(__DEFINED_int32_t)
+typedef signed int      int32_t;
+#define __DEFINED_int32_t
+#endif
+
+#if defined(__NEED_int64_t) && !defined(__DEFINED_int64_t)
+typedef signed _Int64   int64_t;
+#define __DEFINED_int64_t
+#endif
+
+#if defined(__NEED_intmax_t) && !defined(__DEFINED_intmax_t)
+typedef signed _Int64   intmax_t;
+#define __DEFINED_intmax_t
+#endif
+
+#if defined(__NEED_uint8_t) && !defined(__DEFINED_uint8_t)
+typedef unsigned char   uint8_t;
+#define __DEFINED_uint8_t
+#endif
+
+#if defined(__NEED_uint16_t) && !defined(__DEFINED_uint16_t)
+typedef unsigned short  uint16_t;
+#define __DEFINED_uint16_t
+#endif
+
+#if defined(__NEED_uint32_t) && !defined(__DEFINED_uint32_t)
+typedef unsigned int    uint32_t;
+#define __DEFINED_uint32_t
+#endif
+
+#if defined(__NEED_uint64_t) && !defined(__DEFINED_uint64_t)
+typedef unsigned _Int64 uint64_t;
+#define __DEFINED_uint64_t
+#endif
+
+#if defined(__NEED_u_int64_t) && !defined(__DEFINED_u_int64_t)
+typedef unsigned _Int64 u_int64_t;
+#define __DEFINED_u_int64_t
+#endif
+
+#if defined(__NEED_uintmax_t) && !defined(__DEFINED_uintmax_t)
+typedef unsigned _Int64 uintmax_t;
+#define __DEFINED_uintmax_t
+#endif
+
+
+#if defined(__NEED_mode_t) && !defined(__DEFINED_mode_t)
+typedef unsigned mode_t;
+#define __DEFINED_mode_t
+#endif
+
+#if defined(__NEED_nlink_t) && !defined(__DEFINED_nlink_t)
+typedef unsigned _Reg nlink_t;
+#define __DEFINED_nlink_t
+#endif
+
+#if defined(__NEED_off_t) && !defined(__DEFINED_off_t)
+typedef _Int64 off_t;
+#define __DEFINED_off_t
+#endif
+
+#if defined(__NEED_ino_t) && !defined(__DEFINED_ino_t)
+typedef unsigned _Int64 ino_t;
+#define __DEFINED_ino_t
+#endif
+
+#if defined(__NEED_dev_t) && !defined(__DEFINED_dev_t)
+typedef unsigned _Int64 dev_t;
+#define __DEFINED_dev_t
+#endif
+
+#if defined(__NEED_blksize_t) && !defined(__DEFINED_blksize_t)
+typedef long blksize_t;
+#define __DEFINED_blksize_t
+#endif
+
+#if defined(__NEED_blkcnt_t) && !defined(__DEFINED_blkcnt_t)
+typedef _Int64 blkcnt_t;
+#define __DEFINED_blkcnt_t
+#endif
+
+#if defined(__NEED_fsblkcnt_t) && !defined(__DEFINED_fsblkcnt_t)
+typedef unsigned _Int64 fsblkcnt_t;
+#define __DEFINED_fsblkcnt_t
+#endif
+
+#if defined(__NEED_fsfilcnt_t) && !defined(__DEFINED_fsfilcnt_t)
+typedef unsigned _Int64 fsfilcnt_t;
+#define __DEFINED_fsfilcnt_t
+#endif
+
+
+#if defined(__NEED_wint_t) && !defined(__DEFINED_wint_t)
+typedef unsigned wint_t;
+#define __DEFINED_wint_t
+#endif
+
+#if defined(__NEED_wctype_t) && !defined(__DEFINED_wctype_t)
+typedef unsigned long wctype_t;
+#define __DEFINED_wctype_t
+#endif
+
+
+#if defined(__NEED_timer_t) && !defined(__DEFINED_timer_t)
+typedef void * timer_t;
+#define __DEFINED_timer_t
+#endif
+
+#if defined(__NEED_clockid_t) && !defined(__DEFINED_clockid_t)
+typedef int clockid_t;
+#define __DEFINED_clockid_t
+#endif
+
+#if defined(__NEED_clock_t) && !defined(__DEFINED_clock_t)
+typedef long clock_t;
+#define __DEFINED_clock_t
+#endif
+
+#if defined(__NEED_struct_timeval) && !defined(__DEFINED_struct_timeval)
+struct timeval { time_t tv_sec; suseconds_t tv_usec; };
+#define __DEFINED_struct_timeval
+#endif
+
+#if defined(__NEED_struct_timespec) && !defined(__DEFINED_struct_timespec)
+struct timespec { time_t tv_sec; int :8*(sizeof(time_t)-sizeof(long))*(__BYTE_ORDER==4321); long tv_nsec; int :8*(sizeof(time_t)-sizeof(long))*(__BYTE_ORDER!=4321); };
+#define __DEFINED_struct_timespec
+#endif
+
+
+#if defined(__NEED_pid_t) && !defined(__DEFINED_pid_t)
+typedef int pid_t;
+#define __DEFINED_pid_t
+#endif
+
+#if defined(__NEED_id_t) && !defined(__DEFINED_id_t)
+typedef unsigned id_t;
+#define __DEFINED_id_t
+#endif
+
+#if defined(__NEED_uid_t) && !defined(__DEFINED_uid_t)
+typedef unsigned uid_t;
+#define __DEFINED_uid_t
+#endif
+
+#if defined(__NEED_gid_t) && !defined(__DEFINED_gid_t)
+typedef unsigned gid_t;
+#define __DEFINED_gid_t
+#endif
+
+#if defined(__NEED_key_t) && !defined(__DEFINED_key_t)
+typedef int key_t;
+#define __DEFINED_key_t
+#endif
+
+#if defined(__NEED_useconds_t) && !defined(__DEFINED_useconds_t)
+typedef unsigned useconds_t;
+#define __DEFINED_useconds_t
+#endif
+
+
+#ifdef __cplusplus
+#if defined(__NEED_pthread_t) && !defined(__DEFINED_pthread_t)
+typedef unsigned long pthread_t;
+#define __DEFINED_pthread_t
+#endif
+
+#else
+#if defined(__NEED_pthread_t) && !defined(__DEFINED_pthread_t)
+typedef struct __pthread * pthread_t;
+#define __DEFINED_pthread_t
+#endif
+
+#endif
+#if defined(__NEED_pthread_once_t) && !defined(__DEFINED_pthread_once_t)
+typedef int pthread_once_t;
+#define __DEFINED_pthread_once_t
+#endif
+
+#if defined(__NEED_pthread_key_t) && !defined(__DEFINED_pthread_key_t)
+typedef unsigned pthread_key_t;
+#define __DEFINED_pthread_key_t
+#endif
+
+#if defined(__NEED_pthread_spinlock_t) && !defined(__DEFINED_pthread_spinlock_t)
+typedef int pthread_spinlock_t;
+#define __DEFINED_pthread_spinlock_t
+#endif
+
+#if defined(__NEED_pthread_mutexattr_t) && !defined(__DEFINED_pthread_mutexattr_t)
+typedef struct { unsigned __attr; } pthread_mutexattr_t;
+#define __DEFINED_pthread_mutexattr_t
+#endif
+
+#if defined(__NEED_pthread_condattr_t) && !defined(__DEFINED_pthread_condattr_t)
+typedef struct { unsigned __attr; } pthread_condattr_t;
+#define __DEFINED_pthread_condattr_t
+#endif
+
+#if defined(__NEED_pthread_barrierattr_t) && !defined(__DEFINED_pthread_barrierattr_t)
+typedef struct { unsigned __attr; } pthread_barrierattr_t;
+#define __DEFINED_pthread_barrierattr_t
+#endif
+
+#if defined(__NEED_pthread_rwlockattr_t) && !defined(__DEFINED_pthread_rwlockattr_t)
+typedef struct { unsigned __attr[2]; } pthread_rwlockattr_t;
+#define __DEFINED_pthread_rwlockattr_t
+#endif
+
+
+#if defined(__NEED_struct__IO_FILE) && !defined(__DEFINED_struct__IO_FILE)
+struct _IO_FILE { char __x; };
+#define __DEFINED_struct__IO_FILE
+#endif
+
+#if defined(__NEED_FILE) && !defined(__DEFINED_FILE)
+typedef struct _IO_FILE FILE;
+#define __DEFINED_FILE
+#endif
+
+
+#if defined(__NEED_va_list) && !defined(__DEFINED_va_list)
+typedef __builtin_va_list va_list;
+#define __DEFINED_va_list
+#endif
+
+#if defined(__NEED___isoc_va_list) && !defined(__DEFINED___isoc_va_list)
+typedef __builtin_va_list __isoc_va_list;
+#define __DEFINED___isoc_va_list
+#endif
+
+
+#if defined(__NEED_mbstate_t) && !defined(__DEFINED_mbstate_t)
+typedef struct __mbstate_t { unsigned __opaque1, __opaque2; } mbstate_t;
+#define __DEFINED_mbstate_t
+#endif
+
+
+#if defined(__NEED_locale_t) && !defined(__DEFINED_locale_t)
+typedef struct __locale_struct * locale_t;
+#define __DEFINED_locale_t
+#endif
+
+
+#if defined(__NEED_sigset_t) && !defined(__DEFINED_sigset_t)
+typedef struct __sigset_t { unsigned long __bits[128/sizeof(long)]; } sigset_t;
+#define __DEFINED_sigset_t
+#endif
+
+
+#if defined(__NEED_struct_iovec) && !defined(__DEFINED_struct_iovec)
+struct iovec { void *iov_base; size_t iov_len; };
+#define __DEFINED_struct_iovec
+#endif
+
+
+#if defined(__NEED_struct_winsize) && !defined(__DEFINED_struct_winsize)
+struct winsize { unsigned short ws_row, ws_col, ws_xpixel, ws_ypixel; };
+#define __DEFINED_struct_winsize
+#endif
+
+
+#if defined(__NEED_socklen_t) && !defined(__DEFINED_socklen_t)
+typedef unsigned socklen_t;
+#define __DEFINED_socklen_t
+#endif
+
+#if defined(__NEED_sa_family_t) && !defined(__DEFINED_sa_family_t)
+typedef unsigned short sa_family_t;
+#define __DEFINED_sa_family_t
+#endif
+
+
+#if defined(__NEED_pthread_attr_t) && !defined(__DEFINED_pthread_attr_t)
+typedef struct { union { int __i[sizeof(long)==8?14:9]; volatile int __vi[sizeof(long)==8?14:9]; unsigned long __s[sizeof(long)==8?7:9]; } __u; } pthread_attr_t;
+#define __DEFINED_pthread_attr_t
+#endif
+
+#if defined(__NEED_pthread_mutex_t) && !defined(__DEFINED_pthread_mutex_t)
+typedef struct { union { int __i[sizeof(long)==8?10:6]; volatile int __vi[sizeof(long)==8?10:6]; volatile void *volatile __p[sizeof(long)==8?5:6]; } __u; } pthread_mutex_t;
+#define __DEFINED_pthread_mutex_t
+#endif
+
+#if defined(__NEED_mtx_t) && !defined(__DEFINED_mtx_t)
+typedef struct { union { int __i[sizeof(long)==8?10:6]; volatile int __vi[sizeof(long)==8?10:6]; volatile void *volatile __p[sizeof(long)==8?5:6]; } __u; } mtx_t;
+#define __DEFINED_mtx_t
+#endif
+
+#if defined(__NEED_pthread_cond_t) && !defined(__DEFINED_pthread_cond_t)
+typedef struct { union { int __i[12]; volatile int __vi[12]; void *__p[12*sizeof(int)/sizeof(void*)]; } __u; } pthread_cond_t;
+#define __DEFINED_pthread_cond_t
+#endif
+
+#if defined(__NEED_cnd_t) && !defined(__DEFINED_cnd_t)
+typedef struct { union { int __i[12]; volatile int __vi[12]; void *__p[12*sizeof(int)/sizeof(void*)]; } __u; } cnd_t;
+#define __DEFINED_cnd_t
+#endif
+
+#if defined(__NEED_pthread_rwlock_t) && !defined(__DEFINED_pthread_rwlock_t)
+typedef struct { union { int __i[sizeof(long)==8?14:8]; volatile int __vi[sizeof(long)==8?14:8]; void *__p[sizeof(long)==8?7:8]; } __u; } pthread_rwlock_t;
+#define __DEFINED_pthread_rwlock_t
+#endif
+
+#if defined(__NEED_pthread_barrier_t) && !defined(__DEFINED_pthread_barrier_t)
+typedef struct { union { int __i[sizeof(long)==8?8:5]; volatile int __vi[sizeof(long)==8?8:5]; void *__p[sizeof(long)==8?4:5]; } __u; } pthread_barrier_t;
+#define __DEFINED_pthread_barrier_t
+#endif
+
+
+#undef _Addr
+#undef _Int64
+#undef _Reg
diff --git a/i686-linux-musl/include/bits/alltypes.h.in b/i686-linux-musl/include/bits/alltypes.h.in
new file mode 100644
index 0000000..6feb03a
--- /dev/null
+++ b/i686-linux-musl/include/bits/alltypes.h.in
@@ -0,0 +1,31 @@
+#define _REDIR_TIME64 1
+#define _Addr int
+#define _Int64 long long
+#define _Reg int
+
+#define __BYTE_ORDER 1234
+#define __LONG_MAX 0x7fffffffL
+
+#ifndef __cplusplus
+#ifdef __WCHAR_TYPE__
+TYPEDEF __WCHAR_TYPE__ wchar_t;
+#else
+TYPEDEF long wchar_t;
+#endif
+#endif
+
+#if defined(__FLT_EVAL_METHOD__) && __FLT_EVAL_METHOD__ == 0
+TYPEDEF float float_t;
+TYPEDEF double double_t;
+#else
+TYPEDEF long double float_t;
+TYPEDEF long double double_t;
+#endif
+
+#if !defined(__cplusplus)
+TYPEDEF struct { _Alignas(8) long long __ll; long double __ld; } max_align_t;
+#elif defined(__GNUC__)
+TYPEDEF struct { __attribute__((__aligned__(8))) long long __ll; long double __ld; } max_align_t;
+#else
+TYPEDEF struct { alignas(8) long long __ll; long double __ld; } max_align_t;
+#endif
diff --git a/i686-linux-musl/include/bits/dirent.h b/i686-linux-musl/include/bits/dirent.h
new file mode 100644
index 0000000..c845fe8
--- /dev/null
+++ b/i686-linux-musl/include/bits/dirent.h
@@ -0,0 +1,11 @@
+#define _DIRENT_HAVE_D_RECLEN
+#define _DIRENT_HAVE_D_OFF
+#define _DIRENT_HAVE_D_TYPE
+
+struct dirent {
+	ino_t d_ino;
+	off_t d_off;
+	unsigned short d_reclen;
+	unsigned char d_type;
+	char d_name[256];
+};
diff --git a/i686-linux-musl/include/bits/errno.h b/i686-linux-musl/include/bits/errno.h
new file mode 100644
index 0000000..d2e1eee
--- /dev/null
+++ b/i686-linux-musl/include/bits/errno.h
@@ -0,0 +1,134 @@
+#define EPERM            1
+#define ENOENT           2
+#define ESRCH            3
+#define EINTR            4
+#define EIO              5
+#define ENXIO            6
+#define E2BIG            7
+#define ENOEXEC          8
+#define EBADF            9
+#define ECHILD          10
+#define EAGAIN          11
+#define ENOMEM          12
+#define EACCES          13
+#define EFAULT          14
+#define ENOTBLK         15
+#define EBUSY           16
+#define EEXIST          17
+#define EXDEV           18
+#define ENODEV          19
+#define ENOTDIR         20
+#define EISDIR          21
+#define EINVAL          22
+#define ENFILE          23
+#define EMFILE          24
+#define ENOTTY          25
+#define ETXTBSY         26
+#define EFBIG           27
+#define ENOSPC          28
+#define ESPIPE          29
+#define EROFS           30
+#define EMLINK          31
+#define EPIPE           32
+#define EDOM            33
+#define ERANGE          34
+#define EDEADLK         35
+#define ENAMETOOLONG    36
+#define ENOLCK          37
+#define ENOSYS          38
+#define ENOTEMPTY       39
+#define ELOOP           40
+#define EWOULDBLOCK     EAGAIN
+#define ENOMSG          42
+#define EIDRM           43
+#define ECHRNG          44
+#define EL2NSYNC        45
+#define EL3HLT          46
+#define EL3RST          47
+#define ELNRNG          48
+#define EUNATCH         49
+#define ENOCSI          50
+#define EL2HLT          51
+#define EBADE           52
+#define EBADR           53
+#define EXFULL          54
+#define ENOANO          55
+#define EBADRQC         56
+#define EBADSLT         57
+#define EDEADLOCK       EDEADLK
+#define EBFONT          59
+#define ENOSTR          60
+#define ENODATA         61
+#define ETIME           62
+#define ENOSR           63
+#define ENONET          64
+#define ENOPKG          65
+#define EREMOTE         66
+#define ENOLINK         67
+#define EADV            68
+#define ESRMNT          69
+#define ECOMM           70
+#define EPROTO          71
+#define EMULTIHOP       72
+#define EDOTDOT         73
+#define EBADMSG         74
+#define EOVERFLOW       75
+#define ENOTUNIQ        76
+#define EBADFD          77
+#define EREMCHG         78
+#define ELIBACC         79
+#define ELIBBAD         80
+#define ELIBSCN         81
+#define ELIBMAX         82
+#define ELIBEXEC        83
+#define EILSEQ          84
+#define ERESTART        85
+#define ESTRPIPE        86
+#define EUSERS          87
+#define ENOTSOCK        88
+#define EDESTADDRREQ    89
+#define EMSGSIZE        90
+#define EPROTOTYPE      91
+#define ENOPROTOOPT     92
+#define EPROTONOSUPPORT 93
+#define ESOCKTNOSUPPORT 94
+#define EOPNOTSUPP      95
+#define ENOTSUP         EOPNOTSUPP
+#define EPFNOSUPPORT    96
+#define EAFNOSUPPORT    97
+#define EADDRINUSE      98
+#define EADDRNOTAVAIL   99
+#define ENETDOWN        100
+#define ENETUNREACH     101
+#define ENETRESET       102
+#define ECONNABORTED    103
+#define ECONNRESET      104
+#define ENOBUFS         105
+#define EISCONN         106
+#define ENOTCONN        107
+#define ESHUTDOWN       108
+#define ETOOMANYREFS    109
+#define ETIMEDOUT       110
+#define ECONNREFUSED    111
+#define EHOSTDOWN       112
+#define EHOSTUNREACH    113
+#define EALREADY        114
+#define EINPROGRESS     115
+#define ESTALE          116
+#define EUCLEAN         117
+#define ENOTNAM         118
+#define ENAVAIL         119
+#define EISNAM          120
+#define EREMOTEIO       121
+#define EDQUOT          122
+#define ENOMEDIUM       123
+#define EMEDIUMTYPE     124
+#define ECANCELED       125
+#define ENOKEY          126
+#define EKEYEXPIRED     127
+#define EKEYREVOKED     128
+#define EKEYREJECTED    129
+#define EOWNERDEAD      130
+#define ENOTRECOVERABLE 131
+#define ERFKILL         132
+#define EHWPOISON       133
diff --git a/i686-linux-musl/include/bits/fcntl.h b/i686-linux-musl/include/bits/fcntl.h
new file mode 100644
index 0000000..730a98c
--- /dev/null
+++ b/i686-linux-musl/include/bits/fcntl.h
@@ -0,0 +1,46 @@
+#define O_CREAT        0100
+#define O_EXCL         0200
+#define O_NOCTTY       0400
+#define O_TRUNC       01000
+#define O_APPEND      02000
+#define O_NONBLOCK    04000
+#define O_DSYNC      010000
+#define O_SYNC     04010000
+#define O_RSYNC    04010000
+#define O_DIRECTORY 0200000
+#define O_NOFOLLOW  0400000
+#define O_CLOEXEC  02000000
+
+#define O_ASYNC      020000
+#define O_DIRECT     040000
+#define O_LARGEFILE 0100000
+#define O_NOATIME  01000000
+#define O_PATH    010000000
+#define O_TMPFILE 020200000
+#define O_NDELAY O_NONBLOCK
+
+#define F_DUPFD  0
+#define F_GETFD  1
+#define F_SETFD  2
+#define F_GETFL  3
+#define F_SETFL  4
+
+#define F_SETOWN 8
+#define F_GETOWN 9
+#define F_SETSIG 10
+#define F_GETSIG 11
+
+#if __LONG_MAX == 0x7fffffffL
+#define F_GETLK 12
+#define F_SETLK 13
+#define F_SETLKW 14
+#else
+#define F_GETLK 5
+#define F_SETLK 6
+#define F_SETLKW 7
+#endif
+
+#define F_SETOWN_EX 15
+#define F_GETOWN_EX 16
+
+#define F_GETOWNER_UIDS 17
diff --git a/i686-linux-musl/include/bits/fenv.h b/i686-linux-musl/include/bits/fenv.h
new file mode 100644
index 0000000..4430009
--- /dev/null
+++ b/i686-linux-musl/include/bits/fenv.h
@@ -0,0 +1,33 @@
+#define FE_INVALID    1
+#define __FE_DENORM   2
+#define FE_DIVBYZERO  4
+#define FE_OVERFLOW   8
+#define FE_UNDERFLOW  16
+#define FE_INEXACT    32
+
+#define FE_ALL_EXCEPT 63
+
+#define FE_TONEAREST  0
+#define FE_DOWNWARD   0x400
+#define FE_UPWARD     0x800
+#define FE_TOWARDZERO 0xc00
+
+typedef unsigned short fexcept_t;
+
+typedef struct {
+	unsigned short __control_word;
+	unsigned short __unused1;
+	unsigned short __status_word;
+	unsigned short __unused2;
+	unsigned short __tags;
+	unsigned short __unused3;
+	unsigned int __eip;
+	unsigned short __cs_selector;
+	unsigned int __opcode:11;
+	unsigned int __unused4:5;
+	unsigned int __data_offset;
+	unsigned short __data_selector;
+	unsigned short __unused5;
+} fenv_t;
+
+#define FE_DFL_ENV      ((const fenv_t *) -1)
diff --git a/i686-linux-musl/include/bits/float.h b/i686-linux-musl/include/bits/float.h
new file mode 100644
index 0000000..dd6e402
--- /dev/null
+++ b/i686-linux-musl/include/bits/float.h
@@ -0,0 +1,20 @@
+#ifdef __FLT_EVAL_METHOD__
+#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
+#else
+#define FLT_EVAL_METHOD 2
+#endif
+
+#define LDBL_TRUE_MIN 3.6451995318824746025e-4951L
+#define LDBL_MIN     3.3621031431120935063e-4932L
+#define LDBL_MAX     1.1897314953572317650e+4932L
+#define LDBL_EPSILON 1.0842021724855044340e-19L
+
+#define LDBL_MANT_DIG 64
+#define LDBL_MIN_EXP (-16381)
+#define LDBL_MAX_EXP 16384
+
+#define LDBL_DIG 18
+#define LDBL_MIN_10_EXP (-4931)
+#define LDBL_MAX_10_EXP 4932
+
+#define DECIMAL_DIG 21
diff --git a/i686-linux-musl/include/bits/hwcap.h b/i686-linux-musl/include/bits/hwcap.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/i686-linux-musl/include/bits/hwcap.h
diff --git a/i686-linux-musl/include/bits/in_addr.h b/i686-linux-musl/include/bits/in_addr.h
new file mode 100644
index 0000000..07313e5
--- /dev/null
+++ b/i686-linux-musl/include/bits/in_addr.h
@@ -0,0 +1,4 @@
+#pragma once
+
+// musl defines in_addr in netinet/in.h
+#include <netinet/in.h>
diff --git a/i686-linux-musl/include/bits/io.h b/i686-linux-musl/include/bits/io.h
new file mode 100644
index 0000000..dd5bddc
--- /dev/null
+++ b/i686-linux-musl/include/bits/io.h
@@ -0,0 +1,77 @@
+static __inline void outb(unsigned char __val, unsigned short __port)
+{
+	__asm__ volatile ("outb %0,%1" : : "a" (__val), "dN" (__port));
+}
+
+static __inline void outw(unsigned short __val, unsigned short __port)
+{
+	__asm__ volatile ("outw %0,%1" : : "a" (__val), "dN" (__port));
+}
+
+static __inline void outl(unsigned int __val, unsigned short __port)
+{
+	__asm__ volatile ("outl %0,%1" : : "a" (__val), "dN" (__port));
+}
+
+static __inline unsigned char inb(unsigned short __port)
+{
+	unsigned char __val;
+	__asm__ volatile ("inb %1,%0" : "=a" (__val) : "dN" (__port));
+	return __val;
+}
+
+static __inline unsigned short inw(unsigned short __port)
+{
+	unsigned short __val;
+	__asm__ volatile ("inw %1,%0" : "=a" (__val) : "dN" (__port));
+	return __val;
+}
+
+static __inline unsigned int inl(unsigned short __port)
+{
+	unsigned int __val;
+	__asm__ volatile ("inl %1,%0" : "=a" (__val) : "dN" (__port));
+	return __val;
+}
+
+static __inline void outsb(unsigned short __port, const void *__buf, unsigned long __n)
+{
+	__asm__ volatile ("cld; rep; outsb"
+		      : "+S" (__buf), "+c" (__n)
+		      : "d" (__port));
+}
+
+static __inline void outsw(unsigned short __port, const void *__buf, unsigned long __n)
+{
+	__asm__ volatile ("cld; rep; outsw"
+		      : "+S" (__buf), "+c" (__n)
+		      : "d" (__port));
+}
+
+static __inline void outsl(unsigned short __port, const void *__buf, unsigned long __n)
+{
+	__asm__ volatile ("cld; rep; outsl"
+		      : "+S" (__buf), "+c"(__n)
+		      : "d" (__port));
+}
+
+static __inline void insb(unsigned short __port, void *__buf, unsigned long __n)
+{
+	__asm__ volatile ("cld; rep; insb"
+		      : "+D" (__buf), "+c" (__n)
+		      : "d" (__port));
+}
+
+static __inline void insw(unsigned short __port, void *__buf, unsigned long __n)
+{
+	__asm__ volatile ("cld; rep; insw"
+		      : "+D" (__buf), "+c" (__n)
+		      : "d" (__port));
+}
+
+static __inline void insl(unsigned short __port, void *__buf, unsigned long __n)
+{
+	__asm__ volatile ("cld; rep; insl"
+		      : "+D" (__buf), "+c" (__n)
+		      : "d" (__port));
+}
diff --git a/i686-linux-musl/include/bits/ioctl.h b/i686-linux-musl/include/bits/ioctl.h
new file mode 100644
index 0000000..60ae8b8
--- /dev/null
+++ b/i686-linux-musl/include/bits/ioctl.h
@@ -0,0 +1,115 @@
+#define _IOC(a,b,c,d) ( ((a)<<30) | ((b)<<8) | (c) | ((d)<<16) )
+#define _IOC_NONE  0U
+#define _IOC_WRITE 1U
+#define _IOC_READ  2U
+
+#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0)
+#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c))
+#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c))
+#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c))
+
+#define TCGETS		0x5401
+#define TCSETS		0x5402
+#define TCSETSW		0x5403
+#define TCSETSF		0x5404
+#define TCGETA		0x5405
+#define TCSETA		0x5406
+#define TCSETAW		0x5407
+#define TCSETAF		0x5408
+#define TCSBRK		0x5409
+#define TCXONC		0x540A
+#define TCFLSH		0x540B
+#define TIOCEXCL	0x540C
+#define TIOCNXCL	0x540D
+#define TIOCSCTTY	0x540E
+#define TIOCGPGRP	0x540F
+#define TIOCSPGRP	0x5410
+#define TIOCOUTQ	0x5411
+#define TIOCSTI		0x5412
+#define TIOCGWINSZ	0x5413
+#define TIOCSWINSZ	0x5414
+#define TIOCMGET	0x5415
+#define TIOCMBIS	0x5416
+#define TIOCMBIC	0x5417
+#define TIOCMSET	0x5418
+#define TIOCGSOFTCAR	0x5419
+#define TIOCSSOFTCAR	0x541A
+#define FIONREAD	0x541B
+#define TIOCINQ		FIONREAD
+#define TIOCLINUX	0x541C
+#define TIOCCONS	0x541D
+#define TIOCGSERIAL	0x541E
+#define TIOCSSERIAL	0x541F
+#define TIOCPKT		0x5420
+#define FIONBIO		0x5421
+#define TIOCNOTTY	0x5422
+#define TIOCSETD	0x5423
+#define TIOCGETD	0x5424
+#define TCSBRKP		0x5425
+#define TIOCSBRK	0x5427
+#define TIOCCBRK	0x5428
+#define TIOCGSID	0x5429
+#define TIOCGRS485	0x542E
+#define TIOCSRS485	0x542F
+#define TIOCGPTN	0x80045430
+#define TIOCSPTLCK	0x40045431
+#define TIOCGDEV	0x80045432
+#define TCGETX		0x5432
+#define TCSETX		0x5433
+#define TCSETXF		0x5434
+#define TCSETXW		0x5435
+#define TIOCSIG		0x40045436
+#define TIOCVHANGUP	0x5437
+#define TIOCGPKT	0x80045438
+#define TIOCGPTLCK	0x80045439
+#define TIOCGEXCL	0x80045440
+#define TIOCGPTPEER	0x5441
+#define TIOCGISO7816	0x80285442
+#define TIOCSISO7816	0xc0285443
+
+#define FIONCLEX	0x5450
+#define FIOCLEX		0x5451
+#define FIOASYNC	0x5452
+#define TIOCSERCONFIG	0x5453
+#define TIOCSERGWILD	0x5454
+#define TIOCSERSWILD	0x5455
+#define TIOCGLCKTRMIOS	0x5456
+#define TIOCSLCKTRMIOS	0x5457
+#define TIOCSERGSTRUCT	0x5458
+#define TIOCSERGETLSR   0x5459
+#define TIOCSERGETMULTI 0x545A
+#define TIOCSERSETMULTI 0x545B
+
+#define TIOCMIWAIT	0x545C
+#define TIOCGICOUNT	0x545D
+#define FIOQSIZE	0x5460
+
+#define TIOCM_LE        0x001
+#define TIOCM_DTR       0x002
+#define TIOCM_RTS       0x004
+#define TIOCM_ST        0x008
+#define TIOCM_SR        0x010
+#define TIOCM_CTS       0x020
+#define TIOCM_CAR       0x040
+#define TIOCM_RNG       0x080
+#define TIOCM_DSR       0x100
+#define TIOCM_CD        TIOCM_CAR
+#define TIOCM_RI        TIOCM_RNG
+#define TIOCM_OUT1      0x2000
+#define TIOCM_OUT2      0x4000
+#define TIOCM_LOOP      0x8000
+
+#define FIOSETOWN       0x8901
+#define SIOCSPGRP       0x8902
+#define FIOGETOWN       0x8903
+#define SIOCGPGRP       0x8904
+#define SIOCATMARK      0x8905
+#if __LONG_MAX == 0x7fffffff
+#define SIOCGSTAMP      _IOR(0x89, 6, char[16])
+#define SIOCGSTAMPNS    _IOR(0x89, 7, char[16])
+#else
+#define SIOCGSTAMP      0x8906
+#define SIOCGSTAMPNS    0x8907
+#endif
+
+#include <bits/ioctl_fix.h>
diff --git a/i686-linux-musl/include/bits/ioctl_fix.h b/i686-linux-musl/include/bits/ioctl_fix.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/i686-linux-musl/include/bits/ioctl_fix.h
diff --git a/i686-linux-musl/include/bits/ip_mreq_source.h b/i686-linux-musl/include/bits/ip_mreq_source.h
new file mode 100644
index 0000000..b8aeb8c
--- /dev/null
+++ b/i686-linux-musl/include/bits/ip_mreq_source.h
@@ -0,0 +1,4 @@
+#pragma once
+
+// musl defines ip_mreq_source in netinet/in.h
+#include <netinet/in.h>
diff --git a/i686-linux-musl/include/bits/ip_msfilter.h b/i686-linux-musl/include/bits/ip_msfilter.h
new file mode 100644
index 0000000..262a294
--- /dev/null
+++ b/i686-linux-musl/include/bits/ip_msfilter.h
@@ -0,0 +1,4 @@
+#pragma once
+
+// musl defines ip_msfilter in netinet/in.h
+#include <netinet/in.h>
diff --git a/i686-linux-musl/include/bits/ipc.h b/i686-linux-musl/include/bits/ipc.h
new file mode 100644
index 0000000..40d6f3a
--- /dev/null
+++ b/i686-linux-musl/include/bits/ipc.h
@@ -0,0 +1,11 @@
+struct ipc_perm {
+	key_t __ipc_perm_key;
+	uid_t uid;
+	gid_t gid;
+	uid_t cuid;
+	gid_t cgid;
+	mode_t mode;
+	int __ipc_perm_seq;
+	long __pad1;
+	long __pad2;
+};
diff --git a/i686-linux-musl/include/bits/ipcstat.h b/i686-linux-musl/include/bits/ipcstat.h
new file mode 100644
index 0000000..4f4fcb0
--- /dev/null
+++ b/i686-linux-musl/include/bits/ipcstat.h
@@ -0,0 +1 @@
+#define IPC_STAT 0x102
diff --git a/i686-linux-musl/include/bits/kd.h b/i686-linux-musl/include/bits/kd.h
new file mode 100644
index 0000000..33b873f
--- /dev/null
+++ b/i686-linux-musl/include/bits/kd.h
@@ -0,0 +1 @@
+#include <linux/kd.h>
diff --git a/i686-linux-musl/include/bits/limits.h b/i686-linux-musl/include/bits/limits.h
new file mode 100644
index 0000000..07743b6
--- /dev/null
+++ b/i686-linux-musl/include/bits/limits.h
@@ -0,0 +1 @@
+#define PAGESIZE 4096
diff --git a/i686-linux-musl/include/bits/link.h b/i686-linux-musl/include/bits/link.h
new file mode 100644
index 0000000..4a94d8f
--- /dev/null
+++ b/i686-linux-musl/include/bits/link.h
@@ -0,0 +1 @@
+typedef uint32_t Elf_Symndx;
diff --git a/i686-linux-musl/include/bits/mman.h b/i686-linux-musl/include/bits/mman.h
new file mode 100644
index 0000000..ba2d6f7
--- /dev/null
+++ b/i686-linux-musl/include/bits/mman.h
@@ -0,0 +1 @@
+#define MAP_32BIT      0x40
diff --git a/i686-linux-musl/include/bits/msg.h b/i686-linux-musl/include/bits/msg.h
new file mode 100644
index 0000000..7bbbb2b
--- /dev/null
+++ b/i686-linux-musl/include/bits/msg.h
@@ -0,0 +1,18 @@
+struct msqid_ds {
+	struct ipc_perm msg_perm;
+	unsigned long __msg_stime_lo;
+	unsigned long __msg_stime_hi;
+	unsigned long __msg_rtime_lo;
+	unsigned long __msg_rtime_hi;
+	unsigned long __msg_ctime_lo;
+	unsigned long __msg_ctime_hi;
+	unsigned long msg_cbytes;
+	msgqnum_t msg_qnum;
+	msglen_t msg_qbytes;
+	pid_t msg_lspid;
+	pid_t msg_lrpid;
+	unsigned long __unused[2];
+	time_t msg_stime;
+	time_t msg_rtime;
+	time_t msg_ctime;
+};
diff --git a/i686-linux-musl/include/bits/poll.h b/i686-linux-musl/include/bits/poll.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/i686-linux-musl/include/bits/poll.h
diff --git a/i686-linux-musl/include/bits/posix.h b/i686-linux-musl/include/bits/posix.h
new file mode 100644
index 0000000..30a3871
--- /dev/null
+++ b/i686-linux-musl/include/bits/posix.h
@@ -0,0 +1,2 @@
+#define _POSIX_V6_ILP32_OFFBIG  1
+#define _POSIX_V7_ILP32_OFFBIG  1
diff --git a/i686-linux-musl/include/bits/ptrace.h b/i686-linux-musl/include/bits/ptrace.h
new file mode 100644
index 0000000..7d0efbf
--- /dev/null
+++ b/i686-linux-musl/include/bits/ptrace.h
@@ -0,0 +1,11 @@
+#define PTRACE_GET_THREAD_AREA		25
+#define PTRACE_SET_THREAD_AREA		26
+#define PTRACE_SYSEMU			31
+#define PTRACE_SYSEMU_SINGLESTEP	32
+#define PTRACE_SINGLEBLOCK		33
+
+#define PT_GET_THREAD_AREA PTRACE_GET_THREAD_AREA
+#define PT_SET_THREAD_AREA PTRACE_SET_THREAD_AREA
+#define PT_SYSEMU PTRACE_SYSEMU
+#define PT_SYSEMU_SINGLESTEP PTRACE_SYSEMU_SINGLESTEP
+#define PT_STEPBLOCK PTRACE_SINGLEBLOCK
diff --git a/i686-linux-musl/include/bits/reg.h b/i686-linux-musl/include/bits/reg.h
new file mode 100644
index 0000000..8bc2582
--- /dev/null
+++ b/i686-linux-musl/include/bits/reg.h
@@ -0,0 +1,19 @@
+#undef __WORDSIZE
+#define __WORDSIZE 32
+#define EBX 0
+#define ECX 1
+#define EDX 2
+#define ESI 3
+#define EDI 4
+#define EBP 5
+#define EAX 6
+#define DS 7
+#define ES 8
+#define FS 9
+#define GS 10
+#define ORIG_EAX 11
+#define EIP 12
+#define CS 13
+#define EFL 14
+#define UESP 15
+#define SS 16
diff --git a/i686-linux-musl/include/bits/resource.h b/i686-linux-musl/include/bits/resource.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/i686-linux-musl/include/bits/resource.h
diff --git a/i686-linux-musl/include/bits/sem.h b/i686-linux-musl/include/bits/sem.h
new file mode 100644
index 0000000..6566154
--- /dev/null
+++ b/i686-linux-musl/include/bits/sem.h
@@ -0,0 +1,13 @@
+struct semid_ds {
+	struct ipc_perm sem_perm;
+	unsigned long __sem_otime_lo;
+	unsigned long __sem_otime_hi;
+	unsigned long __sem_ctime_lo;
+	unsigned long __sem_ctime_hi;
+	unsigned short sem_nsems;
+	char __sem_nsems_pad[sizeof(long)-sizeof(short)];
+	long __unused3;
+	long __unused4;
+	time_t sem_otime;
+	time_t sem_ctime;
+};
diff --git a/i686-linux-musl/include/bits/setjmp.h b/i686-linux-musl/include/bits/setjmp.h
new file mode 100644
index 0000000..decd26d
--- /dev/null
+++ b/i686-linux-musl/include/bits/setjmp.h
@@ -0,0 +1 @@
+typedef unsigned long __jmp_buf[6];
diff --git a/i686-linux-musl/include/bits/shm.h b/i686-linux-musl/include/bits/shm.h
new file mode 100644
index 0000000..725fb46
--- /dev/null
+++ b/i686-linux-musl/include/bits/shm.h
@@ -0,0 +1,31 @@
+#define SHMLBA 4096
+
+struct shmid_ds {
+	struct ipc_perm shm_perm;
+	size_t shm_segsz;
+	unsigned long __shm_atime_lo;
+	unsigned long __shm_atime_hi;
+	unsigned long __shm_dtime_lo;
+	unsigned long __shm_dtime_hi;
+	unsigned long __shm_ctime_lo;
+	unsigned long __shm_ctime_hi;
+	pid_t shm_cpid;
+	pid_t shm_lpid;
+	unsigned long shm_nattch;
+	unsigned long __pad1;
+	unsigned long __pad2;
+	unsigned long __pad3;
+	time_t shm_atime;
+	time_t shm_dtime;
+	time_t shm_ctime;
+};
+
+struct shminfo {
+	unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4];
+};
+
+struct shm_info {
+	int __used_ids;
+	unsigned long shm_tot, shm_rss, shm_swp;
+	unsigned long __swap_attempts, __swap_successes;
+};
diff --git a/i686-linux-musl/include/bits/signal.h b/i686-linux-musl/include/bits/signal.h
new file mode 100644
index 0000000..9931ee9
--- /dev/null
+++ b/i686-linux-musl/include/bits/signal.h
@@ -0,0 +1,142 @@
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define MINSIGSTKSZ 2048
+#define SIGSTKSZ 8192
+#endif
+
+#ifdef _GNU_SOURCE
+enum { REG_GS = 0 };
+#define REG_GS REG_GS
+enum { REG_FS = 1 };
+#define REG_FS REG_FS
+enum { REG_ES = 2 };
+#define REG_ES REG_ES
+enum { REG_DS = 3 };
+#define REG_DS REG_DS
+enum { REG_EDI = 4 };
+#define REG_EDI REG_EDI
+enum { REG_ESI = 5 };
+#define REG_ESI REG_ESI
+enum { REG_EBP = 6 };
+#define REG_EBP REG_EBP
+enum { REG_ESP = 7 };
+#define REG_ESP REG_ESP
+enum { REG_EBX = 8 };
+#define REG_EBX REG_EBX
+enum { REG_EDX = 9 };
+#define REG_EDX REG_EDX
+enum { REG_ECX = 10 };
+#define REG_ECX REG_ECX
+enum { REG_EAX = 11 };
+#define REG_EAX REG_EAX
+enum { REG_TRAPNO = 12 };
+#define REG_TRAPNO REG_TRAPNO
+enum { REG_ERR = 13 };
+#define REG_ERR REG_ERR
+enum { REG_EIP = 14 };
+#define REG_EIP REG_EIP
+enum { REG_CS = 15 };
+#define REG_CS REG_CS
+enum { REG_EFL = 16 };
+#define REG_EFL REG_EFL
+enum { REG_UESP = 17 };
+#define REG_UESP REG_UESP
+enum { REG_SS = 18 };
+#define REG_SS REG_SS
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+typedef int greg_t, gregset_t[19];
+typedef struct _fpstate {
+	unsigned long cw, sw, tag, ipoff, cssel, dataoff, datasel;
+	struct {
+		unsigned short significand[4], exponent;
+	} _st[8];
+	unsigned long status;
+} *fpregset_t;
+struct sigcontext {
+	unsigned short gs, __gsh, fs, __fsh, es, __esh, ds, __dsh;
+	unsigned long edi, esi, ebp, esp, ebx, edx, ecx, eax;
+	unsigned long trapno, err, eip;
+	unsigned short cs, __csh;
+	unsigned long eflags, esp_at_signal;
+	unsigned short ss, __ssh;
+	struct _fpstate *fpstate;
+	unsigned long oldmask, cr2;
+};
+typedef struct {
+	gregset_t gregs;
+	fpregset_t fpregs;
+	unsigned long oldmask, cr2;
+} mcontext_t;
+#else
+typedef struct {
+	unsigned __space[22];
+} mcontext_t;
+#endif
+
+struct sigaltstack {
+	void *ss_sp;
+	int ss_flags;
+	size_t ss_size;
+};
+
+typedef struct __ucontext {
+	unsigned long uc_flags;
+	struct __ucontext *uc_link;
+	stack_t uc_stack;
+	mcontext_t uc_mcontext;
+	sigset_t uc_sigmask;
+	unsigned long __fpregs_mem[28];
+} ucontext_t;
+
+#define SA_NOCLDSTOP  1
+#define SA_NOCLDWAIT  2
+#define SA_SIGINFO    4
+#define SA_ONSTACK    0x08000000
+#define SA_RESTART    0x10000000
+#define SA_NODEFER    0x40000000
+#define SA_RESETHAND  0x80000000
+#define SA_RESTORER   0x04000000
+
+#endif
+
+#define SIGHUP    1
+#define SIGINT    2
+#define SIGQUIT   3
+#define SIGILL    4
+#define SIGTRAP   5
+#define SIGABRT   6
+#define SIGIOT    SIGABRT
+#define SIGBUS    7
+#define SIGFPE    8
+#define SIGKILL   9
+#define SIGUSR1   10
+#define SIGSEGV   11
+#define SIGUSR2   12
+#define SIGPIPE   13
+#define SIGALRM   14
+#define SIGTERM   15
+#define SIGSTKFLT 16
+#define SIGCHLD   17
+#define SIGCONT   18
+#define SIGSTOP   19
+#define SIGTSTP   20
+#define SIGTTIN   21
+#define SIGTTOU   22
+#define SIGURG    23
+#define SIGXCPU   24
+#define SIGXFSZ   25
+#define SIGVTALRM 26
+#define SIGPROF   27
+#define SIGWINCH  28
+#define SIGIO     29
+#define SIGPOLL   29
+#define SIGPWR    30
+#define SIGSYS    31
+#define SIGUNUSED SIGSYS
+
+#define _NSIG 65
+
diff --git a/i686-linux-musl/include/bits/socket.h b/i686-linux-musl/include/bits/socket.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/i686-linux-musl/include/bits/socket.h
diff --git a/i686-linux-musl/include/bits/soundcard.h b/i686-linux-musl/include/bits/soundcard.h
new file mode 100644
index 0000000..fade986
--- /dev/null
+++ b/i686-linux-musl/include/bits/soundcard.h
@@ -0,0 +1 @@
+#include <linux/soundcard.h>
diff --git a/i686-linux-musl/include/bits/stat.h b/i686-linux-musl/include/bits/stat.h
new file mode 100644
index 0000000..5d7828c
--- /dev/null
+++ b/i686-linux-musl/include/bits/stat.h
@@ -0,0 +1,25 @@
+/* copied from kernel definition, but with padding replaced
+ * by the corresponding correctly-sized userspace types. */
+
+struct stat {
+	dev_t st_dev;
+	int __st_dev_padding;
+	long __st_ino_truncated;
+	mode_t st_mode;
+	nlink_t st_nlink;
+	uid_t st_uid;
+	gid_t st_gid;
+	dev_t st_rdev;
+	int __st_rdev_padding;
+	off_t st_size;
+	blksize_t st_blksize;
+	blkcnt_t st_blocks;
+	struct {
+		long tv_sec;
+		long tv_nsec;
+	} __st_atim32, __st_mtim32, __st_ctim32;
+	ino_t st_ino;
+	struct timespec st_atim;
+	struct timespec st_mtim;
+	struct timespec st_ctim;
+};
diff --git a/i686-linux-musl/include/bits/statfs.h b/i686-linux-musl/include/bits/statfs.h
new file mode 100644
index 0000000..f103f4e
--- /dev/null
+++ b/i686-linux-musl/include/bits/statfs.h
@@ -0,0 +1,7 @@
+struct statfs {
+	unsigned long f_type, f_bsize;
+	fsblkcnt_t f_blocks, f_bfree, f_bavail;
+	fsfilcnt_t f_files, f_ffree;
+	fsid_t f_fsid;
+	unsigned long f_namelen, f_frsize, f_flags, f_spare[4];
+};
diff --git a/i686-linux-musl/include/bits/stdint.h b/i686-linux-musl/include/bits/stdint.h
new file mode 100644
index 0000000..d1b2712
--- /dev/null
+++ b/i686-linux-musl/include/bits/stdint.h
@@ -0,0 +1,20 @@
+typedef int32_t int_fast16_t;
+typedef int32_t int_fast32_t;
+typedef uint32_t uint_fast16_t;
+typedef uint32_t uint_fast32_t;
+
+#define INT_FAST16_MIN  INT32_MIN
+#define INT_FAST32_MIN  INT32_MIN
+
+#define INT_FAST16_MAX  INT32_MAX
+#define INT_FAST32_MAX  INT32_MAX
+
+#define UINT_FAST16_MAX UINT32_MAX
+#define UINT_FAST32_MAX UINT32_MAX
+
+#define INTPTR_MIN      INT32_MIN
+#define INTPTR_MAX      INT32_MAX
+#define UINTPTR_MAX     UINT32_MAX
+#define PTRDIFF_MIN     INT32_MIN
+#define PTRDIFF_MAX     INT32_MAX
+#define SIZE_MAX        UINT32_MAX
diff --git a/i686-linux-musl/include/bits/syscall.h b/i686-linux-musl/include/bits/syscall.h
new file mode 100644
index 0000000..31f0241
--- /dev/null
+++ b/i686-linux-musl/include/bits/syscall.h
@@ -0,0 +1,865 @@
+#define __NR_restart_syscall      0
+#define __NR_exit		  1
+#define __NR_fork		  2
+#define __NR_read		  3
+#define __NR_write		  4
+#define __NR_open		  5
+#define __NR_close		  6
+#define __NR_waitpid		  7
+#define __NR_creat		  8
+#define __NR_link		  9
+#define __NR_unlink		 10
+#define __NR_execve		 11
+#define __NR_chdir		 12
+#define __NR_time		 13
+#define __NR_mknod		 14
+#define __NR_chmod		 15
+#define __NR_lchown		 16
+#define __NR_break		 17
+#define __NR_oldstat		 18
+#define __NR_lseek		 19
+#define __NR_getpid		 20
+#define __NR_mount		 21
+#define __NR_umount		 22
+#define __NR_setuid		 23
+#define __NR_getuid		 24
+#define __NR_stime		 25
+#define __NR_ptrace		 26
+#define __NR_alarm		 27
+#define __NR_oldfstat		 28
+#define __NR_pause		 29
+#define __NR_utime		 30
+#define __NR_stty		 31
+#define __NR_gtty		 32
+#define __NR_access		 33
+#define __NR_nice		 34
+#define __NR_ftime		 35
+#define __NR_sync		 36
+#define __NR_kill		 37
+#define __NR_rename		 38
+#define __NR_mkdir		 39
+#define __NR_rmdir		 40
+#define __NR_dup		 41
+#define __NR_pipe		 42
+#define __NR_times		 43
+#define __NR_prof		 44
+#define __NR_brk		 45
+#define __NR_setgid		 46
+#define __NR_getgid		 47
+#define __NR_signal		 48
+#define __NR_geteuid		 49
+#define __NR_getegid		 50
+#define __NR_acct		 51
+#define __NR_umount2		 52
+#define __NR_lock		 53
+#define __NR_ioctl		 54
+#define __NR_fcntl		 55
+#define __NR_mpx		 56
+#define __NR_setpgid		 57
+#define __NR_ulimit		 58
+#define __NR_oldolduname	 59
+#define __NR_umask		 60
+#define __NR_chroot		 61
+#define __NR_ustat		 62
+#define __NR_dup2		 63
+#define __NR_getppid		 64
+#define __NR_getpgrp		 65
+#define __NR_setsid		 66
+#define __NR_sigaction		 67
+#define __NR_sgetmask		 68
+#define __NR_ssetmask		 69
+#define __NR_setreuid		 70
+#define __NR_setregid		 71
+#define __NR_sigsuspend		 72
+#define __NR_sigpending		 73
+#define __NR_sethostname	 74
+#define __NR_setrlimit		 75
+#define __NR_getrlimit		 76   /* Back compatible 2Gig limited rlimit */
+#define __NR_getrusage		 77
+#define __NR_gettimeofday_time32	 78
+#define __NR_settimeofday_time32	 79
+#define __NR_getgroups		 80
+#define __NR_setgroups		 81
+#define __NR_select		 82
+#define __NR_symlink		 83
+#define __NR_oldlstat		 84
+#define __NR_readlink		 85
+#define __NR_uselib		 86
+#define __NR_swapon		 87
+#define __NR_reboot		 88
+#define __NR_readdir		 89
+#define __NR_mmap		 90
+#define __NR_munmap		 91
+#define __NR_truncate		 92
+#define __NR_ftruncate		 93
+#define __NR_fchmod		 94
+#define __NR_fchown		 95
+#define __NR_getpriority	 96
+#define __NR_setpriority	 97
+#define __NR_profil		 98
+#define __NR_statfs		99
+#define __NR_fstatfs		100
+#define __NR_ioperm		101
+#define __NR_socketcall		102
+#define __NR_syslog		103
+#define __NR_setitimer		104
+#define __NR_getitimer		105
+#define __NR_stat		106
+#define __NR_lstat		107
+#define __NR_fstat		108
+#define __NR_olduname		109
+#define __NR_iopl		110
+#define __NR_vhangup		111
+#define __NR_idle		112
+#define __NR_vm86old		113
+#define __NR_wait4		114
+#define __NR_swapoff		115
+#define __NR_sysinfo		116
+#define __NR_ipc		117
+#define __NR_fsync		118
+#define __NR_sigreturn		119
+#define __NR_clone		120
+#define __NR_setdomainname	121
+#define __NR_uname		122
+#define __NR_modify_ldt		123
+#define __NR_adjtimex		124
+#define __NR_mprotect		125
+#define __NR_sigprocmask	126
+#define __NR_create_module	127
+#define __NR_init_module	128
+#define __NR_delete_module	129
+#define __NR_get_kernel_syms	130
+#define __NR_quotactl		131
+#define __NR_getpgid		132
+#define __NR_fchdir		133
+#define __NR_bdflush		134
+#define __NR_sysfs		135
+#define __NR_personality	136
+#define __NR_afs_syscall	137
+#define __NR_setfsuid		138
+#define __NR_setfsgid		139
+#define __NR__llseek		140
+#define __NR_getdents		141
+#define __NR__newselect		142
+#define __NR_flock		143
+#define __NR_msync		144
+#define __NR_readv		145
+#define __NR_writev		146
+#define __NR_getsid		147
+#define __NR_fdatasync		148
+#define __NR__sysctl		149
+#define __NR_mlock		150
+#define __NR_munlock		151
+#define __NR_mlockall		152
+#define __NR_munlockall		153
+#define __NR_sched_setparam		154
+#define __NR_sched_getparam		155
+#define __NR_sched_setscheduler		156
+#define __NR_sched_getscheduler		157
+#define __NR_sched_yield		158
+#define __NR_sched_get_priority_max	159
+#define __NR_sched_get_priority_min	160
+#define __NR_sched_rr_get_interval	161
+#define __NR_nanosleep		162
+#define __NR_mremap		163
+#define __NR_setresuid		164
+#define __NR_getresuid		165
+#define __NR_vm86		166
+#define __NR_query_module	167
+#define __NR_poll		168
+#define __NR_nfsservctl		169
+#define __NR_setresgid		170
+#define __NR_getresgid		171
+#define __NR_prctl              172
+#define __NR_rt_sigreturn	173
+#define __NR_rt_sigaction	174
+#define __NR_rt_sigprocmask	175
+#define __NR_rt_sigpending	176
+#define __NR_rt_sigtimedwait	177
+#define __NR_rt_sigqueueinfo	178
+#define __NR_rt_sigsuspend	179
+#define __NR_pread64		180
+#define __NR_pwrite64		181
+#define __NR_chown		182
+#define __NR_getcwd		183
+#define __NR_capget		184
+#define __NR_capset		185
+#define __NR_sigaltstack	186
+#define __NR_sendfile		187
+#define __NR_getpmsg		188
+#define __NR_putpmsg		189
+#define __NR_vfork		190
+#define __NR_ugetrlimit		191
+#define __NR_mmap2		192
+#define __NR_truncate64		193
+#define __NR_ftruncate64	194
+#define __NR_stat64		195
+#define __NR_lstat64		196
+#define __NR_fstat64		197
+#define __NR_lchown32		198
+#define __NR_getuid32		199
+#define __NR_getgid32		200
+#define __NR_geteuid32		201
+#define __NR_getegid32		202
+#define __NR_setreuid32		203
+#define __NR_setregid32		204
+#define __NR_getgroups32	205
+#define __NR_setgroups32	206
+#define __NR_fchown32		207
+#define __NR_setresuid32	208
+#define __NR_getresuid32	209
+#define __NR_setresgid32	210
+#define __NR_getresgid32	211
+#define __NR_chown32		212
+#define __NR_setuid32		213
+#define __NR_setgid32		214
+#define __NR_setfsuid32		215
+#define __NR_setfsgid32		216
+#define __NR_pivot_root		217
+#define __NR_mincore		218
+#define __NR_madvise		219
+#define __NR_getdents64		220
+#define __NR_fcntl64		221
+/* 223 is unused */
+#define __NR_gettid		224
+#define __NR_readahead		225
+#define __NR_setxattr		226
+#define __NR_lsetxattr		227
+#define __NR_fsetxattr		228
+#define __NR_getxattr		229
+#define __NR_lgetxattr		230
+#define __NR_fgetxattr		231
+#define __NR_listxattr		232
+#define __NR_llistxattr		233
+#define __NR_flistxattr		234
+#define __NR_removexattr	235
+#define __NR_lremovexattr	236
+#define __NR_fremovexattr	237
+#define __NR_tkill		238
+#define __NR_sendfile64		239
+#define __NR_futex		240
+#define __NR_sched_setaffinity	241
+#define __NR_sched_getaffinity	242
+#define __NR_set_thread_area	243
+#define __NR_get_thread_area	244
+#define __NR_io_setup		245
+#define __NR_io_destroy		246
+#define __NR_io_getevents	247
+#define __NR_io_submit		248
+#define __NR_io_cancel		249
+#define __NR_fadvise64		250
+/* 251 is available for reuse (was briefly sys_set_zone_reclaim) */
+#define __NR_exit_group		252
+#define __NR_lookup_dcookie	253
+#define __NR_epoll_create	254
+#define __NR_epoll_ctl		255
+#define __NR_epoll_wait		256
+#define __NR_remap_file_pages	257
+#define __NR_set_tid_address	258
+#define __NR_timer_create	259
+#define __NR_timer_settime32	(__NR_timer_create+1)
+#define __NR_timer_gettime32	(__NR_timer_create+2)
+#define __NR_timer_getoverrun	(__NR_timer_create+3)
+#define __NR_timer_delete	(__NR_timer_create+4)
+#define __NR_clock_settime32	(__NR_timer_create+5)
+#define __NR_clock_gettime32	(__NR_timer_create+6)
+#define __NR_clock_getres_time32	(__NR_timer_create+7)
+#define __NR_clock_nanosleep_time32	(__NR_timer_create+8)
+#define __NR_statfs64		268
+#define __NR_fstatfs64		269
+#define __NR_tgkill		270
+#define __NR_utimes		271
+#define __NR_fadvise64_64	272
+#define __NR_vserver		273
+#define __NR_mbind		274
+#define __NR_get_mempolicy	275
+#define __NR_set_mempolicy	276
+#define __NR_mq_open 		277
+#define __NR_mq_unlink		(__NR_mq_open+1)
+#define __NR_mq_timedsend	(__NR_mq_open+2)
+#define __NR_mq_timedreceive	(__NR_mq_open+3)
+#define __NR_mq_notify		(__NR_mq_open+4)
+#define __NR_mq_getsetattr	(__NR_mq_open+5)
+#define __NR_kexec_load		283
+#define __NR_waitid		284
+/* #define __NR_sys_setaltroot	285 */
+#define __NR_add_key		286
+#define __NR_request_key	287
+#define __NR_keyctl		288
+#define __NR_ioprio_set		289
+#define __NR_ioprio_get		290
+#define __NR_inotify_init	291
+#define __NR_inotify_add_watch	292
+#define __NR_inotify_rm_watch	293
+#define __NR_migrate_pages	294
+#define __NR_openat		295
+#define __NR_mkdirat		296
+#define __NR_mknodat		297
+#define __NR_fchownat		298
+#define __NR_futimesat		299
+#define __NR_fstatat64		300
+#define __NR_unlinkat		301
+#define __NR_renameat		302
+#define __NR_linkat		303
+#define __NR_symlinkat		304
+#define __NR_readlinkat		305
+#define __NR_fchmodat		306
+#define __NR_faccessat		307
+#define __NR_pselect6		308
+#define __NR_ppoll		309
+#define __NR_unshare		310
+#define __NR_set_robust_list	311
+#define __NR_get_robust_list	312
+#define __NR_splice		313
+#define __NR_sync_file_range	314
+#define __NR_tee		315
+#define __NR_vmsplice		316
+#define __NR_move_pages		317
+#define __NR_getcpu		318
+#define __NR_epoll_pwait	319
+#define __NR_utimensat		320
+#define __NR_signalfd		321
+#define __NR_timerfd_create	322
+#define __NR_eventfd		323
+#define __NR_fallocate		324
+#define __NR_timerfd_settime32	325
+#define __NR_timerfd_gettime32	326
+#define __NR_signalfd4		327
+#define __NR_eventfd2		328
+#define __NR_epoll_create1	329
+#define __NR_dup3		330
+#define __NR_pipe2		331
+#define __NR_inotify_init1	332
+#define __NR_preadv		333
+#define __NR_pwritev		334
+#define __NR_rt_tgsigqueueinfo	335
+#define __NR_perf_event_open	336
+#define __NR_recvmmsg		337
+#define __NR_fanotify_init	338
+#define __NR_fanotify_mark	339
+#define __NR_prlimit64		340
+#define __NR_name_to_handle_at	341
+#define __NR_open_by_handle_at	342
+#define __NR_clock_adjtime	343
+#define __NR_syncfs		344
+#define __NR_sendmmsg		345
+#define __NR_setns		346
+#define __NR_process_vm_readv	347
+#define __NR_process_vm_writev	348
+#define __NR_kcmp		349
+#define __NR_finit_module	350
+#define __NR_sched_setattr	351
+#define __NR_sched_getattr	352
+#define __NR_renameat2		353
+#define __NR_seccomp		354
+#define __NR_getrandom		355
+#define __NR_memfd_create	356
+#define __NR_bpf		357
+#define __NR_execveat		358
+#define __NR_socket		359
+#define __NR_socketpair		360
+#define __NR_bind		361
+#define __NR_connect		362
+#define __NR_listen		363
+#define __NR_accept4		364
+#define __NR_getsockopt		365
+#define __NR_setsockopt		366
+#define __NR_getsockname	367
+#define __NR_getpeername	368
+#define __NR_sendto		369
+#define __NR_sendmsg		370
+#define __NR_recvfrom		371
+#define __NR_recvmsg		372
+#define __NR_shutdown		373
+#define __NR_userfaultfd	374
+#define __NR_membarrier		375
+#define __NR_mlock2		376
+#define __NR_copy_file_range	377
+#define __NR_preadv2		378
+#define __NR_pwritev2		379
+#define __NR_pkey_mprotect	380
+#define __NR_pkey_alloc		381
+#define __NR_pkey_free		382
+#define __NR_statx		383
+#define __NR_arch_prctl		384
+#define __NR_io_pgetevents	385
+#define __NR_rseq		386
+#define __NR_semget		393
+#define __NR_semctl		394
+#define __NR_shmget		395
+#define __NR_shmctl		396
+#define __NR_shmat		397
+#define __NR_shmdt		398
+#define __NR_msgget		399
+#define __NR_msgsnd		400
+#define __NR_msgrcv		401
+#define __NR_msgctl		402
+#define __NR_clock_gettime64	403
+#define __NR_clock_settime64	404
+#define __NR_clock_adjtime64	405
+#define __NR_clock_getres_time64 406
+#define __NR_clock_nanosleep_time64 407
+#define __NR_timer_gettime64	408
+#define __NR_timer_settime64	409
+#define __NR_timerfd_gettime64	410
+#define __NR_timerfd_settime64	411
+#define __NR_utimensat_time64	412
+#define __NR_pselect6_time64	413
+#define __NR_ppoll_time64	414
+#define __NR_io_pgetevents_time64 416
+#define __NR_recvmmsg_time64	417
+#define __NR_mq_timedsend_time64 418
+#define __NR_mq_timedreceive_time64 419
+#define __NR_semtimedop_time64	420
+#define __NR_rt_sigtimedwait_time64 421
+#define __NR_futex_time64	422
+#define __NR_sched_rr_get_interval_time64 423
+#define __NR_pidfd_send_signal	424
+#define __NR_io_uring_setup	425
+#define __NR_io_uring_enter	426
+#define __NR_io_uring_register	427
+#define __NR_open_tree		428
+#define __NR_move_mount		429
+#define __NR_fsopen		430
+#define __NR_fsconfig		431
+#define __NR_fsmount		432
+#define __NR_fspick		433
+#define __NR_pidfd_open		434
+#define __NR_clone3		435
+#define __NR_close_range	436
+#define __NR_openat2		437
+#define __NR_pidfd_getfd	438
+#define __NR_faccessat2		439
+#define __NR_process_madvise	440
+
+#define SYS_restart_syscall      0
+#define SYS_exit		  1
+#define SYS_fork		  2
+#define SYS_read		  3
+#define SYS_write		  4
+#define SYS_open		  5
+#define SYS_close		  6
+#define SYS_waitpid		  7
+#define SYS_creat		  8
+#define SYS_link		  9
+#define SYS_unlink		 10
+#define SYS_execve		 11
+#define SYS_chdir		 12
+#define SYS_time		 13
+#define SYS_mknod		 14
+#define SYS_chmod		 15
+#define SYS_lchown		 16
+#define SYS_break		 17
+#define SYS_oldstat		 18
+#define SYS_lseek		 19
+#define SYS_getpid		 20
+#define SYS_mount		 21
+#define SYS_umount		 22
+#define SYS_setuid		 23
+#define SYS_getuid		 24
+#define SYS_stime		 25
+#define SYS_ptrace		 26
+#define SYS_alarm		 27
+#define SYS_oldfstat		 28
+#define SYS_pause		 29
+#define SYS_utime		 30
+#define SYS_stty		 31
+#define SYS_gtty		 32
+#define SYS_access		 33
+#define SYS_nice		 34
+#define SYS_ftime		 35
+#define SYS_sync		 36
+#define SYS_kill		 37
+#define SYS_rename		 38
+#define SYS_mkdir		 39
+#define SYS_rmdir		 40
+#define SYS_dup		 41
+#define SYS_pipe		 42
+#define SYS_times		 43
+#define SYS_prof		 44
+#define SYS_brk		 45
+#define SYS_setgid		 46
+#define SYS_getgid		 47
+#define SYS_signal		 48
+#define SYS_geteuid		 49
+#define SYS_getegid		 50
+#define SYS_acct		 51
+#define SYS_umount2		 52
+#define SYS_lock		 53
+#define SYS_ioctl		 54
+#define SYS_fcntl		 55
+#define SYS_mpx		 56
+#define SYS_setpgid		 57
+#define SYS_ulimit		 58
+#define SYS_oldolduname	 59
+#define SYS_umask		 60
+#define SYS_chroot		 61
+#define SYS_ustat		 62
+#define SYS_dup2		 63
+#define SYS_getppid		 64
+#define SYS_getpgrp		 65
+#define SYS_setsid		 66
+#define SYS_sigaction		 67
+#define SYS_sgetmask		 68
+#define SYS_ssetmask		 69
+#define SYS_setreuid		 70
+#define SYS_setregid		 71
+#define SYS_sigsuspend		 72
+#define SYS_sigpending		 73
+#define SYS_sethostname	 74
+#define SYS_setrlimit		 75
+#define SYS_getrlimit		 76   /* Back compatible 2Gig limited rlimit */
+#define SYS_getrusage		 77
+#define SYS_gettimeofday_time32	 78
+#define SYS_settimeofday_time32	 79
+#define SYS_getgroups		 80
+#define SYS_setgroups		 81
+#define SYS_select		 82
+#define SYS_symlink		 83
+#define SYS_oldlstat		 84
+#define SYS_readlink		 85
+#define SYS_uselib		 86
+#define SYS_swapon		 87
+#define SYS_reboot		 88
+#define SYS_readdir		 89
+#define SYS_mmap		 90
+#define SYS_munmap		 91
+#define SYS_truncate		 92
+#define SYS_ftruncate		 93
+#define SYS_fchmod		 94
+#define SYS_fchown		 95
+#define SYS_getpriority	 96
+#define SYS_setpriority	 97
+#define SYS_profil		 98
+#define SYS_statfs		99
+#define SYS_fstatfs		100
+#define SYS_ioperm		101
+#define SYS_socketcall		102
+#define SYS_syslog		103
+#define SYS_setitimer		104
+#define SYS_getitimer		105
+#define SYS_stat		106
+#define SYS_lstat		107
+#define SYS_fstat		108
+#define SYS_olduname		109
+#define SYS_iopl		110
+#define SYS_vhangup		111
+#define SYS_idle		112
+#define SYS_vm86old		113
+#define SYS_wait4		114
+#define SYS_swapoff		115
+#define SYS_sysinfo		116
+#define SYS_ipc		117
+#define SYS_fsync		118
+#define SYS_sigreturn		119
+#define SYS_clone		120
+#define SYS_setdomainname	121
+#define SYS_uname		122
+#define SYS_modify_ldt		123
+#define SYS_adjtimex		124
+#define SYS_mprotect		125
+#define SYS_sigprocmask	126
+#define SYS_create_module	127
+#define SYS_init_module	128
+#define SYS_delete_module	129
+#define SYS_get_kernel_syms	130
+#define SYS_quotactl		131
+#define SYS_getpgid		132
+#define SYS_fchdir		133
+#define SYS_bdflush		134
+#define SYS_sysfs		135
+#define SYS_personality	136
+#define SYS_afs_syscall	137
+#define SYS_setfsuid		138
+#define SYS_setfsgid		139
+#define SYS__llseek		140
+#define SYS_getdents		141
+#define SYS__newselect		142
+#define SYS_flock		143
+#define SYS_msync		144
+#define SYS_readv		145
+#define SYS_writev		146
+#define SYS_getsid		147
+#define SYS_fdatasync		148
+#define SYS__sysctl		149
+#define SYS_mlock		150
+#define SYS_munlock		151
+#define SYS_mlockall		152
+#define SYS_munlockall		153
+#define SYS_sched_setparam		154
+#define SYS_sched_getparam		155
+#define SYS_sched_setscheduler		156
+#define SYS_sched_getscheduler		157
+#define SYS_sched_yield		158
+#define SYS_sched_get_priority_max	159
+#define SYS_sched_get_priority_min	160
+#define SYS_sched_rr_get_interval	161
+#define SYS_nanosleep		162
+#define SYS_mremap		163
+#define SYS_setresuid		164
+#define SYS_getresuid		165
+#define SYS_vm86		166
+#define SYS_query_module	167
+#define SYS_poll		168
+#define SYS_nfsservctl		169
+#define SYS_setresgid		170
+#define SYS_getresgid		171
+#define SYS_prctl              172
+#define SYS_rt_sigreturn	173
+#define SYS_rt_sigaction	174
+#define SYS_rt_sigprocmask	175
+#define SYS_rt_sigpending	176
+#define SYS_rt_sigtimedwait	177
+#define SYS_rt_sigqueueinfo	178
+#define SYS_rt_sigsuspend	179
+#define SYS_pread64		180
+#define SYS_pwrite64		181
+#define SYS_chown		182
+#define SYS_getcwd		183
+#define SYS_capget		184
+#define SYS_capset		185
+#define SYS_sigaltstack	186
+#define SYS_sendfile		187
+#define SYS_getpmsg		188
+#define SYS_putpmsg		189
+#define SYS_vfork		190
+#define SYS_ugetrlimit		191
+#define SYS_mmap2		192
+#define SYS_truncate64		193
+#define SYS_ftruncate64	194
+#define SYS_stat64		195
+#define SYS_lstat64		196
+#define SYS_fstat64		197
+#define SYS_lchown32		198
+#define SYS_getuid32		199
+#define SYS_getgid32		200
+#define SYS_geteuid32		201
+#define SYS_getegid32		202
+#define SYS_setreuid32		203
+#define SYS_setregid32		204
+#define SYS_getgroups32	205
+#define SYS_setgroups32	206
+#define SYS_fchown32		207
+#define SYS_setresuid32	208
+#define SYS_getresuid32	209
+#define SYS_setresgid32	210
+#define SYS_getresgid32	211
+#define SYS_chown32		212
+#define SYS_setuid32		213
+#define SYS_setgid32		214
+#define SYS_setfsuid32		215
+#define SYS_setfsgid32		216
+#define SYS_pivot_root		217
+#define SYS_mincore		218
+#define SYS_madvise		219
+#define SYS_getdents64		220
+#define SYS_fcntl64		221
+#define SYS_gettid		224
+#define SYS_readahead		225
+#define SYS_setxattr		226
+#define SYS_lsetxattr		227
+#define SYS_fsetxattr		228
+#define SYS_getxattr		229
+#define SYS_lgetxattr		230
+#define SYS_fgetxattr		231
+#define SYS_listxattr		232
+#define SYS_llistxattr		233
+#define SYS_flistxattr		234
+#define SYS_removexattr	235
+#define SYS_lremovexattr	236
+#define SYS_fremovexattr	237
+#define SYS_tkill		238
+#define SYS_sendfile64		239
+#define SYS_futex		240
+#define SYS_sched_setaffinity	241
+#define SYS_sched_getaffinity	242
+#define SYS_set_thread_area	243
+#define SYS_get_thread_area	244
+#define SYS_io_setup		245
+#define SYS_io_destroy		246
+#define SYS_io_getevents	247
+#define SYS_io_submit		248
+#define SYS_io_cancel		249
+#define SYS_fadvise64		250
+#define SYS_exit_group		252
+#define SYS_lookup_dcookie	253
+#define SYS_epoll_create	254
+#define SYS_epoll_ctl		255
+#define SYS_epoll_wait		256
+#define SYS_remap_file_pages	257
+#define SYS_set_tid_address	258
+#define SYS_timer_create	259
+#define SYS_timer_settime32	(__NR_timer_create+1)
+#define SYS_timer_gettime32	(__NR_timer_create+2)
+#define SYS_timer_getoverrun	(__NR_timer_create+3)
+#define SYS_timer_delete	(__NR_timer_create+4)
+#define SYS_clock_settime32	(__NR_timer_create+5)
+#define SYS_clock_gettime32	(__NR_timer_create+6)
+#define SYS_clock_getres_time32	(__NR_timer_create+7)
+#define SYS_clock_nanosleep_time32	(__NR_timer_create+8)
+#define SYS_statfs64		268
+#define SYS_fstatfs64		269
+#define SYS_tgkill		270
+#define SYS_utimes		271
+#define SYS_fadvise64_64	272
+#define SYS_vserver		273
+#define SYS_mbind		274
+#define SYS_get_mempolicy	275
+#define SYS_set_mempolicy	276
+#define SYS_mq_open 		277
+#define SYS_mq_unlink		(__NR_mq_open+1)
+#define SYS_mq_timedsend	(__NR_mq_open+2)
+#define SYS_mq_timedreceive	(__NR_mq_open+3)
+#define SYS_mq_notify		(__NR_mq_open+4)
+#define SYS_mq_getsetattr	(__NR_mq_open+5)
+#define SYS_kexec_load		283
+#define SYS_waitid		284
+/* #define SYS_sys_setaltroot	285 */
+#define SYS_add_key		286
+#define SYS_request_key	287
+#define SYS_keyctl		288
+#define SYS_ioprio_set		289
+#define SYS_ioprio_get		290
+#define SYS_inotify_init	291
+#define SYS_inotify_add_watch	292
+#define SYS_inotify_rm_watch	293
+#define SYS_migrate_pages	294
+#define SYS_openat		295
+#define SYS_mkdirat		296
+#define SYS_mknodat		297
+#define SYS_fchownat		298
+#define SYS_futimesat		299
+#define SYS_fstatat64		300
+#define SYS_unlinkat		301
+#define SYS_renameat		302
+#define SYS_linkat		303
+#define SYS_symlinkat		304
+#define SYS_readlinkat		305
+#define SYS_fchmodat		306
+#define SYS_faccessat		307
+#define SYS_pselect6		308
+#define SYS_ppoll		309
+#define SYS_unshare		310
+#define SYS_set_robust_list	311
+#define SYS_get_robust_list	312
+#define SYS_splice		313
+#define SYS_sync_file_range	314
+#define SYS_tee		315
+#define SYS_vmsplice		316
+#define SYS_move_pages		317
+#define SYS_getcpu		318
+#define SYS_epoll_pwait	319
+#define SYS_utimensat		320
+#define SYS_signalfd		321
+#define SYS_timerfd_create	322
+#define SYS_eventfd		323
+#define SYS_fallocate		324
+#define SYS_timerfd_settime32	325
+#define SYS_timerfd_gettime32	326
+#define SYS_signalfd4		327
+#define SYS_eventfd2		328
+#define SYS_epoll_create1	329
+#define SYS_dup3		330
+#define SYS_pipe2		331
+#define SYS_inotify_init1	332
+#define SYS_preadv		333
+#define SYS_pwritev		334
+#define SYS_rt_tgsigqueueinfo	335
+#define SYS_perf_event_open	336
+#define SYS_recvmmsg		337
+#define SYS_fanotify_init	338
+#define SYS_fanotify_mark	339
+#define SYS_prlimit64		340
+#define SYS_name_to_handle_at	341
+#define SYS_open_by_handle_at	342
+#define SYS_clock_adjtime	343
+#define SYS_syncfs		344
+#define SYS_sendmmsg		345
+#define SYS_setns		346
+#define SYS_process_vm_readv	347
+#define SYS_process_vm_writev	348
+#define SYS_kcmp		349
+#define SYS_finit_module	350
+#define SYS_sched_setattr	351
+#define SYS_sched_getattr	352
+#define SYS_renameat2		353
+#define SYS_seccomp		354
+#define SYS_getrandom		355
+#define SYS_memfd_create	356
+#define SYS_bpf		357
+#define SYS_execveat		358
+#define SYS_socket		359
+#define SYS_socketpair		360
+#define SYS_bind		361
+#define SYS_connect		362
+#define SYS_listen		363
+#define SYS_accept4		364
+#define SYS_getsockopt		365
+#define SYS_setsockopt		366
+#define SYS_getsockname	367
+#define SYS_getpeername	368
+#define SYS_sendto		369
+#define SYS_sendmsg		370
+#define SYS_recvfrom		371
+#define SYS_recvmsg		372
+#define SYS_shutdown		373
+#define SYS_userfaultfd	374
+#define SYS_membarrier		375
+#define SYS_mlock2		376
+#define SYS_copy_file_range	377
+#define SYS_preadv2		378
+#define SYS_pwritev2		379
+#define SYS_pkey_mprotect	380
+#define SYS_pkey_alloc		381
+#define SYS_pkey_free		382
+#define SYS_statx		383
+#define SYS_arch_prctl		384
+#define SYS_io_pgetevents	385
+#define SYS_rseq		386
+#define SYS_semget		393
+#define SYS_semctl		394
+#define SYS_shmget		395
+#define SYS_shmctl		396
+#define SYS_shmat		397
+#define SYS_shmdt		398
+#define SYS_msgget		399
+#define SYS_msgsnd		400
+#define SYS_msgrcv		401
+#define SYS_msgctl		402
+#define SYS_clock_gettime64	403
+#define SYS_clock_settime64	404
+#define SYS_clock_adjtime64	405
+#define SYS_clock_getres_time64 406
+#define SYS_clock_nanosleep_time64 407
+#define SYS_timer_gettime64	408
+#define SYS_timer_settime64	409
+#define SYS_timerfd_gettime64	410
+#define SYS_timerfd_settime64	411
+#define SYS_utimensat_time64	412
+#define SYS_pselect6_time64	413
+#define SYS_ppoll_time64	414
+#define SYS_io_pgetevents_time64 416
+#define SYS_recvmmsg_time64	417
+#define SYS_mq_timedsend_time64 418
+#define SYS_mq_timedreceive_time64 419
+#define SYS_semtimedop_time64	420
+#define SYS_rt_sigtimedwait_time64 421
+#define SYS_futex_time64	422
+#define SYS_sched_rr_get_interval_time64 423
+#define SYS_pidfd_send_signal	424
+#define SYS_io_uring_setup	425
+#define SYS_io_uring_enter	426
+#define SYS_io_uring_register	427
+#define SYS_open_tree		428
+#define SYS_move_mount		429
+#define SYS_fsopen		430
+#define SYS_fsconfig		431
+#define SYS_fsmount		432
+#define SYS_fspick		433
+#define SYS_pidfd_open		434
+#define SYS_clone3		435
+#define SYS_close_range	436
+#define SYS_openat2		437
+#define SYS_pidfd_getfd	438
+#define SYS_faccessat2		439
+#define SYS_process_madvise	440
diff --git a/i686-linux-musl/include/bits/syscall.h.in b/i686-linux-musl/include/bits/syscall.h.in
new file mode 100644
index 0000000..5d1c4d7
--- /dev/null
+++ b/i686-linux-musl/include/bits/syscall.h.in
@@ -0,0 +1,434 @@
+#define __NR_restart_syscall      0
+#define __NR_exit		  1
+#define __NR_fork		  2
+#define __NR_read		  3
+#define __NR_write		  4
+#define __NR_open		  5
+#define __NR_close		  6
+#define __NR_waitpid		  7
+#define __NR_creat		  8
+#define __NR_link		  9
+#define __NR_unlink		 10
+#define __NR_execve		 11
+#define __NR_chdir		 12
+#define __NR_time		 13
+#define __NR_mknod		 14
+#define __NR_chmod		 15
+#define __NR_lchown		 16
+#define __NR_break		 17
+#define __NR_oldstat		 18
+#define __NR_lseek		 19
+#define __NR_getpid		 20
+#define __NR_mount		 21
+#define __NR_umount		 22
+#define __NR_setuid		 23
+#define __NR_getuid		 24
+#define __NR_stime		 25
+#define __NR_ptrace		 26
+#define __NR_alarm		 27
+#define __NR_oldfstat		 28
+#define __NR_pause		 29
+#define __NR_utime		 30
+#define __NR_stty		 31
+#define __NR_gtty		 32
+#define __NR_access		 33
+#define __NR_nice		 34
+#define __NR_ftime		 35
+#define __NR_sync		 36
+#define __NR_kill		 37
+#define __NR_rename		 38
+#define __NR_mkdir		 39
+#define __NR_rmdir		 40
+#define __NR_dup		 41
+#define __NR_pipe		 42
+#define __NR_times		 43
+#define __NR_prof		 44
+#define __NR_brk		 45
+#define __NR_setgid		 46
+#define __NR_getgid		 47
+#define __NR_signal		 48
+#define __NR_geteuid		 49
+#define __NR_getegid		 50
+#define __NR_acct		 51
+#define __NR_umount2		 52
+#define __NR_lock		 53
+#define __NR_ioctl		 54
+#define __NR_fcntl		 55
+#define __NR_mpx		 56
+#define __NR_setpgid		 57
+#define __NR_ulimit		 58
+#define __NR_oldolduname	 59
+#define __NR_umask		 60
+#define __NR_chroot		 61
+#define __NR_ustat		 62
+#define __NR_dup2		 63
+#define __NR_getppid		 64
+#define __NR_getpgrp		 65
+#define __NR_setsid		 66
+#define __NR_sigaction		 67
+#define __NR_sgetmask		 68
+#define __NR_ssetmask		 69
+#define __NR_setreuid		 70
+#define __NR_setregid		 71
+#define __NR_sigsuspend		 72
+#define __NR_sigpending		 73
+#define __NR_sethostname	 74
+#define __NR_setrlimit		 75
+#define __NR_getrlimit		 76   /* Back compatible 2Gig limited rlimit */
+#define __NR_getrusage		 77
+#define __NR_gettimeofday_time32	 78
+#define __NR_settimeofday_time32	 79
+#define __NR_getgroups		 80
+#define __NR_setgroups		 81
+#define __NR_select		 82
+#define __NR_symlink		 83
+#define __NR_oldlstat		 84
+#define __NR_readlink		 85
+#define __NR_uselib		 86
+#define __NR_swapon		 87
+#define __NR_reboot		 88
+#define __NR_readdir		 89
+#define __NR_mmap		 90
+#define __NR_munmap		 91
+#define __NR_truncate		 92
+#define __NR_ftruncate		 93
+#define __NR_fchmod		 94
+#define __NR_fchown		 95
+#define __NR_getpriority	 96
+#define __NR_setpriority	 97
+#define __NR_profil		 98
+#define __NR_statfs		99
+#define __NR_fstatfs		100
+#define __NR_ioperm		101
+#define __NR_socketcall		102
+#define __NR_syslog		103
+#define __NR_setitimer		104
+#define __NR_getitimer		105
+#define __NR_stat		106
+#define __NR_lstat		107
+#define __NR_fstat		108
+#define __NR_olduname		109
+#define __NR_iopl		110
+#define __NR_vhangup		111
+#define __NR_idle		112
+#define __NR_vm86old		113
+#define __NR_wait4		114
+#define __NR_swapoff		115
+#define __NR_sysinfo		116
+#define __NR_ipc		117
+#define __NR_fsync		118
+#define __NR_sigreturn		119
+#define __NR_clone		120
+#define __NR_setdomainname	121
+#define __NR_uname		122
+#define __NR_modify_ldt		123
+#define __NR_adjtimex		124
+#define __NR_mprotect		125
+#define __NR_sigprocmask	126
+#define __NR_create_module	127
+#define __NR_init_module	128
+#define __NR_delete_module	129
+#define __NR_get_kernel_syms	130
+#define __NR_quotactl		131
+#define __NR_getpgid		132
+#define __NR_fchdir		133
+#define __NR_bdflush		134
+#define __NR_sysfs		135
+#define __NR_personality	136
+#define __NR_afs_syscall	137
+#define __NR_setfsuid		138
+#define __NR_setfsgid		139
+#define __NR__llseek		140
+#define __NR_getdents		141
+#define __NR__newselect		142
+#define __NR_flock		143
+#define __NR_msync		144
+#define __NR_readv		145
+#define __NR_writev		146
+#define __NR_getsid		147
+#define __NR_fdatasync		148
+#define __NR__sysctl		149
+#define __NR_mlock		150
+#define __NR_munlock		151
+#define __NR_mlockall		152
+#define __NR_munlockall		153
+#define __NR_sched_setparam		154
+#define __NR_sched_getparam		155
+#define __NR_sched_setscheduler		156
+#define __NR_sched_getscheduler		157
+#define __NR_sched_yield		158
+#define __NR_sched_get_priority_max	159
+#define __NR_sched_get_priority_min	160
+#define __NR_sched_rr_get_interval	161
+#define __NR_nanosleep		162
+#define __NR_mremap		163
+#define __NR_setresuid		164
+#define __NR_getresuid		165
+#define __NR_vm86		166
+#define __NR_query_module	167
+#define __NR_poll		168
+#define __NR_nfsservctl		169
+#define __NR_setresgid		170
+#define __NR_getresgid		171
+#define __NR_prctl              172
+#define __NR_rt_sigreturn	173
+#define __NR_rt_sigaction	174
+#define __NR_rt_sigprocmask	175
+#define __NR_rt_sigpending	176
+#define __NR_rt_sigtimedwait	177
+#define __NR_rt_sigqueueinfo	178
+#define __NR_rt_sigsuspend	179
+#define __NR_pread64		180
+#define __NR_pwrite64		181
+#define __NR_chown		182
+#define __NR_getcwd		183
+#define __NR_capget		184
+#define __NR_capset		185
+#define __NR_sigaltstack	186
+#define __NR_sendfile		187
+#define __NR_getpmsg		188
+#define __NR_putpmsg		189
+#define __NR_vfork		190
+#define __NR_ugetrlimit		191
+#define __NR_mmap2		192
+#define __NR_truncate64		193
+#define __NR_ftruncate64	194
+#define __NR_stat64		195
+#define __NR_lstat64		196
+#define __NR_fstat64		197
+#define __NR_lchown32		198
+#define __NR_getuid32		199
+#define __NR_getgid32		200
+#define __NR_geteuid32		201
+#define __NR_getegid32		202
+#define __NR_setreuid32		203
+#define __NR_setregid32		204
+#define __NR_getgroups32	205
+#define __NR_setgroups32	206
+#define __NR_fchown32		207
+#define __NR_setresuid32	208
+#define __NR_getresuid32	209
+#define __NR_setresgid32	210
+#define __NR_getresgid32	211
+#define __NR_chown32		212
+#define __NR_setuid32		213
+#define __NR_setgid32		214
+#define __NR_setfsuid32		215
+#define __NR_setfsgid32		216
+#define __NR_pivot_root		217
+#define __NR_mincore		218
+#define __NR_madvise		219
+#define __NR_getdents64		220
+#define __NR_fcntl64		221
+/* 223 is unused */
+#define __NR_gettid		224
+#define __NR_readahead		225
+#define __NR_setxattr		226
+#define __NR_lsetxattr		227
+#define __NR_fsetxattr		228
+#define __NR_getxattr		229
+#define __NR_lgetxattr		230
+#define __NR_fgetxattr		231
+#define __NR_listxattr		232
+#define __NR_llistxattr		233
+#define __NR_flistxattr		234
+#define __NR_removexattr	235
+#define __NR_lremovexattr	236
+#define __NR_fremovexattr	237
+#define __NR_tkill		238
+#define __NR_sendfile64		239
+#define __NR_futex		240
+#define __NR_sched_setaffinity	241
+#define __NR_sched_getaffinity	242
+#define __NR_set_thread_area	243
+#define __NR_get_thread_area	244
+#define __NR_io_setup		245
+#define __NR_io_destroy		246
+#define __NR_io_getevents	247
+#define __NR_io_submit		248
+#define __NR_io_cancel		249
+#define __NR_fadvise64		250
+/* 251 is available for reuse (was briefly sys_set_zone_reclaim) */
+#define __NR_exit_group		252
+#define __NR_lookup_dcookie	253
+#define __NR_epoll_create	254
+#define __NR_epoll_ctl		255
+#define __NR_epoll_wait		256
+#define __NR_remap_file_pages	257
+#define __NR_set_tid_address	258
+#define __NR_timer_create	259
+#define __NR_timer_settime32	(__NR_timer_create+1)
+#define __NR_timer_gettime32	(__NR_timer_create+2)
+#define __NR_timer_getoverrun	(__NR_timer_create+3)
+#define __NR_timer_delete	(__NR_timer_create+4)
+#define __NR_clock_settime32	(__NR_timer_create+5)
+#define __NR_clock_gettime32	(__NR_timer_create+6)
+#define __NR_clock_getres_time32	(__NR_timer_create+7)
+#define __NR_clock_nanosleep_time32	(__NR_timer_create+8)
+#define __NR_statfs64		268
+#define __NR_fstatfs64		269
+#define __NR_tgkill		270
+#define __NR_utimes		271
+#define __NR_fadvise64_64	272
+#define __NR_vserver		273
+#define __NR_mbind		274
+#define __NR_get_mempolicy	275
+#define __NR_set_mempolicy	276
+#define __NR_mq_open 		277
+#define __NR_mq_unlink		(__NR_mq_open+1)
+#define __NR_mq_timedsend	(__NR_mq_open+2)
+#define __NR_mq_timedreceive	(__NR_mq_open+3)
+#define __NR_mq_notify		(__NR_mq_open+4)
+#define __NR_mq_getsetattr	(__NR_mq_open+5)
+#define __NR_kexec_load		283
+#define __NR_waitid		284
+/* #define __NR_sys_setaltroot	285 */
+#define __NR_add_key		286
+#define __NR_request_key	287
+#define __NR_keyctl		288
+#define __NR_ioprio_set		289
+#define __NR_ioprio_get		290
+#define __NR_inotify_init	291
+#define __NR_inotify_add_watch	292
+#define __NR_inotify_rm_watch	293
+#define __NR_migrate_pages	294
+#define __NR_openat		295
+#define __NR_mkdirat		296
+#define __NR_mknodat		297
+#define __NR_fchownat		298
+#define __NR_futimesat		299
+#define __NR_fstatat64		300
+#define __NR_unlinkat		301
+#define __NR_renameat		302
+#define __NR_linkat		303
+#define __NR_symlinkat		304
+#define __NR_readlinkat		305
+#define __NR_fchmodat		306
+#define __NR_faccessat		307
+#define __NR_pselect6		308
+#define __NR_ppoll		309
+#define __NR_unshare		310
+#define __NR_set_robust_list	311
+#define __NR_get_robust_list	312
+#define __NR_splice		313
+#define __NR_sync_file_range	314
+#define __NR_tee		315
+#define __NR_vmsplice		316
+#define __NR_move_pages		317
+#define __NR_getcpu		318
+#define __NR_epoll_pwait	319
+#define __NR_utimensat		320
+#define __NR_signalfd		321
+#define __NR_timerfd_create	322
+#define __NR_eventfd		323
+#define __NR_fallocate		324
+#define __NR_timerfd_settime32	325
+#define __NR_timerfd_gettime32	326
+#define __NR_signalfd4		327
+#define __NR_eventfd2		328
+#define __NR_epoll_create1	329
+#define __NR_dup3		330
+#define __NR_pipe2		331
+#define __NR_inotify_init1	332
+#define __NR_preadv		333
+#define __NR_pwritev		334
+#define __NR_rt_tgsigqueueinfo	335
+#define __NR_perf_event_open	336
+#define __NR_recvmmsg		337
+#define __NR_fanotify_init	338
+#define __NR_fanotify_mark	339
+#define __NR_prlimit64		340
+#define __NR_name_to_handle_at	341
+#define __NR_open_by_handle_at	342
+#define __NR_clock_adjtime	343
+#define __NR_syncfs		344
+#define __NR_sendmmsg		345
+#define __NR_setns		346
+#define __NR_process_vm_readv	347
+#define __NR_process_vm_writev	348
+#define __NR_kcmp		349
+#define __NR_finit_module	350
+#define __NR_sched_setattr	351
+#define __NR_sched_getattr	352
+#define __NR_renameat2		353
+#define __NR_seccomp		354
+#define __NR_getrandom		355
+#define __NR_memfd_create	356
+#define __NR_bpf		357
+#define __NR_execveat		358
+#define __NR_socket		359
+#define __NR_socketpair		360
+#define __NR_bind		361
+#define __NR_connect		362
+#define __NR_listen		363
+#define __NR_accept4		364
+#define __NR_getsockopt		365
+#define __NR_setsockopt		366
+#define __NR_getsockname	367
+#define __NR_getpeername	368
+#define __NR_sendto		369
+#define __NR_sendmsg		370
+#define __NR_recvfrom		371
+#define __NR_recvmsg		372
+#define __NR_shutdown		373
+#define __NR_userfaultfd	374
+#define __NR_membarrier		375
+#define __NR_mlock2		376
+#define __NR_copy_file_range	377
+#define __NR_preadv2		378
+#define __NR_pwritev2		379
+#define __NR_pkey_mprotect	380
+#define __NR_pkey_alloc		381
+#define __NR_pkey_free		382
+#define __NR_statx		383
+#define __NR_arch_prctl		384
+#define __NR_io_pgetevents	385
+#define __NR_rseq		386
+#define __NR_semget		393
+#define __NR_semctl		394
+#define __NR_shmget		395
+#define __NR_shmctl		396
+#define __NR_shmat		397
+#define __NR_shmdt		398
+#define __NR_msgget		399
+#define __NR_msgsnd		400
+#define __NR_msgrcv		401
+#define __NR_msgctl		402
+#define __NR_clock_gettime64	403
+#define __NR_clock_settime64	404
+#define __NR_clock_adjtime64	405
+#define __NR_clock_getres_time64 406
+#define __NR_clock_nanosleep_time64 407
+#define __NR_timer_gettime64	408
+#define __NR_timer_settime64	409
+#define __NR_timerfd_gettime64	410
+#define __NR_timerfd_settime64	411
+#define __NR_utimensat_time64	412
+#define __NR_pselect6_time64	413
+#define __NR_ppoll_time64	414
+#define __NR_io_pgetevents_time64 416
+#define __NR_recvmmsg_time64	417
+#define __NR_mq_timedsend_time64 418
+#define __NR_mq_timedreceive_time64 419
+#define __NR_semtimedop_time64	420
+#define __NR_rt_sigtimedwait_time64 421
+#define __NR_futex_time64	422
+#define __NR_sched_rr_get_interval_time64 423
+#define __NR_pidfd_send_signal	424
+#define __NR_io_uring_setup	425
+#define __NR_io_uring_enter	426
+#define __NR_io_uring_register	427
+#define __NR_open_tree		428
+#define __NR_move_mount		429
+#define __NR_fsopen		430
+#define __NR_fsconfig		431
+#define __NR_fsmount		432
+#define __NR_fspick		433
+#define __NR_pidfd_open		434
+#define __NR_clone3		435
+#define __NR_close_range	436
+#define __NR_openat2		437
+#define __NR_pidfd_getfd	438
+#define __NR_faccessat2		439
+#define __NR_process_madvise	440
+
diff --git a/i686-linux-musl/include/bits/termios.h b/i686-linux-musl/include/bits/termios.h
new file mode 100644
index 0000000..124f71d
--- /dev/null
+++ b/i686-linux-musl/include/bits/termios.h
@@ -0,0 +1,166 @@
+struct termios {
+	tcflag_t c_iflag;
+	tcflag_t c_oflag;
+	tcflag_t c_cflag;
+	tcflag_t c_lflag;
+	cc_t c_line;
+	cc_t c_cc[NCCS];
+	speed_t __c_ispeed;
+	speed_t __c_ospeed;
+};
+
+#define VINTR     0
+#define VQUIT     1
+#define VERASE    2
+#define VKILL     3
+#define VEOF      4
+#define VTIME     5
+#define VMIN      6
+#define VSWTC     7
+#define VSTART    8
+#define VSTOP     9
+#define VSUSP    10
+#define VEOL     11
+#define VREPRINT 12
+#define VDISCARD 13
+#define VWERASE  14
+#define VLNEXT   15
+#define VEOL2    16
+
+#define IGNBRK  0000001
+#define BRKINT  0000002
+#define IGNPAR  0000004
+#define PARMRK  0000010
+#define INPCK   0000020
+#define ISTRIP  0000040
+#define INLCR   0000100
+#define IGNCR   0000200
+#define ICRNL   0000400
+#define IUCLC   0001000
+#define IXON    0002000
+#define IXANY   0004000
+#define IXOFF   0010000
+#define IMAXBEL 0020000
+#define IUTF8   0040000
+
+#define OPOST  0000001
+#define OLCUC  0000002
+#define ONLCR  0000004
+#define OCRNL  0000010
+#define ONOCR  0000020
+#define ONLRET 0000040
+#define OFILL  0000100
+#define OFDEL  0000200
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_XOPEN_SOURCE)
+#define NLDLY  0000400
+#define NL0    0000000
+#define NL1    0000400
+#define CRDLY  0003000
+#define CR0    0000000
+#define CR1    0001000
+#define CR2    0002000
+#define CR3    0003000
+#define TABDLY 0014000
+#define TAB0   0000000
+#define TAB1   0004000
+#define TAB2   0010000
+#define TAB3   0014000
+#define BSDLY  0020000
+#define BS0    0000000
+#define BS1    0020000
+#define FFDLY  0100000
+#define FF0    0000000
+#define FF1    0100000
+#endif
+
+#define VTDLY  0040000
+#define VT0    0000000
+#define VT1    0040000
+
+#define B0       0000000
+#define B50      0000001
+#define B75      0000002
+#define B110     0000003
+#define B134     0000004
+#define B150     0000005
+#define B200     0000006
+#define B300     0000007
+#define B600     0000010
+#define B1200    0000011
+#define B1800    0000012
+#define B2400    0000013
+#define B4800    0000014
+#define B9600    0000015
+#define B19200   0000016
+#define B38400   0000017
+
+#define B57600   0010001
+#define B115200  0010002
+#define B230400  0010003
+#define B460800  0010004
+#define B500000  0010005
+#define B576000  0010006
+#define B921600  0010007
+#define B1000000 0010010
+#define B1152000 0010011
+#define B1500000 0010012
+#define B2000000 0010013
+#define B2500000 0010014
+#define B3000000 0010015
+#define B3500000 0010016
+#define B4000000 0010017
+
+#define CSIZE  0000060
+#define CS5    0000000
+#define CS6    0000020
+#define CS7    0000040
+#define CS8    0000060
+#define CSTOPB 0000100
+#define CREAD  0000200
+#define PARENB 0000400
+#define PARODD 0001000
+#define HUPCL  0002000
+#define CLOCAL 0004000
+
+#define ISIG   0000001
+#define ICANON 0000002
+#define ECHO   0000010
+#define ECHOE  0000020
+#define ECHOK  0000040
+#define ECHONL 0000100
+#define NOFLSH 0000200
+#define TOSTOP 0000400
+#define IEXTEN 0100000
+
+#define TCOOFF 0
+#define TCOON  1
+#define TCIOFF 2
+#define TCION  3
+
+#define TCIFLUSH  0
+#define TCOFLUSH  1
+#define TCIOFLUSH 2
+
+#define TCSANOW   0
+#define TCSADRAIN 1
+#define TCSAFLUSH 2
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define EXTA    0000016
+#define EXTB    0000017
+#define CBAUD   0010017
+#define CBAUDEX 0010000
+#define CIBAUD  002003600000
+#define CMSPAR  010000000000
+#define CRTSCTS 020000000000
+
+#define XCASE   0000004
+#define ECHOCTL 0001000
+#define ECHOPRT 0002000
+#define ECHOKE  0004000
+#define FLUSHO  0010000
+#define PENDIN  0040000
+#define EXTPROC 0200000
+
+#define XTABS  0014000
+#endif
diff --git a/i686-linux-musl/include/bits/user.h b/i686-linux-musl/include/bits/user.h
new file mode 100644
index 0000000..33fea98
--- /dev/null
+++ b/i686-linux-musl/include/bits/user.h
@@ -0,0 +1,44 @@
+#undef __WORDSIZE
+#define __WORDSIZE 32
+
+typedef struct user_fpregs_struct {
+	long cwd, swd, twd, fip, fcs, foo, fos, st_space[20];
+} elf_fpregset_t;
+
+typedef struct user_fpxregs_struct {
+	unsigned short cwd, swd, twd, fop;
+	long fip, fcs, foo, fos, mxcsr, reserved;
+	long st_space[32], xmm_space[32], padding[56];
+} elf_fpxregset_t;
+
+struct user_regs_struct {
+	long ebx, ecx, edx, esi, edi, ebp, eax, xds, xes, xfs, xgs;
+	long orig_eax, eip, xcs, eflags, esp, xss;
+};
+
+#define ELF_NGREG 17
+typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG];
+
+struct user {
+	struct user_regs_struct		regs;
+	int				u_fpvalid;
+	struct user_fpregs_struct	i387;
+	unsigned long			u_tsize;
+	unsigned long			u_dsize;
+	unsigned long			u_ssize;
+	unsigned long			start_code;
+	unsigned long			start_stack;
+	long				signal;
+	int				reserved;
+	struct user_regs_struct		*u_ar0;
+	struct user_fpregs_struct	*u_fpstate;
+	unsigned long			magic;
+	char				u_comm[32];
+	int				u_debugreg[8];
+};
+
+#define PAGE_MASK		(~(PAGESIZE-1))
+#define NBPG			PAGESIZE
+#define UPAGES			1
+#define HOST_TEXT_START_ADDR	(u.start_code)
+#define HOST_STACK_END_ADDR	(u.start_stack + u.u_ssize * NBPG)
diff --git a/i686-linux-musl/include/bits/vt.h b/i686-linux-musl/include/bits/vt.h
new file mode 100644
index 0000000..834abfb
--- /dev/null
+++ b/i686-linux-musl/include/bits/vt.h
@@ -0,0 +1 @@
+#include <linux/vt.h>
diff --git a/i686-linux-musl/include/byteswap.h b/i686-linux-musl/include/byteswap.h
new file mode 100644
index 0000000..00b9df3
--- /dev/null
+++ b/i686-linux-musl/include/byteswap.h
@@ -0,0 +1,26 @@
+#ifndef _BYTESWAP_H
+#define _BYTESWAP_H
+
+#include <features.h>
+#include <stdint.h>
+
+static __inline uint16_t __bswap_16(uint16_t __x)
+{
+	return __x<<8 | __x>>8;
+}
+
+static __inline uint32_t __bswap_32(uint32_t __x)
+{
+	return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
+}
+
+static __inline uint64_t __bswap_64(uint64_t __x)
+{
+	return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
+}
+
+#define bswap_16(x) __bswap_16(x)
+#define bswap_32(x) __bswap_32(x)
+#define bswap_64(x) __bswap_64(x)
+
+#endif
diff --git a/i686-linux-musl/include/complex.h b/i686-linux-musl/include/complex.h
new file mode 100644
index 0000000..008b3c7
--- /dev/null
+++ b/i686-linux-musl/include/complex.h
@@ -0,0 +1,133 @@
+#ifndef _COMPLEX_H
+#define _COMPLEX_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define complex _Complex
+#ifdef __GNUC__
+#define _Complex_I (__extension__ (0.0f+1.0fi))
+#else
+#define _Complex_I (0.0f+1.0fi)
+#endif
+#define I _Complex_I
+
+double complex cacos(double complex);
+float complex cacosf(float complex);
+long double complex cacosl(long double complex);
+
+double complex casin(double complex);
+float complex casinf(float complex);
+long double complex casinl(long double complex);
+
+double complex catan(double complex);
+float complex catanf(float complex);
+long double complex catanl(long double complex);
+
+double complex ccos(double complex);
+float complex ccosf(float complex);
+long double complex ccosl(long double complex);
+
+double complex csin(double complex);
+float complex csinf(float complex);
+long double complex csinl(long double complex);
+
+double complex ctan(double complex);
+float complex ctanf(float complex);
+long double complex ctanl(long double complex);
+
+double complex cacosh(double complex);
+float complex cacoshf(float complex);
+long double complex cacoshl(long double complex);
+
+double complex casinh(double complex);
+float complex casinhf(float complex);
+long double complex casinhl(long double complex);
+
+double complex catanh(double complex);
+float complex catanhf(float complex);
+long double complex catanhl(long double complex);
+
+double complex ccosh(double complex);
+float complex ccoshf(float complex);
+long double complex ccoshl(long double complex);
+
+double complex csinh(double complex);
+float complex csinhf(float complex);
+long double complex csinhl(long double complex);
+
+double complex ctanh(double complex);
+float complex ctanhf(float complex);
+long double complex ctanhl(long double complex);
+
+double complex cexp(double complex);
+float complex cexpf(float complex);
+long double complex cexpl(long double complex);
+
+double complex clog(double complex);
+float complex clogf(float complex);
+long double complex clogl(long double complex);
+
+double cabs(double complex);
+float cabsf(float complex);
+long double cabsl(long double complex);
+
+double complex cpow(double complex, double complex);
+float complex cpowf(float complex, float complex);
+long double complex cpowl(long double complex, long double complex);
+
+double complex csqrt(double complex);
+float complex csqrtf(float complex);
+long double complex csqrtl(long double complex);
+
+double carg(double complex);
+float cargf(float complex);
+long double cargl(long double complex);
+
+double cimag(double complex);
+float cimagf(float complex);
+long double cimagl(long double complex);
+
+double complex conj(double complex);
+float complex conjf(float complex);
+long double complex conjl(long double complex);
+
+double complex cproj(double complex);
+float complex cprojf(float complex);
+long double complex cprojl(long double complex);
+
+double creal(double complex);
+float crealf(float complex);
+long double creall(long double complex);
+
+#ifndef __cplusplus
+#define __CIMAG(x, t) \
+	(+(union { _Complex t __z; t __xy[2]; }){(_Complex t)(x)}.__xy[1])
+
+#define creal(x) ((double)(x))
+#define crealf(x) ((float)(x))
+#define creall(x) ((long double)(x))
+
+#define cimag(x) __CIMAG(x, double)
+#define cimagf(x) __CIMAG(x, float)
+#define cimagl(x) __CIMAG(x, long double)
+#endif
+
+#if __STDC_VERSION__ >= 201112L
+#if defined(_Imaginary_I)
+#define __CMPLX(x, y, t) ((t)(x) + _Imaginary_I*(t)(y))
+#elif defined(__clang__)
+#define __CMPLX(x, y, t) (+(_Complex t){ (t)(x), (t)(y) })
+#else
+#define __CMPLX(x, y, t) (__builtin_complex((t)(x), (t)(y)))
+#endif
+#define CMPLX(x, y) __CMPLX(x, y, double)
+#define CMPLXF(x, y) __CMPLX(x, y, float)
+#define CMPLXL(x, y) __CMPLX(x, y, long double)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/cpio.h b/i686-linux-musl/include/cpio.h
new file mode 100644
index 0000000..39a1f8b
--- /dev/null
+++ b/i686-linux-musl/include/cpio.h
@@ -0,0 +1,29 @@
+#ifndef _CPIO_H
+#define _CPIO_H
+
+#define MAGIC "070707"
+
+#define C_IRUSR  000400
+#define C_IWUSR  000200
+#define C_IXUSR  000100
+#define C_IRGRP  000040
+#define C_IWGRP  000020
+#define C_IXGRP  000010
+#define C_IROTH  000004
+#define C_IWOTH  000002
+#define C_IXOTH  000001
+
+#define C_ISUID  004000
+#define C_ISGID  002000
+#define C_ISVTX  001000
+
+#define C_ISBLK  060000
+#define C_ISCHR  020000
+#define C_ISDIR  040000
+#define C_ISFIFO 010000
+#define C_ISSOCK 0140000
+#define C_ISLNK  0120000
+#define C_ISCTG  0110000
+#define C_ISREG  0100000
+
+#endif
diff --git a/i686-linux-musl/include/crypt.h b/i686-linux-musl/include/crypt.h
new file mode 100644
index 0000000..07de216
--- /dev/null
+++ b/i686-linux-musl/include/crypt.h
@@ -0,0 +1,20 @@
+#ifndef _CRYPT_H
+#define _CRYPT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct crypt_data {
+	int initialized;
+	char __buf[256];
+};
+
+char *crypt(const char *, const char *);
+char *crypt_r(const char *, const char *, struct crypt_data *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/ctype.h b/i686-linux-musl/include/ctype.h
new file mode 100644
index 0000000..32bcef4
--- /dev/null
+++ b/i686-linux-musl/include/ctype.h
@@ -0,0 +1,77 @@
+#ifndef	_CTYPE_H
+#define	_CTYPE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+int   isalnum(int);
+int   isalpha(int);
+int   isblank(int);
+int   iscntrl(int);
+int   isdigit(int);
+int   isgraph(int);
+int   islower(int);
+int   isprint(int);
+int   ispunct(int);
+int   isspace(int);
+int   isupper(int);
+int   isxdigit(int);
+int   tolower(int);
+int   toupper(int);
+
+#ifndef __cplusplus
+static __inline int __isspace(int _c)
+{
+	return _c == ' ' || (unsigned)_c-'\t' < 5;
+}
+
+#define isalpha(a) (0 ? isalpha(a) : (((unsigned)(a)|32)-'a') < 26)
+#define isdigit(a) (0 ? isdigit(a) : ((unsigned)(a)-'0') < 10)
+#define islower(a) (0 ? islower(a) : ((unsigned)(a)-'a') < 26)
+#define isupper(a) (0 ? isupper(a) : ((unsigned)(a)-'A') < 26)
+#define isprint(a) (0 ? isprint(a) : ((unsigned)(a)-0x20) < 0x5f)
+#define isgraph(a) (0 ? isgraph(a) : ((unsigned)(a)-0x21) < 0x5e)
+#define isspace(a) __isspace(a)
+#endif
+
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+
+#define __NEED_locale_t
+#include <bits/alltypes.h>
+
+int   isalnum_l(int, locale_t);
+int   isalpha_l(int, locale_t);
+int   isblank_l(int, locale_t);
+int   iscntrl_l(int, locale_t);
+int   isdigit_l(int, locale_t);
+int   isgraph_l(int, locale_t);
+int   islower_l(int, locale_t);
+int   isprint_l(int, locale_t);
+int   ispunct_l(int, locale_t);
+int   isspace_l(int, locale_t);
+int   isupper_l(int, locale_t);
+int   isxdigit_l(int, locale_t);
+int   tolower_l(int, locale_t);
+int   toupper_l(int, locale_t);
+
+int   isascii(int);
+int   toascii(int);
+#define _tolower(a) ((a)|0x20)
+#define _toupper(a) ((a)&0x5f)
+#ifndef __cplusplus
+#define isascii(a) (0 ? isascii(a) : (unsigned)(a) < 128)
+#endif
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/dirent.h b/i686-linux-musl/include/dirent.h
new file mode 100644
index 0000000..650ecf6
--- /dev/null
+++ b/i686-linux-musl/include/dirent.h
@@ -0,0 +1,75 @@
+#ifndef	_DIRENT_H
+#define	_DIRENT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_ino_t
+#define __NEED_off_t
+#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
+#define __NEED_size_t
+#endif
+
+#include <bits/alltypes.h>
+
+#include <bits/dirent.h>
+
+typedef struct __dirstream DIR;
+
+#define d_fileno d_ino
+
+int            closedir(DIR *);
+DIR           *fdopendir(int);
+DIR           *opendir(const char *);
+struct dirent *readdir(DIR *);
+int            readdir_r(DIR *__restrict, struct dirent *__restrict, struct dirent **__restrict);
+void           rewinddir(DIR *);
+int            dirfd(DIR *);
+
+int alphasort(const struct dirent **, const struct dirent **);
+int scandir(const char *, struct dirent ***, int (*)(const struct dirent *), int (*)(const struct dirent **, const struct dirent **));
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+void           seekdir(DIR *, long);
+long           telldir(DIR *);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define DT_UNKNOWN 0
+#define DT_FIFO 1
+#define DT_CHR 2
+#define DT_DIR 4
+#define DT_BLK 6
+#define DT_REG 8
+#define DT_LNK 10
+#define DT_SOCK 12
+#define DT_WHT 14
+#define IFTODT(x) ((x)>>12 & 017)
+#define DTTOIF(x) ((x)<<12)
+int getdents(int, struct dirent *, size_t);
+#endif
+
+#ifdef _GNU_SOURCE
+int versionsort(const struct dirent **, const struct dirent **);
+#endif
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define dirent64 dirent
+#define readdir64 readdir
+#define readdir64_r readdir_r
+#define scandir64 scandir
+#define alphasort64 alphasort
+#define versionsort64 versionsort
+#define off64_t off_t
+#define ino64_t ino_t
+#define getdents64 getdents
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/dlfcn.h b/i686-linux-musl/include/dlfcn.h
new file mode 100644
index 0000000..13ab71d
--- /dev/null
+++ b/i686-linux-musl/include/dlfcn.h
@@ -0,0 +1,46 @@
+#ifndef	_DLFCN_H
+#define	_DLFCN_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define RTLD_LAZY   1
+#define RTLD_NOW    2
+#define RTLD_NOLOAD 4
+#define RTLD_NODELETE 4096
+#define RTLD_GLOBAL 256
+#define RTLD_LOCAL  0
+
+#define RTLD_NEXT    ((void *)-1)
+#define RTLD_DEFAULT ((void *)0)
+
+#define RTLD_DI_LINKMAP 2
+
+int    dlclose(void *);
+char  *dlerror(void);
+void  *dlopen(const char *, int);
+void  *dlsym(void *__restrict, const char *__restrict);
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+typedef struct {
+	const char *dli_fname;
+	void *dli_fbase;
+	const char *dli_sname;
+	void *dli_saddr;
+} Dl_info;
+int dladdr(const void *, Dl_info *);
+int dlinfo(void *, int, void *);
+#endif
+
+#if _REDIR_TIME64
+__REDIR(dlsym, __dlsym_time64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/drm/amdgpu_drm.h b/i686-linux-musl/include/drm/amdgpu_drm.h
new file mode 100644
index 0000000..3764d51
--- /dev/null
+++ b/i686-linux-musl/include/drm/amdgpu_drm.h
@@ -0,0 +1,688 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __AMDGPU_DRM_H__
+#define __AMDGPU_DRM_H__
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_AMDGPU_GEM_CREATE 0x00
+#define DRM_AMDGPU_GEM_MMAP 0x01
+#define DRM_AMDGPU_CTX 0x02
+#define DRM_AMDGPU_BO_LIST 0x03
+#define DRM_AMDGPU_CS 0x04
+#define DRM_AMDGPU_INFO 0x05
+#define DRM_AMDGPU_GEM_METADATA 0x06
+#define DRM_AMDGPU_GEM_WAIT_IDLE 0x07
+#define DRM_AMDGPU_GEM_VA 0x08
+#define DRM_AMDGPU_WAIT_CS 0x09
+#define DRM_AMDGPU_GEM_OP 0x10
+#define DRM_AMDGPU_GEM_USERPTR 0x11
+#define DRM_AMDGPU_WAIT_FENCES 0x12
+#define DRM_AMDGPU_VM 0x13
+#define DRM_AMDGPU_FENCE_TO_HANDLE 0x14
+#define DRM_AMDGPU_SCHED 0x15
+#define DRM_IOCTL_AMDGPU_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_CREATE, union drm_amdgpu_gem_create)
+#define DRM_IOCTL_AMDGPU_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_MMAP, union drm_amdgpu_gem_mmap)
+#define DRM_IOCTL_AMDGPU_CTX DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_CTX, union drm_amdgpu_ctx)
+#define DRM_IOCTL_AMDGPU_BO_LIST DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_BO_LIST, union drm_amdgpu_bo_list)
+#define DRM_IOCTL_AMDGPU_CS DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_CS, union drm_amdgpu_cs)
+#define DRM_IOCTL_AMDGPU_INFO DRM_IOW(DRM_COMMAND_BASE + DRM_AMDGPU_INFO, struct drm_amdgpu_info)
+#define DRM_IOCTL_AMDGPU_GEM_METADATA DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_METADATA, struct drm_amdgpu_gem_metadata)
+#define DRM_IOCTL_AMDGPU_GEM_WAIT_IDLE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_WAIT_IDLE, union drm_amdgpu_gem_wait_idle)
+#define DRM_IOCTL_AMDGPU_GEM_VA DRM_IOW(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_VA, struct drm_amdgpu_gem_va)
+#define DRM_IOCTL_AMDGPU_WAIT_CS DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_WAIT_CS, union drm_amdgpu_wait_cs)
+#define DRM_IOCTL_AMDGPU_GEM_OP DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_OP, struct drm_amdgpu_gem_op)
+#define DRM_IOCTL_AMDGPU_GEM_USERPTR DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_USERPTR, struct drm_amdgpu_gem_userptr)
+#define DRM_IOCTL_AMDGPU_WAIT_FENCES DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_WAIT_FENCES, union drm_amdgpu_wait_fences)
+#define DRM_IOCTL_AMDGPU_VM DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_VM, union drm_amdgpu_vm)
+#define DRM_IOCTL_AMDGPU_FENCE_TO_HANDLE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_FENCE_TO_HANDLE, union drm_amdgpu_fence_to_handle)
+#define DRM_IOCTL_AMDGPU_SCHED DRM_IOW(DRM_COMMAND_BASE + DRM_AMDGPU_SCHED, union drm_amdgpu_sched)
+#define AMDGPU_GEM_DOMAIN_CPU 0x1
+#define AMDGPU_GEM_DOMAIN_GTT 0x2
+#define AMDGPU_GEM_DOMAIN_VRAM 0x4
+#define AMDGPU_GEM_DOMAIN_GDS 0x8
+#define AMDGPU_GEM_DOMAIN_GWS 0x10
+#define AMDGPU_GEM_DOMAIN_OA 0x20
+#define AMDGPU_GEM_DOMAIN_MASK (AMDGPU_GEM_DOMAIN_CPU | AMDGPU_GEM_DOMAIN_GTT | AMDGPU_GEM_DOMAIN_VRAM | AMDGPU_GEM_DOMAIN_GDS | AMDGPU_GEM_DOMAIN_GWS | AMDGPU_GEM_DOMAIN_OA)
+#define AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED (1 << 0)
+#define AMDGPU_GEM_CREATE_NO_CPU_ACCESS (1 << 1)
+#define AMDGPU_GEM_CREATE_CPU_GTT_USWC (1 << 2)
+#define AMDGPU_GEM_CREATE_VRAM_CLEARED (1 << 3)
+#define AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS (1 << 5)
+#define AMDGPU_GEM_CREATE_VM_ALWAYS_VALID (1 << 6)
+#define AMDGPU_GEM_CREATE_EXPLICIT_SYNC (1 << 7)
+#define AMDGPU_GEM_CREATE_CP_MQD_GFX9 (1 << 8)
+#define AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE (1 << 9)
+#define AMDGPU_GEM_CREATE_ENCRYPTED (1 << 10)
+#define AMDGPU_GEM_CREATE_PREEMPTIBLE (1 << 11)
+struct drm_amdgpu_gem_create_in {
+  __u64 bo_size;
+  __u64 alignment;
+  __u64 domains;
+  __u64 domain_flags;
+};
+struct drm_amdgpu_gem_create_out {
+  __u32 handle;
+  __u32 _pad;
+};
+union drm_amdgpu_gem_create {
+  struct drm_amdgpu_gem_create_in in;
+  struct drm_amdgpu_gem_create_out out;
+};
+#define AMDGPU_BO_LIST_OP_CREATE 0
+#define AMDGPU_BO_LIST_OP_DESTROY 1
+#define AMDGPU_BO_LIST_OP_UPDATE 2
+struct drm_amdgpu_bo_list_in {
+  __u32 operation;
+  __u32 list_handle;
+  __u32 bo_number;
+  __u32 bo_info_size;
+  __u64 bo_info_ptr;
+};
+struct drm_amdgpu_bo_list_entry {
+  __u32 bo_handle;
+  __u32 bo_priority;
+};
+struct drm_amdgpu_bo_list_out {
+  __u32 list_handle;
+  __u32 _pad;
+};
+union drm_amdgpu_bo_list {
+  struct drm_amdgpu_bo_list_in in;
+  struct drm_amdgpu_bo_list_out out;
+};
+#define AMDGPU_CTX_OP_ALLOC_CTX 1
+#define AMDGPU_CTX_OP_FREE_CTX 2
+#define AMDGPU_CTX_OP_QUERY_STATE 3
+#define AMDGPU_CTX_OP_QUERY_STATE2 4
+#define AMDGPU_CTX_NO_RESET 0
+#define AMDGPU_CTX_GUILTY_RESET 1
+#define AMDGPU_CTX_INNOCENT_RESET 2
+#define AMDGPU_CTX_UNKNOWN_RESET 3
+#define AMDGPU_CTX_QUERY2_FLAGS_RESET (1 << 0)
+#define AMDGPU_CTX_QUERY2_FLAGS_VRAMLOST (1 << 1)
+#define AMDGPU_CTX_QUERY2_FLAGS_GUILTY (1 << 2)
+#define AMDGPU_CTX_QUERY2_FLAGS_RAS_CE (1 << 3)
+#define AMDGPU_CTX_QUERY2_FLAGS_RAS_UE (1 << 4)
+#define AMDGPU_CTX_PRIORITY_UNSET - 2048
+#define AMDGPU_CTX_PRIORITY_VERY_LOW - 1023
+#define AMDGPU_CTX_PRIORITY_LOW - 512
+#define AMDGPU_CTX_PRIORITY_NORMAL 0
+#define AMDGPU_CTX_PRIORITY_HIGH 512
+#define AMDGPU_CTX_PRIORITY_VERY_HIGH 1023
+struct drm_amdgpu_ctx_in {
+  __u32 op;
+  __u32 flags;
+  __u32 ctx_id;
+  __s32 priority;
+};
+union drm_amdgpu_ctx_out {
+  struct {
+    __u32 ctx_id;
+    __u32 _pad;
+  } alloc;
+  struct {
+    __u64 flags;
+    __u32 hangs;
+    __u32 reset_status;
+  } state;
+};
+union drm_amdgpu_ctx {
+  struct drm_amdgpu_ctx_in in;
+  union drm_amdgpu_ctx_out out;
+};
+#define AMDGPU_VM_OP_RESERVE_VMID 1
+#define AMDGPU_VM_OP_UNRESERVE_VMID 2
+struct drm_amdgpu_vm_in {
+  __u32 op;
+  __u32 flags;
+};
+struct drm_amdgpu_vm_out {
+  __u64 flags;
+};
+union drm_amdgpu_vm {
+  struct drm_amdgpu_vm_in in;
+  struct drm_amdgpu_vm_out out;
+};
+#define AMDGPU_SCHED_OP_PROCESS_PRIORITY_OVERRIDE 1
+#define AMDGPU_SCHED_OP_CONTEXT_PRIORITY_OVERRIDE 2
+struct drm_amdgpu_sched_in {
+  __u32 op;
+  __u32 fd;
+  __s32 priority;
+  __u32 ctx_id;
+};
+union drm_amdgpu_sched {
+  struct drm_amdgpu_sched_in in;
+};
+#define AMDGPU_GEM_USERPTR_READONLY (1 << 0)
+#define AMDGPU_GEM_USERPTR_ANONONLY (1 << 1)
+#define AMDGPU_GEM_USERPTR_VALIDATE (1 << 2)
+#define AMDGPU_GEM_USERPTR_REGISTER (1 << 3)
+struct drm_amdgpu_gem_userptr {
+  __u64 addr;
+  __u64 size;
+  __u32 flags;
+  __u32 handle;
+};
+#define AMDGPU_TILING_ARRAY_MODE_SHIFT 0
+#define AMDGPU_TILING_ARRAY_MODE_MASK 0xf
+#define AMDGPU_TILING_PIPE_CONFIG_SHIFT 4
+#define AMDGPU_TILING_PIPE_CONFIG_MASK 0x1f
+#define AMDGPU_TILING_TILE_SPLIT_SHIFT 9
+#define AMDGPU_TILING_TILE_SPLIT_MASK 0x7
+#define AMDGPU_TILING_MICRO_TILE_MODE_SHIFT 12
+#define AMDGPU_TILING_MICRO_TILE_MODE_MASK 0x7
+#define AMDGPU_TILING_BANK_WIDTH_SHIFT 15
+#define AMDGPU_TILING_BANK_WIDTH_MASK 0x3
+#define AMDGPU_TILING_BANK_HEIGHT_SHIFT 17
+#define AMDGPU_TILING_BANK_HEIGHT_MASK 0x3
+#define AMDGPU_TILING_MACRO_TILE_ASPECT_SHIFT 19
+#define AMDGPU_TILING_MACRO_TILE_ASPECT_MASK 0x3
+#define AMDGPU_TILING_NUM_BANKS_SHIFT 21
+#define AMDGPU_TILING_NUM_BANKS_MASK 0x3
+#define AMDGPU_TILING_SWIZZLE_MODE_SHIFT 0
+#define AMDGPU_TILING_SWIZZLE_MODE_MASK 0x1f
+#define AMDGPU_TILING_DCC_OFFSET_256B_SHIFT 5
+#define AMDGPU_TILING_DCC_OFFSET_256B_MASK 0xFFFFFF
+#define AMDGPU_TILING_DCC_PITCH_MAX_SHIFT 29
+#define AMDGPU_TILING_DCC_PITCH_MAX_MASK 0x3FFF
+#define AMDGPU_TILING_DCC_INDEPENDENT_64B_SHIFT 43
+#define AMDGPU_TILING_DCC_INDEPENDENT_64B_MASK 0x1
+#define AMDGPU_TILING_DCC_INDEPENDENT_128B_SHIFT 44
+#define AMDGPU_TILING_DCC_INDEPENDENT_128B_MASK 0x1
+#define AMDGPU_TILING_SCANOUT_SHIFT 63
+#define AMDGPU_TILING_SCANOUT_MASK 0x1
+#define AMDGPU_TILING_SET(field,value) (((__u64) (value) & AMDGPU_TILING_ ##field ##_MASK) << AMDGPU_TILING_ ##field ##_SHIFT)
+#define AMDGPU_TILING_GET(value,field) (((__u64) (value) >> AMDGPU_TILING_ ##field ##_SHIFT) & AMDGPU_TILING_ ##field ##_MASK)
+#define AMDGPU_GEM_METADATA_OP_SET_METADATA 1
+#define AMDGPU_GEM_METADATA_OP_GET_METADATA 2
+struct drm_amdgpu_gem_metadata {
+  __u32 handle;
+  __u32 op;
+  struct {
+    __u64 flags;
+    __u64 tiling_info;
+    __u32 data_size_bytes;
+    __u32 data[64];
+  } data;
+};
+struct drm_amdgpu_gem_mmap_in {
+  __u32 handle;
+  __u32 _pad;
+};
+struct drm_amdgpu_gem_mmap_out {
+  __u64 addr_ptr;
+};
+union drm_amdgpu_gem_mmap {
+  struct drm_amdgpu_gem_mmap_in in;
+  struct drm_amdgpu_gem_mmap_out out;
+};
+struct drm_amdgpu_gem_wait_idle_in {
+  __u32 handle;
+  __u32 flags;
+  __u64 timeout;
+};
+struct drm_amdgpu_gem_wait_idle_out {
+  __u32 status;
+  __u32 domain;
+};
+union drm_amdgpu_gem_wait_idle {
+  struct drm_amdgpu_gem_wait_idle_in in;
+  struct drm_amdgpu_gem_wait_idle_out out;
+};
+struct drm_amdgpu_wait_cs_in {
+  __u64 handle;
+  __u64 timeout;
+  __u32 ip_type;
+  __u32 ip_instance;
+  __u32 ring;
+  __u32 ctx_id;
+};
+struct drm_amdgpu_wait_cs_out {
+  __u64 status;
+};
+union drm_amdgpu_wait_cs {
+  struct drm_amdgpu_wait_cs_in in;
+  struct drm_amdgpu_wait_cs_out out;
+};
+struct drm_amdgpu_fence {
+  __u32 ctx_id;
+  __u32 ip_type;
+  __u32 ip_instance;
+  __u32 ring;
+  __u64 seq_no;
+};
+struct drm_amdgpu_wait_fences_in {
+  __u64 fences;
+  __u32 fence_count;
+  __u32 wait_all;
+  __u64 timeout_ns;
+};
+struct drm_amdgpu_wait_fences_out {
+  __u32 status;
+  __u32 first_signaled;
+};
+union drm_amdgpu_wait_fences {
+  struct drm_amdgpu_wait_fences_in in;
+  struct drm_amdgpu_wait_fences_out out;
+};
+#define AMDGPU_GEM_OP_GET_GEM_CREATE_INFO 0
+#define AMDGPU_GEM_OP_SET_PLACEMENT 1
+struct drm_amdgpu_gem_op {
+  __u32 handle;
+  __u32 op;
+  __u64 value;
+};
+#define AMDGPU_VA_OP_MAP 1
+#define AMDGPU_VA_OP_UNMAP 2
+#define AMDGPU_VA_OP_CLEAR 3
+#define AMDGPU_VA_OP_REPLACE 4
+#define AMDGPU_VM_DELAY_UPDATE (1 << 0)
+#define AMDGPU_VM_PAGE_READABLE (1 << 1)
+#define AMDGPU_VM_PAGE_WRITEABLE (1 << 2)
+#define AMDGPU_VM_PAGE_EXECUTABLE (1 << 3)
+#define AMDGPU_VM_PAGE_PRT (1 << 4)
+#define AMDGPU_VM_MTYPE_MASK (0xf << 5)
+#define AMDGPU_VM_MTYPE_DEFAULT (0 << 5)
+#define AMDGPU_VM_MTYPE_NC (1 << 5)
+#define AMDGPU_VM_MTYPE_WC (2 << 5)
+#define AMDGPU_VM_MTYPE_CC (3 << 5)
+#define AMDGPU_VM_MTYPE_UC (4 << 5)
+#define AMDGPU_VM_MTYPE_RW (5 << 5)
+struct drm_amdgpu_gem_va {
+  __u32 handle;
+  __u32 _pad;
+  __u32 operation;
+  __u32 flags;
+  __u64 va_address;
+  __u64 offset_in_bo;
+  __u64 map_size;
+};
+#define AMDGPU_HW_IP_GFX 0
+#define AMDGPU_HW_IP_COMPUTE 1
+#define AMDGPU_HW_IP_DMA 2
+#define AMDGPU_HW_IP_UVD 3
+#define AMDGPU_HW_IP_VCE 4
+#define AMDGPU_HW_IP_UVD_ENC 5
+#define AMDGPU_HW_IP_VCN_DEC 6
+#define AMDGPU_HW_IP_VCN_ENC 7
+#define AMDGPU_HW_IP_VCN_JPEG 8
+#define AMDGPU_HW_IP_NUM 9
+#define AMDGPU_HW_IP_INSTANCE_MAX_COUNT 1
+#define AMDGPU_CHUNK_ID_IB 0x01
+#define AMDGPU_CHUNK_ID_FENCE 0x02
+#define AMDGPU_CHUNK_ID_DEPENDENCIES 0x03
+#define AMDGPU_CHUNK_ID_SYNCOBJ_IN 0x04
+#define AMDGPU_CHUNK_ID_SYNCOBJ_OUT 0x05
+#define AMDGPU_CHUNK_ID_BO_HANDLES 0x06
+#define AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIES 0x07
+#define AMDGPU_CHUNK_ID_SYNCOBJ_TIMELINE_WAIT 0x08
+#define AMDGPU_CHUNK_ID_SYNCOBJ_TIMELINE_SIGNAL 0x09
+struct drm_amdgpu_cs_chunk {
+  __u32 chunk_id;
+  __u32 length_dw;
+  __u64 chunk_data;
+};
+struct drm_amdgpu_cs_in {
+  __u32 ctx_id;
+  __u32 bo_list_handle;
+  __u32 num_chunks;
+  __u32 flags;
+  __u64 chunks;
+};
+struct drm_amdgpu_cs_out {
+  __u64 handle;
+};
+union drm_amdgpu_cs {
+  struct drm_amdgpu_cs_in in;
+  struct drm_amdgpu_cs_out out;
+};
+#define AMDGPU_IB_FLAG_CE (1 << 0)
+#define AMDGPU_IB_FLAG_PREAMBLE (1 << 1)
+#define AMDGPU_IB_FLAG_PREEMPT (1 << 2)
+#define AMDGPU_IB_FLAG_TC_WB_NOT_INVALIDATE (1 << 3)
+#define AMDGPU_IB_FLAG_RESET_GDS_MAX_WAVE_ID (1 << 4)
+#define AMDGPU_IB_FLAGS_SECURE (1 << 5)
+#define AMDGPU_IB_FLAG_EMIT_MEM_SYNC (1 << 6)
+struct drm_amdgpu_cs_chunk_ib {
+  __u32 _pad;
+  __u32 flags;
+  __u64 va_start;
+  __u32 ib_bytes;
+  __u32 ip_type;
+  __u32 ip_instance;
+  __u32 ring;
+};
+struct drm_amdgpu_cs_chunk_dep {
+  __u32 ip_type;
+  __u32 ip_instance;
+  __u32 ring;
+  __u32 ctx_id;
+  __u64 handle;
+};
+struct drm_amdgpu_cs_chunk_fence {
+  __u32 handle;
+  __u32 offset;
+};
+struct drm_amdgpu_cs_chunk_sem {
+  __u32 handle;
+};
+struct drm_amdgpu_cs_chunk_syncobj {
+  __u32 handle;
+  __u32 flags;
+  __u64 point;
+};
+#define AMDGPU_FENCE_TO_HANDLE_GET_SYNCOBJ 0
+#define AMDGPU_FENCE_TO_HANDLE_GET_SYNCOBJ_FD 1
+#define AMDGPU_FENCE_TO_HANDLE_GET_SYNC_FILE_FD 2
+union drm_amdgpu_fence_to_handle {
+  struct {
+    struct drm_amdgpu_fence fence;
+    __u32 what;
+    __u32 pad;
+  } in;
+  struct {
+    __u32 handle;
+  } out;
+};
+struct drm_amdgpu_cs_chunk_data {
+  union {
+    struct drm_amdgpu_cs_chunk_ib ib_data;
+    struct drm_amdgpu_cs_chunk_fence fence_data;
+  };
+};
+#define AMDGPU_IDS_FLAGS_FUSION 0x1
+#define AMDGPU_IDS_FLAGS_PREEMPTION 0x2
+#define AMDGPU_IDS_FLAGS_TMZ 0x4
+#define AMDGPU_INFO_ACCEL_WORKING 0x00
+#define AMDGPU_INFO_CRTC_FROM_ID 0x01
+#define AMDGPU_INFO_HW_IP_INFO 0x02
+#define AMDGPU_INFO_HW_IP_COUNT 0x03
+#define AMDGPU_INFO_TIMESTAMP 0x05
+#define AMDGPU_INFO_FW_VERSION 0x0e
+#define AMDGPU_INFO_FW_VCE 0x1
+#define AMDGPU_INFO_FW_UVD 0x2
+#define AMDGPU_INFO_FW_GMC 0x03
+#define AMDGPU_INFO_FW_GFX_ME 0x04
+#define AMDGPU_INFO_FW_GFX_PFP 0x05
+#define AMDGPU_INFO_FW_GFX_CE 0x06
+#define AMDGPU_INFO_FW_GFX_RLC 0x07
+#define AMDGPU_INFO_FW_GFX_MEC 0x08
+#define AMDGPU_INFO_FW_SMC 0x0a
+#define AMDGPU_INFO_FW_SDMA 0x0b
+#define AMDGPU_INFO_FW_SOS 0x0c
+#define AMDGPU_INFO_FW_ASD 0x0d
+#define AMDGPU_INFO_FW_VCN 0x0e
+#define AMDGPU_INFO_FW_GFX_RLC_RESTORE_LIST_CNTL 0x0f
+#define AMDGPU_INFO_FW_GFX_RLC_RESTORE_LIST_GPM_MEM 0x10
+#define AMDGPU_INFO_FW_GFX_RLC_RESTORE_LIST_SRM_MEM 0x11
+#define AMDGPU_INFO_FW_DMCU 0x12
+#define AMDGPU_INFO_FW_TA 0x13
+#define AMDGPU_INFO_FW_DMCUB 0x14
+#define AMDGPU_INFO_FW_TOC 0x15
+#define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f
+#define AMDGPU_INFO_VRAM_USAGE 0x10
+#define AMDGPU_INFO_GTT_USAGE 0x11
+#define AMDGPU_INFO_GDS_CONFIG 0x13
+#define AMDGPU_INFO_VRAM_GTT 0x14
+#define AMDGPU_INFO_READ_MMR_REG 0x15
+#define AMDGPU_INFO_DEV_INFO 0x16
+#define AMDGPU_INFO_VIS_VRAM_USAGE 0x17
+#define AMDGPU_INFO_NUM_EVICTIONS 0x18
+#define AMDGPU_INFO_MEMORY 0x19
+#define AMDGPU_INFO_VCE_CLOCK_TABLE 0x1A
+#define AMDGPU_INFO_VBIOS 0x1B
+#define AMDGPU_INFO_VBIOS_SIZE 0x1
+#define AMDGPU_INFO_VBIOS_IMAGE 0x2
+#define AMDGPU_INFO_VBIOS_INFO 0x3
+#define AMDGPU_INFO_NUM_HANDLES 0x1C
+#define AMDGPU_INFO_SENSOR 0x1D
+#define AMDGPU_INFO_SENSOR_GFX_SCLK 0x1
+#define AMDGPU_INFO_SENSOR_GFX_MCLK 0x2
+#define AMDGPU_INFO_SENSOR_GPU_TEMP 0x3
+#define AMDGPU_INFO_SENSOR_GPU_LOAD 0x4
+#define AMDGPU_INFO_SENSOR_GPU_AVG_POWER 0x5
+#define AMDGPU_INFO_SENSOR_VDDNB 0x6
+#define AMDGPU_INFO_SENSOR_VDDGFX 0x7
+#define AMDGPU_INFO_SENSOR_STABLE_PSTATE_GFX_SCLK 0x8
+#define AMDGPU_INFO_SENSOR_STABLE_PSTATE_GFX_MCLK 0x9
+#define AMDGPU_INFO_NUM_VRAM_CPU_PAGE_FAULTS 0x1E
+#define AMDGPU_INFO_VRAM_LOST_COUNTER 0x1F
+#define AMDGPU_INFO_RAS_ENABLED_FEATURES 0x20
+#define AMDGPU_INFO_RAS_ENABLED_UMC (1 << 0)
+#define AMDGPU_INFO_RAS_ENABLED_SDMA (1 << 1)
+#define AMDGPU_INFO_RAS_ENABLED_GFX (1 << 2)
+#define AMDGPU_INFO_RAS_ENABLED_MMHUB (1 << 3)
+#define AMDGPU_INFO_RAS_ENABLED_ATHUB (1 << 4)
+#define AMDGPU_INFO_RAS_ENABLED_PCIE (1 << 5)
+#define AMDGPU_INFO_RAS_ENABLED_HDP (1 << 6)
+#define AMDGPU_INFO_RAS_ENABLED_XGMI (1 << 7)
+#define AMDGPU_INFO_RAS_ENABLED_DF (1 << 8)
+#define AMDGPU_INFO_RAS_ENABLED_SMN (1 << 9)
+#define AMDGPU_INFO_RAS_ENABLED_SEM (1 << 10)
+#define AMDGPU_INFO_RAS_ENABLED_MP0 (1 << 11)
+#define AMDGPU_INFO_RAS_ENABLED_MP1 (1 << 12)
+#define AMDGPU_INFO_RAS_ENABLED_FUSE (1 << 13)
+#define AMDGPU_INFO_VIDEO_CAPS 0x21
+#define AMDGPU_INFO_VIDEO_CAPS_DECODE 0
+#define AMDGPU_INFO_VIDEO_CAPS_ENCODE 1
+#define AMDGPU_INFO_MMR_SE_INDEX_SHIFT 0
+#define AMDGPU_INFO_MMR_SE_INDEX_MASK 0xff
+#define AMDGPU_INFO_MMR_SH_INDEX_SHIFT 8
+#define AMDGPU_INFO_MMR_SH_INDEX_MASK 0xff
+struct drm_amdgpu_query_fw {
+  __u32 fw_type;
+  __u32 ip_instance;
+  __u32 index;
+  __u32 _pad;
+};
+struct drm_amdgpu_info {
+  __u64 return_pointer;
+  __u32 return_size;
+  __u32 query;
+  union {
+    struct {
+      __u32 id;
+      __u32 _pad;
+    } mode_crtc;
+    struct {
+      __u32 type;
+      __u32 ip_instance;
+    } query_hw_ip;
+    struct {
+      __u32 dword_offset;
+      __u32 count;
+      __u32 instance;
+      __u32 flags;
+    } read_mmr_reg;
+    struct drm_amdgpu_query_fw query_fw;
+    struct {
+      __u32 type;
+      __u32 offset;
+    } vbios_info;
+    struct {
+      __u32 type;
+    } sensor_info;
+    struct {
+      __u32 type;
+    } video_cap;
+  };
+};
+struct drm_amdgpu_info_gds {
+  __u32 gds_gfx_partition_size;
+  __u32 compute_partition_size;
+  __u32 gds_total_size;
+  __u32 gws_per_gfx_partition;
+  __u32 gws_per_compute_partition;
+  __u32 oa_per_gfx_partition;
+  __u32 oa_per_compute_partition;
+  __u32 _pad;
+};
+struct drm_amdgpu_info_vram_gtt {
+  __u64 vram_size;
+  __u64 vram_cpu_accessible_size;
+  __u64 gtt_size;
+};
+struct drm_amdgpu_heap_info {
+  __u64 total_heap_size;
+  __u64 usable_heap_size;
+  __u64 heap_usage;
+  __u64 max_allocation;
+};
+struct drm_amdgpu_memory_info {
+  struct drm_amdgpu_heap_info vram;
+  struct drm_amdgpu_heap_info cpu_accessible_vram;
+  struct drm_amdgpu_heap_info gtt;
+};
+struct drm_amdgpu_info_firmware {
+  __u32 ver;
+  __u32 feature;
+};
+struct drm_amdgpu_info_vbios {
+  __u8 name[64];
+  __u8 vbios_pn[64];
+  __u32 version;
+  __u32 pad;
+  __u8 vbios_ver_str[32];
+  __u8 date[32];
+};
+#define AMDGPU_VRAM_TYPE_UNKNOWN 0
+#define AMDGPU_VRAM_TYPE_GDDR1 1
+#define AMDGPU_VRAM_TYPE_DDR2 2
+#define AMDGPU_VRAM_TYPE_GDDR3 3
+#define AMDGPU_VRAM_TYPE_GDDR4 4
+#define AMDGPU_VRAM_TYPE_GDDR5 5
+#define AMDGPU_VRAM_TYPE_HBM 6
+#define AMDGPU_VRAM_TYPE_DDR3 7
+#define AMDGPU_VRAM_TYPE_DDR4 8
+#define AMDGPU_VRAM_TYPE_GDDR6 9
+#define AMDGPU_VRAM_TYPE_DDR5 10
+struct drm_amdgpu_info_device {
+  __u32 device_id;
+  __u32 chip_rev;
+  __u32 external_rev;
+  __u32 pci_rev;
+  __u32 family;
+  __u32 num_shader_engines;
+  __u32 num_shader_arrays_per_engine;
+  __u32 gpu_counter_freq;
+  __u64 max_engine_clock;
+  __u64 max_memory_clock;
+  __u32 cu_active_number;
+  __u32 cu_ao_mask;
+  __u32 cu_bitmap[4][4];
+  __u32 enabled_rb_pipes_mask;
+  __u32 num_rb_pipes;
+  __u32 num_hw_gfx_contexts;
+  __u32 _pad;
+  __u64 ids_flags;
+  __u64 virtual_address_offset;
+  __u64 virtual_address_max;
+  __u32 virtual_address_alignment;
+  __u32 pte_fragment_size;
+  __u32 gart_page_size;
+  __u32 ce_ram_size;
+  __u32 vram_type;
+  __u32 vram_bit_width;
+  __u32 vce_harvest_config;
+  __u32 gc_double_offchip_lds_buf;
+  __u64 prim_buf_gpu_addr;
+  __u64 pos_buf_gpu_addr;
+  __u64 cntl_sb_buf_gpu_addr;
+  __u64 param_buf_gpu_addr;
+  __u32 prim_buf_size;
+  __u32 pos_buf_size;
+  __u32 cntl_sb_buf_size;
+  __u32 param_buf_size;
+  __u32 wave_front_size;
+  __u32 num_shader_visible_vgprs;
+  __u32 num_cu_per_sh;
+  __u32 num_tcc_blocks;
+  __u32 gs_vgt_table_depth;
+  __u32 gs_prim_buffer_depth;
+  __u32 max_gs_waves_per_vgt;
+  __u32 _pad1;
+  __u32 cu_ao_bitmap[4][4];
+  __u64 high_va_offset;
+  __u64 high_va_max;
+  __u32 pa_sc_tile_steering_override;
+  __u64 tcc_disabled_mask;
+};
+struct drm_amdgpu_info_hw_ip {
+  __u32 hw_ip_version_major;
+  __u32 hw_ip_version_minor;
+  __u64 capabilities_flags;
+  __u32 ib_start_alignment;
+  __u32 ib_size_alignment;
+  __u32 available_rings;
+  __u32 _pad;
+};
+struct drm_amdgpu_info_num_handles {
+  __u32 uvd_max_handles;
+  __u32 uvd_used_handles;
+};
+#define AMDGPU_VCE_CLOCK_TABLE_ENTRIES 6
+struct drm_amdgpu_info_vce_clock_table_entry {
+  __u32 sclk;
+  __u32 mclk;
+  __u32 eclk;
+  __u32 pad;
+};
+struct drm_amdgpu_info_vce_clock_table {
+  struct drm_amdgpu_info_vce_clock_table_entry entries[AMDGPU_VCE_CLOCK_TABLE_ENTRIES];
+  __u32 num_valid_entries;
+  __u32 pad;
+};
+#define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG2 0
+#define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4 1
+#define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VC1 2
+#define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC 3
+#define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC 4
+#define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG 5
+#define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VP9 6
+#define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_AV1 7
+#define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_COUNT 8
+struct drm_amdgpu_info_video_codec_info {
+  __u32 valid;
+  __u32 max_width;
+  __u32 max_height;
+  __u32 max_pixels_per_frame;
+  __u32 max_level;
+  __u32 pad;
+};
+struct drm_amdgpu_info_video_caps {
+  struct drm_amdgpu_info_video_codec_info codec_info[AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_COUNT];
+};
+#define AMDGPU_FAMILY_UNKNOWN 0
+#define AMDGPU_FAMILY_SI 110
+#define AMDGPU_FAMILY_CI 120
+#define AMDGPU_FAMILY_KV 125
+#define AMDGPU_FAMILY_VI 130
+#define AMDGPU_FAMILY_CZ 135
+#define AMDGPU_FAMILY_AI 141
+#define AMDGPU_FAMILY_RV 142
+#define AMDGPU_FAMILY_NV 143
+#define AMDGPU_FAMILY_VGH 144
+#define AMDGPU_FAMILY_YC 146
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/armada_drm.h b/i686-linux-musl/include/drm/armada_drm.h
new file mode 100644
index 0000000..aabd23b
--- /dev/null
+++ b/i686-linux-musl/include/drm/armada_drm.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 DRM_ARMADA_IOCTL_H
+#define DRM_ARMADA_IOCTL_H
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_ARMADA_GEM_CREATE 0x00
+#define DRM_ARMADA_GEM_MMAP 0x02
+#define DRM_ARMADA_GEM_PWRITE 0x03
+#define ARMADA_IOCTL(dir,name,str) DRM_ ##dir(DRM_COMMAND_BASE + DRM_ARMADA_ ##name, struct drm_armada_ ##str)
+struct drm_armada_gem_create {
+  __u32 handle;
+  __u32 size;
+};
+#define DRM_IOCTL_ARMADA_GEM_CREATE ARMADA_IOCTL(IOWR, GEM_CREATE, gem_create)
+struct drm_armada_gem_mmap {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+  __u64 size;
+  __u64 addr;
+};
+#define DRM_IOCTL_ARMADA_GEM_MMAP ARMADA_IOCTL(IOWR, GEM_MMAP, gem_mmap)
+struct drm_armada_gem_pwrite {
+  __u64 ptr;
+  __u32 handle;
+  __u32 offset;
+  __u32 size;
+};
+#define DRM_IOCTL_ARMADA_GEM_PWRITE ARMADA_IOCTL(IOW, GEM_PWRITE, gem_pwrite)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/drm.h b/i686-linux-musl/include/drm/drm.h
new file mode 100644
index 0000000..878e899
--- /dev/null
+++ b/i686-linux-musl/include/drm/drm.h
@@ -0,0 +1,643 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _DRM_H_
+#define _DRM_H_
+#ifdef __linux__
+#include <linux/types.h>
+#include <asm/ioctl.h>
+typedef unsigned int drm_handle_t;
+#else
+#include <stdint.h>
+#include <sys/ioccom.h>
+#include <sys/types.h>
+typedef int8_t __s8;
+typedef uint8_t __u8;
+typedef int16_t __s16;
+typedef uint16_t __u16;
+typedef int32_t __s32;
+typedef uint32_t __u32;
+typedef int64_t __s64;
+typedef uint64_t __u64;
+typedef size_t __kernel_size_t;
+typedef unsigned long drm_handle_t;
+#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_NAME "drm"
+#define DRM_MIN_ORDER 5
+#define DRM_MAX_ORDER 22
+#define DRM_RAM_PERCENT 10
+#define _DRM_LOCK_HELD 0x80000000U
+#define _DRM_LOCK_CONT 0x40000000U
+#define _DRM_LOCK_IS_HELD(lock) ((lock) & _DRM_LOCK_HELD)
+#define _DRM_LOCK_IS_CONT(lock) ((lock) & _DRM_LOCK_CONT)
+#define _DRM_LOCKING_CONTEXT(lock) ((lock) & ~(_DRM_LOCK_HELD | _DRM_LOCK_CONT))
+typedef unsigned int drm_context_t;
+typedef unsigned int drm_drawable_t;
+typedef unsigned int drm_magic_t;
+struct drm_clip_rect {
+  unsigned short x1;
+  unsigned short y1;
+  unsigned short x2;
+  unsigned short y2;
+};
+struct drm_drawable_info {
+  unsigned int num_rects;
+  struct drm_clip_rect * rects;
+};
+struct drm_tex_region {
+  unsigned char next;
+  unsigned char prev;
+  unsigned char in_use;
+  unsigned char padding;
+  unsigned int age;
+};
+struct drm_hw_lock {
+  __volatile__ unsigned int lock;
+  char padding[60];
+};
+struct drm_version {
+  int version_major;
+  int version_minor;
+  int version_patchlevel;
+  __kernel_size_t name_len;
+  char __user * name;
+  __kernel_size_t date_len;
+  char __user * date;
+  __kernel_size_t desc_len;
+  char __user * desc;
+};
+struct drm_unique {
+  __kernel_size_t unique_len;
+  char __user * unique;
+};
+struct drm_list {
+  int count;
+  struct drm_version __user * version;
+};
+struct drm_block {
+  int unused;
+};
+struct drm_control {
+  enum {
+    DRM_ADD_COMMAND,
+    DRM_RM_COMMAND,
+    DRM_INST_HANDLER,
+    DRM_UNINST_HANDLER
+  } func;
+  int irq;
+};
+enum drm_map_type {
+  _DRM_FRAME_BUFFER = 0,
+  _DRM_REGISTERS = 1,
+  _DRM_SHM = 2,
+  _DRM_AGP = 3,
+  _DRM_SCATTER_GATHER = 4,
+  _DRM_CONSISTENT = 5
+};
+enum drm_map_flags {
+  _DRM_RESTRICTED = 0x01,
+  _DRM_READ_ONLY = 0x02,
+  _DRM_LOCKED = 0x04,
+  _DRM_KERNEL = 0x08,
+  _DRM_WRITE_COMBINING = 0x10,
+  _DRM_CONTAINS_LOCK = 0x20,
+  _DRM_REMOVABLE = 0x40,
+  _DRM_DRIVER = 0x80
+};
+struct drm_ctx_priv_map {
+  unsigned int ctx_id;
+  void * handle;
+};
+struct drm_map {
+  unsigned long offset;
+  unsigned long size;
+  enum drm_map_type type;
+  enum drm_map_flags flags;
+  void * handle;
+  int mtrr;
+};
+struct drm_client {
+  int idx;
+  int auth;
+  unsigned long pid;
+  unsigned long uid;
+  unsigned long magic;
+  unsigned long iocs;
+};
+enum drm_stat_type {
+  _DRM_STAT_LOCK,
+  _DRM_STAT_OPENS,
+  _DRM_STAT_CLOSES,
+  _DRM_STAT_IOCTLS,
+  _DRM_STAT_LOCKS,
+  _DRM_STAT_UNLOCKS,
+  _DRM_STAT_VALUE,
+  _DRM_STAT_BYTE,
+  _DRM_STAT_COUNT,
+  _DRM_STAT_IRQ,
+  _DRM_STAT_PRIMARY,
+  _DRM_STAT_SECONDARY,
+  _DRM_STAT_DMA,
+  _DRM_STAT_SPECIAL,
+  _DRM_STAT_MISSED
+};
+struct drm_stats {
+  unsigned long count;
+  struct {
+    unsigned long value;
+    enum drm_stat_type type;
+  } data[15];
+};
+enum drm_lock_flags {
+  _DRM_LOCK_READY = 0x01,
+  _DRM_LOCK_QUIESCENT = 0x02,
+  _DRM_LOCK_FLUSH = 0x04,
+  _DRM_LOCK_FLUSH_ALL = 0x08,
+  _DRM_HALT_ALL_QUEUES = 0x10,
+  _DRM_HALT_CUR_QUEUES = 0x20
+};
+struct drm_lock {
+  int context;
+  enum drm_lock_flags flags;
+};
+enum drm_dma_flags {
+  _DRM_DMA_BLOCK = 0x01,
+  _DRM_DMA_WHILE_LOCKED = 0x02,
+  _DRM_DMA_PRIORITY = 0x04,
+  _DRM_DMA_WAIT = 0x10,
+  _DRM_DMA_SMALLER_OK = 0x20,
+  _DRM_DMA_LARGER_OK = 0x40
+};
+struct drm_buf_desc {
+  int count;
+  int size;
+  int low_mark;
+  int high_mark;
+  enum {
+    _DRM_PAGE_ALIGN = 0x01,
+    _DRM_AGP_BUFFER = 0x02,
+    _DRM_SG_BUFFER = 0x04,
+    _DRM_FB_BUFFER = 0x08,
+    _DRM_PCI_BUFFER_RO = 0x10
+  } flags;
+  unsigned long agp_start;
+};
+struct drm_buf_info {
+  int count;
+  struct drm_buf_desc __user * list;
+};
+struct drm_buf_free {
+  int count;
+  int __user * list;
+};
+struct drm_buf_pub {
+  int idx;
+  int total;
+  int used;
+  void __user * address;
+};
+struct drm_buf_map {
+  int count;
+#ifdef __cplusplus
+  void __user * virt;
+#else
+  void __user * __linux_virtual;
+#endif
+  struct drm_buf_pub __user * list;
+};
+struct drm_dma {
+  int context;
+  int send_count;
+  int __user * send_indices;
+  int __user * send_sizes;
+  enum drm_dma_flags flags;
+  int request_count;
+  int request_size;
+  int __user * request_indices;
+  int __user * request_sizes;
+  int granted_count;
+};
+enum drm_ctx_flags {
+  _DRM_CONTEXT_PRESERVED = 0x01,
+  _DRM_CONTEXT_2DONLY = 0x02
+};
+struct drm_ctx {
+  drm_context_t handle;
+  enum drm_ctx_flags flags;
+};
+struct drm_ctx_res {
+  int count;
+  struct drm_ctx __user * contexts;
+};
+struct drm_draw {
+  drm_drawable_t handle;
+};
+typedef enum {
+  DRM_DRAWABLE_CLIPRECTS
+} drm_drawable_info_type_t;
+struct drm_update_draw {
+  drm_drawable_t handle;
+  unsigned int type;
+  unsigned int num;
+  unsigned long long data;
+};
+struct drm_auth {
+  drm_magic_t magic;
+};
+struct drm_irq_busid {
+  int irq;
+  int busnum;
+  int devnum;
+  int funcnum;
+};
+enum drm_vblank_seq_type {
+  _DRM_VBLANK_ABSOLUTE = 0x0,
+  _DRM_VBLANK_RELATIVE = 0x1,
+  _DRM_VBLANK_HIGH_CRTC_MASK = 0x0000003e,
+  _DRM_VBLANK_EVENT = 0x4000000,
+  _DRM_VBLANK_FLIP = 0x8000000,
+  _DRM_VBLANK_NEXTONMISS = 0x10000000,
+  _DRM_VBLANK_SECONDARY = 0x20000000,
+  _DRM_VBLANK_SIGNAL = 0x40000000
+};
+#define _DRM_VBLANK_HIGH_CRTC_SHIFT 1
+#define _DRM_VBLANK_TYPES_MASK (_DRM_VBLANK_ABSOLUTE | _DRM_VBLANK_RELATIVE)
+#define _DRM_VBLANK_FLAGS_MASK (_DRM_VBLANK_EVENT | _DRM_VBLANK_SIGNAL | _DRM_VBLANK_SECONDARY | _DRM_VBLANK_NEXTONMISS)
+struct drm_wait_vblank_request {
+  enum drm_vblank_seq_type type;
+  unsigned int sequence;
+  unsigned long signal;
+};
+struct drm_wait_vblank_reply {
+  enum drm_vblank_seq_type type;
+  unsigned int sequence;
+  long tval_sec;
+  long tval_usec;
+};
+union drm_wait_vblank {
+  struct drm_wait_vblank_request request;
+  struct drm_wait_vblank_reply reply;
+};
+#define _DRM_PRE_MODESET 1
+#define _DRM_POST_MODESET 2
+struct drm_modeset_ctl {
+  __u32 crtc;
+  __u32 cmd;
+};
+struct drm_agp_mode {
+  unsigned long mode;
+};
+struct drm_agp_buffer {
+  unsigned long size;
+  unsigned long handle;
+  unsigned long type;
+  unsigned long physical;
+};
+struct drm_agp_binding {
+  unsigned long handle;
+  unsigned long offset;
+};
+struct drm_agp_info {
+  int agp_version_major;
+  int agp_version_minor;
+  unsigned long mode;
+  unsigned long aperture_base;
+  unsigned long aperture_size;
+  unsigned long memory_allowed;
+  unsigned long memory_used;
+  unsigned short id_vendor;
+  unsigned short id_device;
+};
+struct drm_scatter_gather {
+  unsigned long size;
+  unsigned long handle;
+};
+struct drm_set_version {
+  int drm_di_major;
+  int drm_di_minor;
+  int drm_dd_major;
+  int drm_dd_minor;
+};
+struct drm_gem_close {
+  __u32 handle;
+  __u32 pad;
+};
+struct drm_gem_flink {
+  __u32 handle;
+  __u32 name;
+};
+struct drm_gem_open {
+  __u32 name;
+  __u32 handle;
+  __u64 size;
+};
+#define DRM_CAP_DUMB_BUFFER 0x1
+#define DRM_CAP_VBLANK_HIGH_CRTC 0x2
+#define DRM_CAP_DUMB_PREFERRED_DEPTH 0x3
+#define DRM_CAP_DUMB_PREFER_SHADOW 0x4
+#define DRM_CAP_PRIME 0x5
+#define DRM_PRIME_CAP_IMPORT 0x1
+#define DRM_PRIME_CAP_EXPORT 0x2
+#define DRM_CAP_TIMESTAMP_MONOTONIC 0x6
+#define DRM_CAP_ASYNC_PAGE_FLIP 0x7
+#define DRM_CAP_CURSOR_WIDTH 0x8
+#define DRM_CAP_CURSOR_HEIGHT 0x9
+#define DRM_CAP_ADDFB2_MODIFIERS 0x10
+#define DRM_CAP_PAGE_FLIP_TARGET 0x11
+#define DRM_CAP_CRTC_IN_VBLANK_EVENT 0x12
+#define DRM_CAP_SYNCOBJ 0x13
+#define DRM_CAP_SYNCOBJ_TIMELINE 0x14
+struct drm_get_cap {
+  __u64 capability;
+  __u64 value;
+};
+#define DRM_CLIENT_CAP_STEREO_3D 1
+#define DRM_CLIENT_CAP_UNIVERSAL_PLANES 2
+#define DRM_CLIENT_CAP_ATOMIC 3
+#define DRM_CLIENT_CAP_ASPECT_RATIO 4
+#define DRM_CLIENT_CAP_WRITEBACK_CONNECTORS 5
+struct drm_set_client_cap {
+  __u64 capability;
+  __u64 value;
+};
+#define DRM_RDWR O_RDWR
+#define DRM_CLOEXEC O_CLOEXEC
+struct drm_prime_handle {
+  __u32 handle;
+  __u32 flags;
+  __s32 fd;
+};
+struct drm_syncobj_create {
+  __u32 handle;
+#define DRM_SYNCOBJ_CREATE_SIGNALED (1 << 0)
+  __u32 flags;
+};
+struct drm_syncobj_destroy {
+  __u32 handle;
+  __u32 pad;
+};
+#define DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE (1 << 0)
+#define DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE (1 << 0)
+struct drm_syncobj_handle {
+  __u32 handle;
+  __u32 flags;
+  __s32 fd;
+  __u32 pad;
+};
+struct drm_syncobj_transfer {
+  __u32 src_handle;
+  __u32 dst_handle;
+  __u64 src_point;
+  __u64 dst_point;
+  __u32 flags;
+  __u32 pad;
+};
+#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL (1 << 0)
+#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT (1 << 1)
+#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE (1 << 2)
+struct drm_syncobj_wait {
+  __u64 handles;
+  __s64 timeout_nsec;
+  __u32 count_handles;
+  __u32 flags;
+  __u32 first_signaled;
+  __u32 pad;
+};
+struct drm_syncobj_timeline_wait {
+  __u64 handles;
+  __u64 points;
+  __s64 timeout_nsec;
+  __u32 count_handles;
+  __u32 flags;
+  __u32 first_signaled;
+  __u32 pad;
+};
+struct drm_syncobj_array {
+  __u64 handles;
+  __u32 count_handles;
+  __u32 pad;
+};
+#define DRM_SYNCOBJ_QUERY_FLAGS_LAST_SUBMITTED (1 << 0)
+struct drm_syncobj_timeline_array {
+  __u64 handles;
+  __u64 points;
+  __u32 count_handles;
+  __u32 flags;
+};
+struct drm_crtc_get_sequence {
+  __u32 crtc_id;
+  __u32 active;
+  __u64 sequence;
+  __s64 sequence_ns;
+};
+#define DRM_CRTC_SEQUENCE_RELATIVE 0x00000001
+#define DRM_CRTC_SEQUENCE_NEXT_ON_MISS 0x00000002
+struct drm_crtc_queue_sequence {
+  __u32 crtc_id;
+  __u32 flags;
+  __u64 sequence;
+  __u64 user_data;
+};
+#ifdef __cplusplus
+}
+#endif
+#include "drm_mode.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_IOCTL_BASE 'd'
+#define DRM_IO(nr) _IO(DRM_IOCTL_BASE, nr)
+#define DRM_IOR(nr,type) _IOR(DRM_IOCTL_BASE, nr, type)
+#define DRM_IOW(nr,type) _IOW(DRM_IOCTL_BASE, nr, type)
+#define DRM_IOWR(nr,type) _IOWR(DRM_IOCTL_BASE, nr, type)
+#define DRM_IOCTL_VERSION DRM_IOWR(0x00, struct drm_version)
+#define DRM_IOCTL_GET_UNIQUE DRM_IOWR(0x01, struct drm_unique)
+#define DRM_IOCTL_GET_MAGIC DRM_IOR(0x02, struct drm_auth)
+#define DRM_IOCTL_IRQ_BUSID DRM_IOWR(0x03, struct drm_irq_busid)
+#define DRM_IOCTL_GET_MAP DRM_IOWR(0x04, struct drm_map)
+#define DRM_IOCTL_GET_CLIENT DRM_IOWR(0x05, struct drm_client)
+#define DRM_IOCTL_GET_STATS DRM_IOR(0x06, struct drm_stats)
+#define DRM_IOCTL_SET_VERSION DRM_IOWR(0x07, struct drm_set_version)
+#define DRM_IOCTL_MODESET_CTL DRM_IOW(0x08, struct drm_modeset_ctl)
+#define DRM_IOCTL_GEM_CLOSE DRM_IOW(0x09, struct drm_gem_close)
+#define DRM_IOCTL_GEM_FLINK DRM_IOWR(0x0a, struct drm_gem_flink)
+#define DRM_IOCTL_GEM_OPEN DRM_IOWR(0x0b, struct drm_gem_open)
+#define DRM_IOCTL_GET_CAP DRM_IOWR(0x0c, struct drm_get_cap)
+#define DRM_IOCTL_SET_CLIENT_CAP DRM_IOW(0x0d, struct drm_set_client_cap)
+#define DRM_IOCTL_SET_UNIQUE DRM_IOW(0x10, struct drm_unique)
+#define DRM_IOCTL_AUTH_MAGIC DRM_IOW(0x11, struct drm_auth)
+#define DRM_IOCTL_BLOCK DRM_IOWR(0x12, struct drm_block)
+#define DRM_IOCTL_UNBLOCK DRM_IOWR(0x13, struct drm_block)
+#define DRM_IOCTL_CONTROL DRM_IOW(0x14, struct drm_control)
+#define DRM_IOCTL_ADD_MAP DRM_IOWR(0x15, struct drm_map)
+#define DRM_IOCTL_ADD_BUFS DRM_IOWR(0x16, struct drm_buf_desc)
+#define DRM_IOCTL_MARK_BUFS DRM_IOW(0x17, struct drm_buf_desc)
+#define DRM_IOCTL_INFO_BUFS DRM_IOWR(0x18, struct drm_buf_info)
+#define DRM_IOCTL_MAP_BUFS DRM_IOWR(0x19, struct drm_buf_map)
+#define DRM_IOCTL_FREE_BUFS DRM_IOW(0x1a, struct drm_buf_free)
+#define DRM_IOCTL_RM_MAP DRM_IOW(0x1b, struct drm_map)
+#define DRM_IOCTL_SET_SAREA_CTX DRM_IOW(0x1c, struct drm_ctx_priv_map)
+#define DRM_IOCTL_GET_SAREA_CTX DRM_IOWR(0x1d, struct drm_ctx_priv_map)
+#define DRM_IOCTL_SET_MASTER DRM_IO(0x1e)
+#define DRM_IOCTL_DROP_MASTER DRM_IO(0x1f)
+#define DRM_IOCTL_ADD_CTX DRM_IOWR(0x20, struct drm_ctx)
+#define DRM_IOCTL_RM_CTX DRM_IOWR(0x21, struct drm_ctx)
+#define DRM_IOCTL_MOD_CTX DRM_IOW(0x22, struct drm_ctx)
+#define DRM_IOCTL_GET_CTX DRM_IOWR(0x23, struct drm_ctx)
+#define DRM_IOCTL_SWITCH_CTX DRM_IOW(0x24, struct drm_ctx)
+#define DRM_IOCTL_NEW_CTX DRM_IOW(0x25, struct drm_ctx)
+#define DRM_IOCTL_RES_CTX DRM_IOWR(0x26, struct drm_ctx_res)
+#define DRM_IOCTL_ADD_DRAW DRM_IOWR(0x27, struct drm_draw)
+#define DRM_IOCTL_RM_DRAW DRM_IOWR(0x28, struct drm_draw)
+#define DRM_IOCTL_DMA DRM_IOWR(0x29, struct drm_dma)
+#define DRM_IOCTL_LOCK DRM_IOW(0x2a, struct drm_lock)
+#define DRM_IOCTL_UNLOCK DRM_IOW(0x2b, struct drm_lock)
+#define DRM_IOCTL_FINISH DRM_IOW(0x2c, struct drm_lock)
+#define DRM_IOCTL_PRIME_HANDLE_TO_FD DRM_IOWR(0x2d, struct drm_prime_handle)
+#define DRM_IOCTL_PRIME_FD_TO_HANDLE DRM_IOWR(0x2e, struct drm_prime_handle)
+#define DRM_IOCTL_AGP_ACQUIRE DRM_IO(0x30)
+#define DRM_IOCTL_AGP_RELEASE DRM_IO(0x31)
+#define DRM_IOCTL_AGP_ENABLE DRM_IOW(0x32, struct drm_agp_mode)
+#define DRM_IOCTL_AGP_INFO DRM_IOR(0x33, struct drm_agp_info)
+#define DRM_IOCTL_AGP_ALLOC DRM_IOWR(0x34, struct drm_agp_buffer)
+#define DRM_IOCTL_AGP_FREE DRM_IOW(0x35, struct drm_agp_buffer)
+#define DRM_IOCTL_AGP_BIND DRM_IOW(0x36, struct drm_agp_binding)
+#define DRM_IOCTL_AGP_UNBIND DRM_IOW(0x37, struct drm_agp_binding)
+#define DRM_IOCTL_SG_ALLOC DRM_IOWR(0x38, struct drm_scatter_gather)
+#define DRM_IOCTL_SG_FREE DRM_IOW(0x39, struct drm_scatter_gather)
+#define DRM_IOCTL_WAIT_VBLANK DRM_IOWR(0x3a, union drm_wait_vblank)
+#define DRM_IOCTL_CRTC_GET_SEQUENCE DRM_IOWR(0x3b, struct drm_crtc_get_sequence)
+#define DRM_IOCTL_CRTC_QUEUE_SEQUENCE DRM_IOWR(0x3c, struct drm_crtc_queue_sequence)
+#define DRM_IOCTL_UPDATE_DRAW DRM_IOW(0x3f, struct drm_update_draw)
+#define DRM_IOCTL_MODE_GETRESOURCES DRM_IOWR(0xA0, struct drm_mode_card_res)
+#define DRM_IOCTL_MODE_GETCRTC DRM_IOWR(0xA1, struct drm_mode_crtc)
+#define DRM_IOCTL_MODE_SETCRTC DRM_IOWR(0xA2, struct drm_mode_crtc)
+#define DRM_IOCTL_MODE_CURSOR DRM_IOWR(0xA3, struct drm_mode_cursor)
+#define DRM_IOCTL_MODE_GETGAMMA DRM_IOWR(0xA4, struct drm_mode_crtc_lut)
+#define DRM_IOCTL_MODE_SETGAMMA DRM_IOWR(0xA5, struct drm_mode_crtc_lut)
+#define DRM_IOCTL_MODE_GETENCODER DRM_IOWR(0xA6, struct drm_mode_get_encoder)
+#define DRM_IOCTL_MODE_GETCONNECTOR DRM_IOWR(0xA7, struct drm_mode_get_connector)
+#define DRM_IOCTL_MODE_ATTACHMODE DRM_IOWR(0xA8, struct drm_mode_mode_cmd)
+#define DRM_IOCTL_MODE_DETACHMODE DRM_IOWR(0xA9, struct drm_mode_mode_cmd)
+#define DRM_IOCTL_MODE_GETPROPERTY DRM_IOWR(0xAA, struct drm_mode_get_property)
+#define DRM_IOCTL_MODE_SETPROPERTY DRM_IOWR(0xAB, struct drm_mode_connector_set_property)
+#define DRM_IOCTL_MODE_GETPROPBLOB DRM_IOWR(0xAC, struct drm_mode_get_blob)
+#define DRM_IOCTL_MODE_GETFB DRM_IOWR(0xAD, struct drm_mode_fb_cmd)
+#define DRM_IOCTL_MODE_ADDFB DRM_IOWR(0xAE, struct drm_mode_fb_cmd)
+#define DRM_IOCTL_MODE_RMFB DRM_IOWR(0xAF, unsigned int)
+#define DRM_IOCTL_MODE_PAGE_FLIP DRM_IOWR(0xB0, struct drm_mode_crtc_page_flip)
+#define DRM_IOCTL_MODE_DIRTYFB DRM_IOWR(0xB1, struct drm_mode_fb_dirty_cmd)
+#define DRM_IOCTL_MODE_CREATE_DUMB DRM_IOWR(0xB2, struct drm_mode_create_dumb)
+#define DRM_IOCTL_MODE_MAP_DUMB DRM_IOWR(0xB3, struct drm_mode_map_dumb)
+#define DRM_IOCTL_MODE_DESTROY_DUMB DRM_IOWR(0xB4, struct drm_mode_destroy_dumb)
+#define DRM_IOCTL_MODE_GETPLANERESOURCES DRM_IOWR(0xB5, struct drm_mode_get_plane_res)
+#define DRM_IOCTL_MODE_GETPLANE DRM_IOWR(0xB6, struct drm_mode_get_plane)
+#define DRM_IOCTL_MODE_SETPLANE DRM_IOWR(0xB7, struct drm_mode_set_plane)
+#define DRM_IOCTL_MODE_ADDFB2 DRM_IOWR(0xB8, struct drm_mode_fb_cmd2)
+#define DRM_IOCTL_MODE_OBJ_GETPROPERTIES DRM_IOWR(0xB9, struct drm_mode_obj_get_properties)
+#define DRM_IOCTL_MODE_OBJ_SETPROPERTY DRM_IOWR(0xBA, struct drm_mode_obj_set_property)
+#define DRM_IOCTL_MODE_CURSOR2 DRM_IOWR(0xBB, struct drm_mode_cursor2)
+#define DRM_IOCTL_MODE_ATOMIC DRM_IOWR(0xBC, struct drm_mode_atomic)
+#define DRM_IOCTL_MODE_CREATEPROPBLOB DRM_IOWR(0xBD, struct drm_mode_create_blob)
+#define DRM_IOCTL_MODE_DESTROYPROPBLOB DRM_IOWR(0xBE, struct drm_mode_destroy_blob)
+#define DRM_IOCTL_SYNCOBJ_CREATE DRM_IOWR(0xBF, struct drm_syncobj_create)
+#define DRM_IOCTL_SYNCOBJ_DESTROY DRM_IOWR(0xC0, struct drm_syncobj_destroy)
+#define DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD DRM_IOWR(0xC1, struct drm_syncobj_handle)
+#define DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE DRM_IOWR(0xC2, struct drm_syncobj_handle)
+#define DRM_IOCTL_SYNCOBJ_WAIT DRM_IOWR(0xC3, struct drm_syncobj_wait)
+#define DRM_IOCTL_SYNCOBJ_RESET DRM_IOWR(0xC4, struct drm_syncobj_array)
+#define DRM_IOCTL_SYNCOBJ_SIGNAL DRM_IOWR(0xC5, struct drm_syncobj_array)
+#define DRM_IOCTL_MODE_CREATE_LEASE DRM_IOWR(0xC6, struct drm_mode_create_lease)
+#define DRM_IOCTL_MODE_LIST_LESSEES DRM_IOWR(0xC7, struct drm_mode_list_lessees)
+#define DRM_IOCTL_MODE_GET_LEASE DRM_IOWR(0xC8, struct drm_mode_get_lease)
+#define DRM_IOCTL_MODE_REVOKE_LEASE DRM_IOWR(0xC9, struct drm_mode_revoke_lease)
+#define DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT DRM_IOWR(0xCA, struct drm_syncobj_timeline_wait)
+#define DRM_IOCTL_SYNCOBJ_QUERY DRM_IOWR(0xCB, struct drm_syncobj_timeline_array)
+#define DRM_IOCTL_SYNCOBJ_TRANSFER DRM_IOWR(0xCC, struct drm_syncobj_transfer)
+#define DRM_IOCTL_SYNCOBJ_TIMELINE_SIGNAL DRM_IOWR(0xCD, struct drm_syncobj_timeline_array)
+#define DRM_IOCTL_MODE_GETFB2 DRM_IOWR(0xCE, struct drm_mode_fb_cmd2)
+#define DRM_COMMAND_BASE 0x40
+#define DRM_COMMAND_END 0xA0
+struct drm_event {
+  __u32 type;
+  __u32 length;
+};
+#define DRM_EVENT_VBLANK 0x01
+#define DRM_EVENT_FLIP_COMPLETE 0x02
+#define DRM_EVENT_CRTC_SEQUENCE 0x03
+struct drm_event_vblank {
+  struct drm_event base;
+  __u64 user_data;
+  __u32 tv_sec;
+  __u32 tv_usec;
+  __u32 sequence;
+  __u32 crtc_id;
+};
+struct drm_event_crtc_sequence {
+  struct drm_event base;
+  __u64 user_data;
+  __s64 time_ns;
+  __u64 sequence;
+};
+typedef struct drm_clip_rect drm_clip_rect_t;
+typedef struct drm_drawable_info drm_drawable_info_t;
+typedef struct drm_tex_region drm_tex_region_t;
+typedef struct drm_hw_lock drm_hw_lock_t;
+typedef struct drm_version drm_version_t;
+typedef struct drm_unique drm_unique_t;
+typedef struct drm_list drm_list_t;
+typedef struct drm_block drm_block_t;
+typedef struct drm_control drm_control_t;
+typedef enum drm_map_type drm_map_type_t;
+typedef enum drm_map_flags drm_map_flags_t;
+typedef struct drm_ctx_priv_map drm_ctx_priv_map_t;
+typedef struct drm_map drm_map_t;
+typedef struct drm_client drm_client_t;
+typedef enum drm_stat_type drm_stat_type_t;
+typedef struct drm_stats drm_stats_t;
+typedef enum drm_lock_flags drm_lock_flags_t;
+typedef struct drm_lock drm_lock_t;
+typedef enum drm_dma_flags drm_dma_flags_t;
+typedef struct drm_buf_desc drm_buf_desc_t;
+typedef struct drm_buf_info drm_buf_info_t;
+typedef struct drm_buf_free drm_buf_free_t;
+typedef struct drm_buf_pub drm_buf_pub_t;
+typedef struct drm_buf_map drm_buf_map_t;
+typedef struct drm_dma drm_dma_t;
+typedef union drm_wait_vblank drm_wait_vblank_t;
+typedef struct drm_agp_mode drm_agp_mode_t;
+typedef enum drm_ctx_flags drm_ctx_flags_t;
+typedef struct drm_ctx drm_ctx_t;
+typedef struct drm_ctx_res drm_ctx_res_t;
+typedef struct drm_draw drm_draw_t;
+typedef struct drm_update_draw drm_update_draw_t;
+typedef struct drm_auth drm_auth_t;
+typedef struct drm_irq_busid drm_irq_busid_t;
+typedef enum drm_vblank_seq_type drm_vblank_seq_type_t;
+typedef struct drm_agp_buffer drm_agp_buffer_t;
+typedef struct drm_agp_binding drm_agp_binding_t;
+typedef struct drm_agp_info drm_agp_info_t;
+typedef struct drm_scatter_gather drm_scatter_gather_t;
+typedef struct drm_set_version drm_set_version_t;
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/drm_fourcc.h b/i686-linux-musl/include/drm/drm_fourcc.h
new file mode 100644
index 0000000..2b5d202
--- /dev/null
+++ b/i686-linux-musl/include/drm/drm_fourcc.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 DRM_FOURCC_H
+#define DRM_FOURCC_H
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define fourcc_code(a,b,c,d) ((__u32) (a) | ((__u32) (b) << 8) | ((__u32) (c) << 16) | ((__u32) (d) << 24))
+#define DRM_FORMAT_BIG_ENDIAN (1U << 31)
+#define DRM_FORMAT_INVALID 0
+#define DRM_FORMAT_C8 fourcc_code('C', '8', ' ', ' ')
+#define DRM_FORMAT_R8 fourcc_code('R', '8', ' ', ' ')
+#define DRM_FORMAT_R10 fourcc_code('R', '1', '0', ' ')
+#define DRM_FORMAT_R12 fourcc_code('R', '1', '2', ' ')
+#define DRM_FORMAT_R16 fourcc_code('R', '1', '6', ' ')
+#define DRM_FORMAT_RG88 fourcc_code('R', 'G', '8', '8')
+#define DRM_FORMAT_GR88 fourcc_code('G', 'R', '8', '8')
+#define DRM_FORMAT_RG1616 fourcc_code('R', 'G', '3', '2')
+#define DRM_FORMAT_GR1616 fourcc_code('G', 'R', '3', '2')
+#define DRM_FORMAT_RGB332 fourcc_code('R', 'G', 'B', '8')
+#define DRM_FORMAT_BGR233 fourcc_code('B', 'G', 'R', '8')
+#define DRM_FORMAT_XRGB4444 fourcc_code('X', 'R', '1', '2')
+#define DRM_FORMAT_XBGR4444 fourcc_code('X', 'B', '1', '2')
+#define DRM_FORMAT_RGBX4444 fourcc_code('R', 'X', '1', '2')
+#define DRM_FORMAT_BGRX4444 fourcc_code('B', 'X', '1', '2')
+#define DRM_FORMAT_ARGB4444 fourcc_code('A', 'R', '1', '2')
+#define DRM_FORMAT_ABGR4444 fourcc_code('A', 'B', '1', '2')
+#define DRM_FORMAT_RGBA4444 fourcc_code('R', 'A', '1', '2')
+#define DRM_FORMAT_BGRA4444 fourcc_code('B', 'A', '1', '2')
+#define DRM_FORMAT_XRGB1555 fourcc_code('X', 'R', '1', '5')
+#define DRM_FORMAT_XBGR1555 fourcc_code('X', 'B', '1', '5')
+#define DRM_FORMAT_RGBX5551 fourcc_code('R', 'X', '1', '5')
+#define DRM_FORMAT_BGRX5551 fourcc_code('B', 'X', '1', '5')
+#define DRM_FORMAT_ARGB1555 fourcc_code('A', 'R', '1', '5')
+#define DRM_FORMAT_ABGR1555 fourcc_code('A', 'B', '1', '5')
+#define DRM_FORMAT_RGBA5551 fourcc_code('R', 'A', '1', '5')
+#define DRM_FORMAT_BGRA5551 fourcc_code('B', 'A', '1', '5')
+#define DRM_FORMAT_RGB565 fourcc_code('R', 'G', '1', '6')
+#define DRM_FORMAT_BGR565 fourcc_code('B', 'G', '1', '6')
+#define DRM_FORMAT_RGB888 fourcc_code('R', 'G', '2', '4')
+#define DRM_FORMAT_BGR888 fourcc_code('B', 'G', '2', '4')
+#define DRM_FORMAT_XRGB8888 fourcc_code('X', 'R', '2', '4')
+#define DRM_FORMAT_XBGR8888 fourcc_code('X', 'B', '2', '4')
+#define DRM_FORMAT_RGBX8888 fourcc_code('R', 'X', '2', '4')
+#define DRM_FORMAT_BGRX8888 fourcc_code('B', 'X', '2', '4')
+#define DRM_FORMAT_ARGB8888 fourcc_code('A', 'R', '2', '4')
+#define DRM_FORMAT_ABGR8888 fourcc_code('A', 'B', '2', '4')
+#define DRM_FORMAT_RGBA8888 fourcc_code('R', 'A', '2', '4')
+#define DRM_FORMAT_BGRA8888 fourcc_code('B', 'A', '2', '4')
+#define DRM_FORMAT_XRGB2101010 fourcc_code('X', 'R', '3', '0')
+#define DRM_FORMAT_XBGR2101010 fourcc_code('X', 'B', '3', '0')
+#define DRM_FORMAT_RGBX1010102 fourcc_code('R', 'X', '3', '0')
+#define DRM_FORMAT_BGRX1010102 fourcc_code('B', 'X', '3', '0')
+#define DRM_FORMAT_ARGB2101010 fourcc_code('A', 'R', '3', '0')
+#define DRM_FORMAT_ABGR2101010 fourcc_code('A', 'B', '3', '0')
+#define DRM_FORMAT_RGBA1010102 fourcc_code('R', 'A', '3', '0')
+#define DRM_FORMAT_BGRA1010102 fourcc_code('B', 'A', '3', '0')
+#define DRM_FORMAT_XRGB16161616 fourcc_code('X', 'R', '4', '8')
+#define DRM_FORMAT_XBGR16161616 fourcc_code('X', 'B', '4', '8')
+#define DRM_FORMAT_ARGB16161616 fourcc_code('A', 'R', '4', '8')
+#define DRM_FORMAT_ABGR16161616 fourcc_code('A', 'B', '4', '8')
+#define DRM_FORMAT_XRGB16161616F fourcc_code('X', 'R', '4', 'H')
+#define DRM_FORMAT_XBGR16161616F fourcc_code('X', 'B', '4', 'H')
+#define DRM_FORMAT_ARGB16161616F fourcc_code('A', 'R', '4', 'H')
+#define DRM_FORMAT_ABGR16161616F fourcc_code('A', 'B', '4', 'H')
+#define DRM_FORMAT_AXBXGXRX106106106106 fourcc_code('A', 'B', '1', '0')
+#define DRM_FORMAT_YUYV fourcc_code('Y', 'U', 'Y', 'V')
+#define DRM_FORMAT_YVYU fourcc_code('Y', 'V', 'Y', 'U')
+#define DRM_FORMAT_UYVY fourcc_code('U', 'Y', 'V', 'Y')
+#define DRM_FORMAT_VYUY fourcc_code('V', 'Y', 'U', 'Y')
+#define DRM_FORMAT_AYUV fourcc_code('A', 'Y', 'U', 'V')
+#define DRM_FORMAT_XYUV8888 fourcc_code('X', 'Y', 'U', 'V')
+#define DRM_FORMAT_VUY888 fourcc_code('V', 'U', '2', '4')
+#define DRM_FORMAT_VUY101010 fourcc_code('V', 'U', '3', '0')
+#define DRM_FORMAT_Y210 fourcc_code('Y', '2', '1', '0')
+#define DRM_FORMAT_Y212 fourcc_code('Y', '2', '1', '2')
+#define DRM_FORMAT_Y216 fourcc_code('Y', '2', '1', '6')
+#define DRM_FORMAT_Y410 fourcc_code('Y', '4', '1', '0')
+#define DRM_FORMAT_Y412 fourcc_code('Y', '4', '1', '2')
+#define DRM_FORMAT_Y416 fourcc_code('Y', '4', '1', '6')
+#define DRM_FORMAT_XVYU2101010 fourcc_code('X', 'V', '3', '0')
+#define DRM_FORMAT_XVYU12_16161616 fourcc_code('X', 'V', '3', '6')
+#define DRM_FORMAT_XVYU16161616 fourcc_code('X', 'V', '4', '8')
+#define DRM_FORMAT_Y0L0 fourcc_code('Y', '0', 'L', '0')
+#define DRM_FORMAT_X0L0 fourcc_code('X', '0', 'L', '0')
+#define DRM_FORMAT_Y0L2 fourcc_code('Y', '0', 'L', '2')
+#define DRM_FORMAT_X0L2 fourcc_code('X', '0', 'L', '2')
+#define DRM_FORMAT_YUV420_8BIT fourcc_code('Y', 'U', '0', '8')
+#define DRM_FORMAT_YUV420_10BIT fourcc_code('Y', 'U', '1', '0')
+#define DRM_FORMAT_XRGB8888_A8 fourcc_code('X', 'R', 'A', '8')
+#define DRM_FORMAT_XBGR8888_A8 fourcc_code('X', 'B', 'A', '8')
+#define DRM_FORMAT_RGBX8888_A8 fourcc_code('R', 'X', 'A', '8')
+#define DRM_FORMAT_BGRX8888_A8 fourcc_code('B', 'X', 'A', '8')
+#define DRM_FORMAT_RGB888_A8 fourcc_code('R', '8', 'A', '8')
+#define DRM_FORMAT_BGR888_A8 fourcc_code('B', '8', 'A', '8')
+#define DRM_FORMAT_RGB565_A8 fourcc_code('R', '5', 'A', '8')
+#define DRM_FORMAT_BGR565_A8 fourcc_code('B', '5', 'A', '8')
+#define DRM_FORMAT_NV12 fourcc_code('N', 'V', '1', '2')
+#define DRM_FORMAT_NV21 fourcc_code('N', 'V', '2', '1')
+#define DRM_FORMAT_NV16 fourcc_code('N', 'V', '1', '6')
+#define DRM_FORMAT_NV61 fourcc_code('N', 'V', '6', '1')
+#define DRM_FORMAT_NV24 fourcc_code('N', 'V', '2', '4')
+#define DRM_FORMAT_NV42 fourcc_code('N', 'V', '4', '2')
+#define DRM_FORMAT_NV15 fourcc_code('N', 'V', '1', '5')
+#define DRM_FORMAT_P210 fourcc_code('P', '2', '1', '0')
+#define DRM_FORMAT_P010 fourcc_code('P', '0', '1', '0')
+#define DRM_FORMAT_P012 fourcc_code('P', '0', '1', '2')
+#define DRM_FORMAT_P016 fourcc_code('P', '0', '1', '6')
+#define DRM_FORMAT_Q410 fourcc_code('Q', '4', '1', '0')
+#define DRM_FORMAT_Q401 fourcc_code('Q', '4', '0', '1')
+#define DRM_FORMAT_YUV410 fourcc_code('Y', 'U', 'V', '9')
+#define DRM_FORMAT_YVU410 fourcc_code('Y', 'V', 'U', '9')
+#define DRM_FORMAT_YUV411 fourcc_code('Y', 'U', '1', '1')
+#define DRM_FORMAT_YVU411 fourcc_code('Y', 'V', '1', '1')
+#define DRM_FORMAT_YUV420 fourcc_code('Y', 'U', '1', '2')
+#define DRM_FORMAT_YVU420 fourcc_code('Y', 'V', '1', '2')
+#define DRM_FORMAT_YUV422 fourcc_code('Y', 'U', '1', '6')
+#define DRM_FORMAT_YVU422 fourcc_code('Y', 'V', '1', '6')
+#define DRM_FORMAT_YUV444 fourcc_code('Y', 'U', '2', '4')
+#define DRM_FORMAT_YVU444 fourcc_code('Y', 'V', '2', '4')
+#define DRM_FORMAT_MOD_VENDOR_NONE 0
+#define DRM_FORMAT_MOD_VENDOR_INTEL 0x01
+#define DRM_FORMAT_MOD_VENDOR_AMD 0x02
+#define DRM_FORMAT_MOD_VENDOR_NVIDIA 0x03
+#define DRM_FORMAT_MOD_VENDOR_SAMSUNG 0x04
+#define DRM_FORMAT_MOD_VENDOR_QCOM 0x05
+#define DRM_FORMAT_MOD_VENDOR_VIVANTE 0x06
+#define DRM_FORMAT_MOD_VENDOR_BROADCOM 0x07
+#define DRM_FORMAT_MOD_VENDOR_ARM 0x08
+#define DRM_FORMAT_MOD_VENDOR_ALLWINNER 0x09
+#define DRM_FORMAT_MOD_VENDOR_AMLOGIC 0x0a
+#define DRM_FORMAT_RESERVED ((1ULL << 56) - 1)
+#define fourcc_mod_get_vendor(modifier) (((modifier) >> 56) & 0xff)
+#define fourcc_mod_is_vendor(modifier,vendor) (fourcc_mod_get_vendor(modifier) == DRM_FORMAT_MOD_VENDOR_ ##vendor)
+#define fourcc_mod_code(vendor,val) ((((__u64) DRM_FORMAT_MOD_VENDOR_ ##vendor) << 56) | ((val) & 0x00ffffffffffffffULL))
+#define DRM_FORMAT_MOD_GENERIC_16_16_TILE DRM_FORMAT_MOD_SAMSUNG_16_16_TILE
+#define DRM_FORMAT_MOD_INVALID fourcc_mod_code(NONE, DRM_FORMAT_RESERVED)
+#define DRM_FORMAT_MOD_LINEAR fourcc_mod_code(NONE, 0)
+#define DRM_FORMAT_MOD_NONE 0
+#define I915_FORMAT_MOD_X_TILED fourcc_mod_code(INTEL, 1)
+#define I915_FORMAT_MOD_Y_TILED fourcc_mod_code(INTEL, 2)
+#define I915_FORMAT_MOD_Yf_TILED fourcc_mod_code(INTEL, 3)
+#define I915_FORMAT_MOD_Y_TILED_CCS fourcc_mod_code(INTEL, 4)
+#define I915_FORMAT_MOD_Yf_TILED_CCS fourcc_mod_code(INTEL, 5)
+#define I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS fourcc_mod_code(INTEL, 6)
+#define I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS fourcc_mod_code(INTEL, 7)
+#define I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC fourcc_mod_code(INTEL, 8)
+#define DRM_FORMAT_MOD_SAMSUNG_64_32_TILE fourcc_mod_code(SAMSUNG, 1)
+#define DRM_FORMAT_MOD_SAMSUNG_16_16_TILE fourcc_mod_code(SAMSUNG, 2)
+#define DRM_FORMAT_MOD_QCOM_COMPRESSED fourcc_mod_code(QCOM, 1)
+#define DRM_FORMAT_MOD_VIVANTE_TILED fourcc_mod_code(VIVANTE, 1)
+#define DRM_FORMAT_MOD_VIVANTE_SUPER_TILED fourcc_mod_code(VIVANTE, 2)
+#define DRM_FORMAT_MOD_VIVANTE_SPLIT_TILED fourcc_mod_code(VIVANTE, 3)
+#define DRM_FORMAT_MOD_VIVANTE_SPLIT_SUPER_TILED fourcc_mod_code(VIVANTE, 4)
+#define DRM_FORMAT_MOD_NVIDIA_TEGRA_TILED fourcc_mod_code(NVIDIA, 1)
+#define DRM_FORMAT_MOD_NVIDIA_BLOCK_LINEAR_2D(c,s,g,k,h) fourcc_mod_code(NVIDIA, (0x10 | ((h) & 0xf) | (((k) & 0xff) << 12) | (((g) & 0x3) << 20) | (((s) & 0x1) << 22) | (((c) & 0x7) << 23)))
+#define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(v) DRM_FORMAT_MOD_NVIDIA_BLOCK_LINEAR_2D(0, 0, 0, 0, (v))
+#define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_ONE_GOB DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(0)
+#define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_TWO_GOB DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(1)
+#define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_FOUR_GOB DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(2)
+#define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_EIGHT_GOB DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(3)
+#define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_SIXTEEN_GOB DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(4)
+#define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_THIRTYTWO_GOB DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(5)
+#define __fourcc_mod_broadcom_param_shift 8
+#define __fourcc_mod_broadcom_param_bits 48
+#define fourcc_mod_broadcom_code(val,params) fourcc_mod_code(BROADCOM, ((((__u64) params) << __fourcc_mod_broadcom_param_shift) | val))
+#define fourcc_mod_broadcom_param(m) ((int) (((m) >> __fourcc_mod_broadcom_param_shift) & ((1ULL << __fourcc_mod_broadcom_param_bits) - 1)))
+#define fourcc_mod_broadcom_mod(m) ((m) & ~(((1ULL << __fourcc_mod_broadcom_param_bits) - 1) << __fourcc_mod_broadcom_param_shift))
+#define DRM_FORMAT_MOD_BROADCOM_VC4_T_TILED fourcc_mod_code(BROADCOM, 1)
+#define DRM_FORMAT_MOD_BROADCOM_SAND32_COL_HEIGHT(v) fourcc_mod_broadcom_code(2, v)
+#define DRM_FORMAT_MOD_BROADCOM_SAND64_COL_HEIGHT(v) fourcc_mod_broadcom_code(3, v)
+#define DRM_FORMAT_MOD_BROADCOM_SAND128_COL_HEIGHT(v) fourcc_mod_broadcom_code(4, v)
+#define DRM_FORMAT_MOD_BROADCOM_SAND256_COL_HEIGHT(v) fourcc_mod_broadcom_code(5, v)
+#define DRM_FORMAT_MOD_BROADCOM_SAND32 DRM_FORMAT_MOD_BROADCOM_SAND32_COL_HEIGHT(0)
+#define DRM_FORMAT_MOD_BROADCOM_SAND64 DRM_FORMAT_MOD_BROADCOM_SAND64_COL_HEIGHT(0)
+#define DRM_FORMAT_MOD_BROADCOM_SAND128 DRM_FORMAT_MOD_BROADCOM_SAND128_COL_HEIGHT(0)
+#define DRM_FORMAT_MOD_BROADCOM_SAND256 DRM_FORMAT_MOD_BROADCOM_SAND256_COL_HEIGHT(0)
+#define DRM_FORMAT_MOD_BROADCOM_UIF fourcc_mod_code(BROADCOM, 6)
+#define DRM_FORMAT_MOD_ARM_CODE(__type,__val) fourcc_mod_code(ARM, ((__u64) (__type) << 52) | ((__val) & 0x000fffffffffffffULL))
+#define DRM_FORMAT_MOD_ARM_TYPE_AFBC 0x00
+#define DRM_FORMAT_MOD_ARM_TYPE_MISC 0x01
+#define DRM_FORMAT_MOD_ARM_AFBC(__afbc_mode) DRM_FORMAT_MOD_ARM_CODE(DRM_FORMAT_MOD_ARM_TYPE_AFBC, __afbc_mode)
+#define AFBC_FORMAT_MOD_BLOCK_SIZE_MASK 0xf
+#define AFBC_FORMAT_MOD_BLOCK_SIZE_16x16 (1ULL)
+#define AFBC_FORMAT_MOD_BLOCK_SIZE_32x8 (2ULL)
+#define AFBC_FORMAT_MOD_BLOCK_SIZE_64x4 (3ULL)
+#define AFBC_FORMAT_MOD_BLOCK_SIZE_32x8_64x4 (4ULL)
+#define AFBC_FORMAT_MOD_YTR (1ULL << 4)
+#define AFBC_FORMAT_MOD_SPLIT (1ULL << 5)
+#define AFBC_FORMAT_MOD_SPARSE (1ULL << 6)
+#define AFBC_FORMAT_MOD_CBR (1ULL << 7)
+#define AFBC_FORMAT_MOD_TILED (1ULL << 8)
+#define AFBC_FORMAT_MOD_SC (1ULL << 9)
+#define AFBC_FORMAT_MOD_DB (1ULL << 10)
+#define AFBC_FORMAT_MOD_BCH (1ULL << 11)
+#define AFBC_FORMAT_MOD_USM (1ULL << 12)
+#define DRM_FORMAT_MOD_ARM_TYPE_AFRC 0x02
+#define DRM_FORMAT_MOD_ARM_AFRC(__afrc_mode) DRM_FORMAT_MOD_ARM_CODE(DRM_FORMAT_MOD_ARM_TYPE_AFRC, __afrc_mode)
+#define AFRC_FORMAT_MOD_CU_SIZE_MASK 0xf
+#define AFRC_FORMAT_MOD_CU_SIZE_16 (1ULL)
+#define AFRC_FORMAT_MOD_CU_SIZE_24 (2ULL)
+#define AFRC_FORMAT_MOD_CU_SIZE_32 (3ULL)
+#define AFRC_FORMAT_MOD_CU_SIZE_P0(__afrc_cu_size) (__afrc_cu_size)
+#define AFRC_FORMAT_MOD_CU_SIZE_P12(__afrc_cu_size) ((__afrc_cu_size) << 4)
+#define AFRC_FORMAT_MOD_LAYOUT_SCAN (1ULL << 8)
+#define DRM_FORMAT_MOD_ARM_16X16_BLOCK_U_INTERLEAVED DRM_FORMAT_MOD_ARM_CODE(DRM_FORMAT_MOD_ARM_TYPE_MISC, 1ULL)
+#define DRM_FORMAT_MOD_ALLWINNER_TILED fourcc_mod_code(ALLWINNER, 1)
+#define __fourcc_mod_amlogic_layout_mask 0xff
+#define __fourcc_mod_amlogic_options_shift 8
+#define __fourcc_mod_amlogic_options_mask 0xff
+#define DRM_FORMAT_MOD_AMLOGIC_FBC(__layout,__options) fourcc_mod_code(AMLOGIC, ((__layout) & __fourcc_mod_amlogic_layout_mask) | (((__options) & __fourcc_mod_amlogic_options_mask) << __fourcc_mod_amlogic_options_shift))
+#define AMLOGIC_FBC_LAYOUT_BASIC (1ULL)
+#define AMLOGIC_FBC_LAYOUT_SCATTER (2ULL)
+#define AMLOGIC_FBC_OPTION_MEM_SAVING (1ULL << 0)
+#define AMD_FMT_MOD fourcc_mod_code(AMD, 0)
+#define IS_AMD_FMT_MOD(val) (((val) >> 56) == DRM_FORMAT_MOD_VENDOR_AMD)
+#define AMD_FMT_MOD_TILE_VER_GFX9 1
+#define AMD_FMT_MOD_TILE_VER_GFX10 2
+#define AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS 3
+#define AMD_FMT_MOD_TILE_GFX9_64K_S 9
+#define AMD_FMT_MOD_TILE_GFX9_64K_D 10
+#define AMD_FMT_MOD_TILE_GFX9_64K_S_X 25
+#define AMD_FMT_MOD_TILE_GFX9_64K_D_X 26
+#define AMD_FMT_MOD_TILE_GFX9_64K_R_X 27
+#define AMD_FMT_MOD_DCC_BLOCK_64B 0
+#define AMD_FMT_MOD_DCC_BLOCK_128B 1
+#define AMD_FMT_MOD_DCC_BLOCK_256B 2
+#define AMD_FMT_MOD_TILE_VERSION_SHIFT 0
+#define AMD_FMT_MOD_TILE_VERSION_MASK 0xFF
+#define AMD_FMT_MOD_TILE_SHIFT 8
+#define AMD_FMT_MOD_TILE_MASK 0x1F
+#define AMD_FMT_MOD_DCC_SHIFT 13
+#define AMD_FMT_MOD_DCC_MASK 0x1
+#define AMD_FMT_MOD_DCC_RETILE_SHIFT 14
+#define AMD_FMT_MOD_DCC_RETILE_MASK 0x1
+#define AMD_FMT_MOD_DCC_PIPE_ALIGN_SHIFT 15
+#define AMD_FMT_MOD_DCC_PIPE_ALIGN_MASK 0x1
+#define AMD_FMT_MOD_DCC_INDEPENDENT_64B_SHIFT 16
+#define AMD_FMT_MOD_DCC_INDEPENDENT_64B_MASK 0x1
+#define AMD_FMT_MOD_DCC_INDEPENDENT_128B_SHIFT 17
+#define AMD_FMT_MOD_DCC_INDEPENDENT_128B_MASK 0x1
+#define AMD_FMT_MOD_DCC_MAX_COMPRESSED_BLOCK_SHIFT 18
+#define AMD_FMT_MOD_DCC_MAX_COMPRESSED_BLOCK_MASK 0x3
+#define AMD_FMT_MOD_DCC_CONSTANT_ENCODE_SHIFT 20
+#define AMD_FMT_MOD_DCC_CONSTANT_ENCODE_MASK 0x1
+#define AMD_FMT_MOD_PIPE_XOR_BITS_SHIFT 21
+#define AMD_FMT_MOD_PIPE_XOR_BITS_MASK 0x7
+#define AMD_FMT_MOD_BANK_XOR_BITS_SHIFT 24
+#define AMD_FMT_MOD_BANK_XOR_BITS_MASK 0x7
+#define AMD_FMT_MOD_PACKERS_SHIFT 27
+#define AMD_FMT_MOD_PACKERS_MASK 0x7
+#define AMD_FMT_MOD_RB_SHIFT 30
+#define AMD_FMT_MOD_RB_MASK 0x7
+#define AMD_FMT_MOD_PIPE_SHIFT 33
+#define AMD_FMT_MOD_PIPE_MASK 0x7
+#define AMD_FMT_MOD_SET(field,value) ((uint64_t) (value) << AMD_FMT_MOD_ ##field ##_SHIFT)
+#define AMD_FMT_MOD_GET(field,value) (((value) >> AMD_FMT_MOD_ ##field ##_SHIFT) & AMD_FMT_MOD_ ##field ##_MASK)
+#define AMD_FMT_MOD_CLEAR(field) (~((uint64_t) AMD_FMT_MOD_ ##field ##_MASK << AMD_FMT_MOD_ ##field ##_SHIFT))
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/drm_mode.h b/i686-linux-musl/include/drm/drm_mode.h
new file mode 100644
index 0000000..9a6a6d9
--- /dev/null
+++ b/i686-linux-musl/include/drm/drm_mode.h
@@ -0,0 +1,501 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _DRM_MODE_H
+#define _DRM_MODE_H
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_CONNECTOR_NAME_LEN 32
+#define DRM_DISPLAY_MODE_LEN 32
+#define DRM_PROP_NAME_LEN 32
+#define DRM_MODE_TYPE_BUILTIN (1 << 0)
+#define DRM_MODE_TYPE_CLOCK_C ((1 << 1) | DRM_MODE_TYPE_BUILTIN)
+#define DRM_MODE_TYPE_CRTC_C ((1 << 2) | DRM_MODE_TYPE_BUILTIN)
+#define DRM_MODE_TYPE_PREFERRED (1 << 3)
+#define DRM_MODE_TYPE_DEFAULT (1 << 4)
+#define DRM_MODE_TYPE_USERDEF (1 << 5)
+#define DRM_MODE_TYPE_DRIVER (1 << 6)
+#define DRM_MODE_TYPE_ALL (DRM_MODE_TYPE_PREFERRED | DRM_MODE_TYPE_USERDEF | DRM_MODE_TYPE_DRIVER)
+#define DRM_MODE_FLAG_PHSYNC (1 << 0)
+#define DRM_MODE_FLAG_NHSYNC (1 << 1)
+#define DRM_MODE_FLAG_PVSYNC (1 << 2)
+#define DRM_MODE_FLAG_NVSYNC (1 << 3)
+#define DRM_MODE_FLAG_INTERLACE (1 << 4)
+#define DRM_MODE_FLAG_DBLSCAN (1 << 5)
+#define DRM_MODE_FLAG_CSYNC (1 << 6)
+#define DRM_MODE_FLAG_PCSYNC (1 << 7)
+#define DRM_MODE_FLAG_NCSYNC (1 << 8)
+#define DRM_MODE_FLAG_HSKEW (1 << 9)
+#define DRM_MODE_FLAG_BCAST (1 << 10)
+#define DRM_MODE_FLAG_PIXMUX (1 << 11)
+#define DRM_MODE_FLAG_DBLCLK (1 << 12)
+#define DRM_MODE_FLAG_CLKDIV2 (1 << 13)
+#define DRM_MODE_FLAG_3D_MASK (0x1f << 14)
+#define DRM_MODE_FLAG_3D_NONE (0 << 14)
+#define DRM_MODE_FLAG_3D_FRAME_PACKING (1 << 14)
+#define DRM_MODE_FLAG_3D_FIELD_ALTERNATIVE (2 << 14)
+#define DRM_MODE_FLAG_3D_LINE_ALTERNATIVE (3 << 14)
+#define DRM_MODE_FLAG_3D_SIDE_BY_SIDE_FULL (4 << 14)
+#define DRM_MODE_FLAG_3D_L_DEPTH (5 << 14)
+#define DRM_MODE_FLAG_3D_L_DEPTH_GFX_GFX_DEPTH (6 << 14)
+#define DRM_MODE_FLAG_3D_TOP_AND_BOTTOM (7 << 14)
+#define DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF (8 << 14)
+#define DRM_MODE_PICTURE_ASPECT_NONE 0
+#define DRM_MODE_PICTURE_ASPECT_4_3 1
+#define DRM_MODE_PICTURE_ASPECT_16_9 2
+#define DRM_MODE_PICTURE_ASPECT_64_27 3
+#define DRM_MODE_PICTURE_ASPECT_256_135 4
+#define DRM_MODE_CONTENT_TYPE_NO_DATA 0
+#define DRM_MODE_CONTENT_TYPE_GRAPHICS 1
+#define DRM_MODE_CONTENT_TYPE_PHOTO 2
+#define DRM_MODE_CONTENT_TYPE_CINEMA 3
+#define DRM_MODE_CONTENT_TYPE_GAME 4
+#define DRM_MODE_FLAG_PIC_AR_MASK (0x0F << 19)
+#define DRM_MODE_FLAG_PIC_AR_NONE (DRM_MODE_PICTURE_ASPECT_NONE << 19)
+#define DRM_MODE_FLAG_PIC_AR_4_3 (DRM_MODE_PICTURE_ASPECT_4_3 << 19)
+#define DRM_MODE_FLAG_PIC_AR_16_9 (DRM_MODE_PICTURE_ASPECT_16_9 << 19)
+#define DRM_MODE_FLAG_PIC_AR_64_27 (DRM_MODE_PICTURE_ASPECT_64_27 << 19)
+#define DRM_MODE_FLAG_PIC_AR_256_135 (DRM_MODE_PICTURE_ASPECT_256_135 << 19)
+#define DRM_MODE_FLAG_ALL (DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLSCAN | DRM_MODE_FLAG_CSYNC | DRM_MODE_FLAG_PCSYNC | DRM_MODE_FLAG_NCSYNC | DRM_MODE_FLAG_HSKEW | DRM_MODE_FLAG_DBLCLK | DRM_MODE_FLAG_CLKDIV2 | DRM_MODE_FLAG_3D_MASK)
+#define DRM_MODE_DPMS_ON 0
+#define DRM_MODE_DPMS_STANDBY 1
+#define DRM_MODE_DPMS_SUSPEND 2
+#define DRM_MODE_DPMS_OFF 3
+#define DRM_MODE_SCALE_NONE 0
+#define DRM_MODE_SCALE_FULLSCREEN 1
+#define DRM_MODE_SCALE_CENTER 2
+#define DRM_MODE_SCALE_ASPECT 3
+#define DRM_MODE_DITHERING_OFF 0
+#define DRM_MODE_DITHERING_ON 1
+#define DRM_MODE_DITHERING_AUTO 2
+#define DRM_MODE_DIRTY_OFF 0
+#define DRM_MODE_DIRTY_ON 1
+#define DRM_MODE_DIRTY_ANNOTATE 2
+#define DRM_MODE_LINK_STATUS_GOOD 0
+#define DRM_MODE_LINK_STATUS_BAD 1
+#define DRM_MODE_ROTATE_0 (1 << 0)
+#define DRM_MODE_ROTATE_90 (1 << 1)
+#define DRM_MODE_ROTATE_180 (1 << 2)
+#define DRM_MODE_ROTATE_270 (1 << 3)
+#define DRM_MODE_ROTATE_MASK (DRM_MODE_ROTATE_0 | DRM_MODE_ROTATE_90 | DRM_MODE_ROTATE_180 | DRM_MODE_ROTATE_270)
+#define DRM_MODE_REFLECT_X (1 << 4)
+#define DRM_MODE_REFLECT_Y (1 << 5)
+#define DRM_MODE_REFLECT_MASK (DRM_MODE_REFLECT_X | DRM_MODE_REFLECT_Y)
+#define DRM_MODE_CONTENT_PROTECTION_UNDESIRED 0
+#define DRM_MODE_CONTENT_PROTECTION_DESIRED 1
+#define DRM_MODE_CONTENT_PROTECTION_ENABLED 2
+struct drm_mode_modeinfo {
+  __u32 clock;
+  __u16 hdisplay;
+  __u16 hsync_start;
+  __u16 hsync_end;
+  __u16 htotal;
+  __u16 hskew;
+  __u16 vdisplay;
+  __u16 vsync_start;
+  __u16 vsync_end;
+  __u16 vtotal;
+  __u16 vscan;
+  __u32 vrefresh;
+  __u32 flags;
+  __u32 type;
+  char name[DRM_DISPLAY_MODE_LEN];
+};
+struct drm_mode_card_res {
+  __u64 fb_id_ptr;
+  __u64 crtc_id_ptr;
+  __u64 connector_id_ptr;
+  __u64 encoder_id_ptr;
+  __u32 count_fbs;
+  __u32 count_crtcs;
+  __u32 count_connectors;
+  __u32 count_encoders;
+  __u32 min_width;
+  __u32 max_width;
+  __u32 min_height;
+  __u32 max_height;
+};
+struct drm_mode_crtc {
+  __u64 set_connectors_ptr;
+  __u32 count_connectors;
+  __u32 crtc_id;
+  __u32 fb_id;
+  __u32 x;
+  __u32 y;
+  __u32 gamma_size;
+  __u32 mode_valid;
+  struct drm_mode_modeinfo mode;
+};
+#define DRM_MODE_PRESENT_TOP_FIELD (1 << 0)
+#define DRM_MODE_PRESENT_BOTTOM_FIELD (1 << 1)
+struct drm_mode_set_plane {
+  __u32 plane_id;
+  __u32 crtc_id;
+  __u32 fb_id;
+  __u32 flags;
+  __s32 crtc_x;
+  __s32 crtc_y;
+  __u32 crtc_w;
+  __u32 crtc_h;
+  __u32 src_x;
+  __u32 src_y;
+  __u32 src_h;
+  __u32 src_w;
+};
+struct drm_mode_get_plane {
+  __u32 plane_id;
+  __u32 crtc_id;
+  __u32 fb_id;
+  __u32 possible_crtcs;
+  __u32 gamma_size;
+  __u32 count_format_types;
+  __u64 format_type_ptr;
+};
+struct drm_mode_get_plane_res {
+  __u64 plane_id_ptr;
+  __u32 count_planes;
+};
+#define DRM_MODE_ENCODER_NONE 0
+#define DRM_MODE_ENCODER_DAC 1
+#define DRM_MODE_ENCODER_TMDS 2
+#define DRM_MODE_ENCODER_LVDS 3
+#define DRM_MODE_ENCODER_TVDAC 4
+#define DRM_MODE_ENCODER_VIRTUAL 5
+#define DRM_MODE_ENCODER_DSI 6
+#define DRM_MODE_ENCODER_DPMST 7
+#define DRM_MODE_ENCODER_DPI 8
+struct drm_mode_get_encoder {
+  __u32 encoder_id;
+  __u32 encoder_type;
+  __u32 crtc_id;
+  __u32 possible_crtcs;
+  __u32 possible_clones;
+};
+enum drm_mode_subconnector {
+  DRM_MODE_SUBCONNECTOR_Automatic = 0,
+  DRM_MODE_SUBCONNECTOR_Unknown = 0,
+  DRM_MODE_SUBCONNECTOR_VGA = 1,
+  DRM_MODE_SUBCONNECTOR_DVID = 3,
+  DRM_MODE_SUBCONNECTOR_DVIA = 4,
+  DRM_MODE_SUBCONNECTOR_Composite = 5,
+  DRM_MODE_SUBCONNECTOR_SVIDEO = 6,
+  DRM_MODE_SUBCONNECTOR_Component = 8,
+  DRM_MODE_SUBCONNECTOR_SCART = 9,
+  DRM_MODE_SUBCONNECTOR_DisplayPort = 10,
+  DRM_MODE_SUBCONNECTOR_HDMIA = 11,
+  DRM_MODE_SUBCONNECTOR_Native = 15,
+  DRM_MODE_SUBCONNECTOR_Wireless = 18,
+};
+#define DRM_MODE_CONNECTOR_Unknown 0
+#define DRM_MODE_CONNECTOR_VGA 1
+#define DRM_MODE_CONNECTOR_DVII 2
+#define DRM_MODE_CONNECTOR_DVID 3
+#define DRM_MODE_CONNECTOR_DVIA 4
+#define DRM_MODE_CONNECTOR_Composite 5
+#define DRM_MODE_CONNECTOR_SVIDEO 6
+#define DRM_MODE_CONNECTOR_LVDS 7
+#define DRM_MODE_CONNECTOR_Component 8
+#define DRM_MODE_CONNECTOR_9PinDIN 9
+#define DRM_MODE_CONNECTOR_DisplayPort 10
+#define DRM_MODE_CONNECTOR_HDMIA 11
+#define DRM_MODE_CONNECTOR_HDMIB 12
+#define DRM_MODE_CONNECTOR_TV 13
+#define DRM_MODE_CONNECTOR_eDP 14
+#define DRM_MODE_CONNECTOR_VIRTUAL 15
+#define DRM_MODE_CONNECTOR_DSI 16
+#define DRM_MODE_CONNECTOR_DPI 17
+#define DRM_MODE_CONNECTOR_WRITEBACK 18
+#define DRM_MODE_CONNECTOR_SPI 19
+#define DRM_MODE_CONNECTOR_USB 20
+struct drm_mode_get_connector {
+  __u64 encoders_ptr;
+  __u64 modes_ptr;
+  __u64 props_ptr;
+  __u64 prop_values_ptr;
+  __u32 count_modes;
+  __u32 count_props;
+  __u32 count_encoders;
+  __u32 encoder_id;
+  __u32 connector_id;
+  __u32 connector_type;
+  __u32 connector_type_id;
+  __u32 connection;
+  __u32 mm_width;
+  __u32 mm_height;
+  __u32 subpixel;
+  __u32 pad;
+};
+#define DRM_MODE_PROP_PENDING (1 << 0)
+#define DRM_MODE_PROP_RANGE (1 << 1)
+#define DRM_MODE_PROP_IMMUTABLE (1 << 2)
+#define DRM_MODE_PROP_ENUM (1 << 3)
+#define DRM_MODE_PROP_BLOB (1 << 4)
+#define DRM_MODE_PROP_BITMASK (1 << 5)
+#define DRM_MODE_PROP_LEGACY_TYPE (DRM_MODE_PROP_RANGE | DRM_MODE_PROP_ENUM | DRM_MODE_PROP_BLOB | DRM_MODE_PROP_BITMASK)
+#define DRM_MODE_PROP_EXTENDED_TYPE 0x0000ffc0
+#define DRM_MODE_PROP_TYPE(n) ((n) << 6)
+#define DRM_MODE_PROP_OBJECT DRM_MODE_PROP_TYPE(1)
+#define DRM_MODE_PROP_SIGNED_RANGE DRM_MODE_PROP_TYPE(2)
+#define DRM_MODE_PROP_ATOMIC 0x80000000
+struct drm_mode_property_enum {
+  __u64 value;
+  char name[DRM_PROP_NAME_LEN];
+};
+struct drm_mode_get_property {
+  __u64 values_ptr;
+  __u64 enum_blob_ptr;
+  __u32 prop_id;
+  __u32 flags;
+  char name[DRM_PROP_NAME_LEN];
+  __u32 count_values;
+  __u32 count_enum_blobs;
+};
+struct drm_mode_connector_set_property {
+  __u64 value;
+  __u32 prop_id;
+  __u32 connector_id;
+};
+#define DRM_MODE_OBJECT_CRTC 0xcccccccc
+#define DRM_MODE_OBJECT_CONNECTOR 0xc0c0c0c0
+#define DRM_MODE_OBJECT_ENCODER 0xe0e0e0e0
+#define DRM_MODE_OBJECT_MODE 0xdededede
+#define DRM_MODE_OBJECT_PROPERTY 0xb0b0b0b0
+#define DRM_MODE_OBJECT_FB 0xfbfbfbfb
+#define DRM_MODE_OBJECT_BLOB 0xbbbbbbbb
+#define DRM_MODE_OBJECT_PLANE 0xeeeeeeee
+#define DRM_MODE_OBJECT_ANY 0
+struct drm_mode_obj_get_properties {
+  __u64 props_ptr;
+  __u64 prop_values_ptr;
+  __u32 count_props;
+  __u32 obj_id;
+  __u32 obj_type;
+};
+struct drm_mode_obj_set_property {
+  __u64 value;
+  __u32 prop_id;
+  __u32 obj_id;
+  __u32 obj_type;
+};
+struct drm_mode_get_blob {
+  __u32 blob_id;
+  __u32 length;
+  __u64 data;
+};
+struct drm_mode_fb_cmd {
+  __u32 fb_id;
+  __u32 width;
+  __u32 height;
+  __u32 pitch;
+  __u32 bpp;
+  __u32 depth;
+  __u32 handle;
+};
+#define DRM_MODE_FB_INTERLACED (1 << 0)
+#define DRM_MODE_FB_MODIFIERS (1 << 1)
+struct drm_mode_fb_cmd2 {
+  __u32 fb_id;
+  __u32 width;
+  __u32 height;
+  __u32 pixel_format;
+  __u32 flags;
+  __u32 handles[4];
+  __u32 pitches[4];
+  __u32 offsets[4];
+  __u64 modifier[4];
+};
+#define DRM_MODE_FB_DIRTY_ANNOTATE_COPY 0x01
+#define DRM_MODE_FB_DIRTY_ANNOTATE_FILL 0x02
+#define DRM_MODE_FB_DIRTY_FLAGS 0x03
+#define DRM_MODE_FB_DIRTY_MAX_CLIPS 256
+struct drm_mode_fb_dirty_cmd {
+  __u32 fb_id;
+  __u32 flags;
+  __u32 color;
+  __u32 num_clips;
+  __u64 clips_ptr;
+};
+struct drm_mode_mode_cmd {
+  __u32 connector_id;
+  struct drm_mode_modeinfo mode;
+};
+#define DRM_MODE_CURSOR_BO 0x01
+#define DRM_MODE_CURSOR_MOVE 0x02
+#define DRM_MODE_CURSOR_FLAGS 0x03
+struct drm_mode_cursor {
+  __u32 flags;
+  __u32 crtc_id;
+  __s32 x;
+  __s32 y;
+  __u32 width;
+  __u32 height;
+  __u32 handle;
+};
+struct drm_mode_cursor2 {
+  __u32 flags;
+  __u32 crtc_id;
+  __s32 x;
+  __s32 y;
+  __u32 width;
+  __u32 height;
+  __u32 handle;
+  __s32 hot_x;
+  __s32 hot_y;
+};
+struct drm_mode_crtc_lut {
+  __u32 crtc_id;
+  __u32 gamma_size;
+  __u64 red;
+  __u64 green;
+  __u64 blue;
+};
+struct drm_color_ctm {
+  __u64 matrix[9];
+};
+struct drm_color_lut {
+  __u16 red;
+  __u16 green;
+  __u16 blue;
+  __u16 reserved;
+};
+struct hdr_metadata_infoframe {
+  __u8 eotf;
+  __u8 metadata_type;
+  struct {
+    __u16 x, y;
+  } display_primaries[3];
+  struct {
+    __u16 x, y;
+  } white_point;
+  __u16 max_display_mastering_luminance;
+  __u16 min_display_mastering_luminance;
+  __u16 max_cll;
+  __u16 max_fall;
+};
+struct hdr_output_metadata {
+  __u32 metadata_type;
+  union {
+    struct hdr_metadata_infoframe hdmi_metadata_type1;
+  };
+};
+#define DRM_MODE_PAGE_FLIP_EVENT 0x01
+#define DRM_MODE_PAGE_FLIP_ASYNC 0x02
+#define DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE 0x4
+#define DRM_MODE_PAGE_FLIP_TARGET_RELATIVE 0x8
+#define DRM_MODE_PAGE_FLIP_TARGET (DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE | DRM_MODE_PAGE_FLIP_TARGET_RELATIVE)
+#define DRM_MODE_PAGE_FLIP_FLAGS (DRM_MODE_PAGE_FLIP_EVENT | DRM_MODE_PAGE_FLIP_ASYNC | DRM_MODE_PAGE_FLIP_TARGET)
+struct drm_mode_crtc_page_flip {
+  __u32 crtc_id;
+  __u32 fb_id;
+  __u32 flags;
+  __u32 reserved;
+  __u64 user_data;
+};
+struct drm_mode_crtc_page_flip_target {
+  __u32 crtc_id;
+  __u32 fb_id;
+  __u32 flags;
+  __u32 sequence;
+  __u64 user_data;
+};
+struct drm_mode_create_dumb {
+  __u32 height;
+  __u32 width;
+  __u32 bpp;
+  __u32 flags;
+  __u32 handle;
+  __u32 pitch;
+  __u64 size;
+};
+struct drm_mode_map_dumb {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+};
+struct drm_mode_destroy_dumb {
+  __u32 handle;
+};
+#define DRM_MODE_ATOMIC_TEST_ONLY 0x0100
+#define DRM_MODE_ATOMIC_NONBLOCK 0x0200
+#define DRM_MODE_ATOMIC_ALLOW_MODESET 0x0400
+#define DRM_MODE_ATOMIC_FLAGS (DRM_MODE_PAGE_FLIP_EVENT | DRM_MODE_PAGE_FLIP_ASYNC | DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_NONBLOCK | DRM_MODE_ATOMIC_ALLOW_MODESET)
+struct drm_mode_atomic {
+  __u32 flags;
+  __u32 count_objs;
+  __u64 objs_ptr;
+  __u64 count_props_ptr;
+  __u64 props_ptr;
+  __u64 prop_values_ptr;
+  __u64 reserved;
+  __u64 user_data;
+};
+struct drm_format_modifier_blob {
+#define FORMAT_BLOB_CURRENT 1
+  __u32 version;
+  __u32 flags;
+  __u32 count_formats;
+  __u32 formats_offset;
+  __u32 count_modifiers;
+  __u32 modifiers_offset;
+};
+struct drm_format_modifier {
+  __u64 formats;
+  __u32 offset;
+  __u32 pad;
+  __u64 modifier;
+};
+struct drm_mode_create_blob {
+  __u64 data;
+  __u32 length;
+  __u32 blob_id;
+};
+struct drm_mode_destroy_blob {
+  __u32 blob_id;
+};
+struct drm_mode_create_lease {
+  __u64 object_ids;
+  __u32 object_count;
+  __u32 flags;
+  __u32 lessee_id;
+  __u32 fd;
+};
+struct drm_mode_list_lessees {
+  __u32 count_lessees;
+  __u32 pad;
+  __u64 lessees_ptr;
+};
+struct drm_mode_get_lease {
+  __u32 count_objects;
+  __u32 pad;
+  __u64 objects_ptr;
+};
+struct drm_mode_revoke_lease {
+  __u32 lessee_id;
+};
+struct drm_mode_rect {
+  __s32 x1;
+  __s32 y1;
+  __s32 x2;
+  __s32 y2;
+};
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/drm_sarea.h b/i686-linux-musl/include/drm/drm_sarea.h
new file mode 100644
index 0000000..a0c7f3a
--- /dev/null
+++ b/i686-linux-musl/include/drm/drm_sarea.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 _DRM_SAREA_H_
+#define _DRM_SAREA_H_
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifdef __alpha__
+#define SAREA_MAX 0x2000U
+#elif defined(__mips__)
+#define SAREA_MAX 0x4000U
+#elif defined(__ia64__)
+#define SAREA_MAX 0x10000U
+#else
+#define SAREA_MAX 0x2000U
+#endif
+#define SAREA_MAX_DRAWABLES 256
+#define SAREA_DRAWABLE_CLAIMED_ENTRY 0x80000000
+struct drm_sarea_drawable {
+  unsigned int stamp;
+  unsigned int flags;
+};
+struct drm_sarea_frame {
+  unsigned int x;
+  unsigned int y;
+  unsigned int width;
+  unsigned int height;
+  unsigned int fullscreen;
+};
+struct drm_sarea {
+  struct drm_hw_lock lock;
+  struct drm_hw_lock drawable_lock;
+  struct drm_sarea_drawable drawableTable[SAREA_MAX_DRAWABLES];
+  struct drm_sarea_frame frame;
+  drm_context_t dummy_context;
+};
+typedef struct drm_sarea_drawable drm_sarea_drawable_t;
+typedef struct drm_sarea_frame drm_sarea_frame_t;
+typedef struct drm_sarea drm_sarea_t;
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/etnaviv_drm.h b/i686-linux-musl/include/drm/etnaviv_drm.h
new file mode 100644
index 0000000..7f8d5fa
--- /dev/null
+++ b/i686-linux-musl/include/drm/etnaviv_drm.h
@@ -0,0 +1,204 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ETNAVIV_DRM_H__
+#define __ETNAVIV_DRM_H__
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+struct drm_etnaviv_timespec {
+  __s64 tv_sec;
+  __s64 tv_nsec;
+};
+#define ETNAVIV_PARAM_GPU_MODEL 0x01
+#define ETNAVIV_PARAM_GPU_REVISION 0x02
+#define ETNAVIV_PARAM_GPU_FEATURES_0 0x03
+#define ETNAVIV_PARAM_GPU_FEATURES_1 0x04
+#define ETNAVIV_PARAM_GPU_FEATURES_2 0x05
+#define ETNAVIV_PARAM_GPU_FEATURES_3 0x06
+#define ETNAVIV_PARAM_GPU_FEATURES_4 0x07
+#define ETNAVIV_PARAM_GPU_FEATURES_5 0x08
+#define ETNAVIV_PARAM_GPU_FEATURES_6 0x09
+#define ETNAVIV_PARAM_GPU_FEATURES_7 0x0a
+#define ETNAVIV_PARAM_GPU_FEATURES_8 0x0b
+#define ETNAVIV_PARAM_GPU_FEATURES_9 0x0c
+#define ETNAVIV_PARAM_GPU_FEATURES_10 0x0d
+#define ETNAVIV_PARAM_GPU_FEATURES_11 0x0e
+#define ETNAVIV_PARAM_GPU_FEATURES_12 0x0f
+#define ETNAVIV_PARAM_GPU_STREAM_COUNT 0x10
+#define ETNAVIV_PARAM_GPU_REGISTER_MAX 0x11
+#define ETNAVIV_PARAM_GPU_THREAD_COUNT 0x12
+#define ETNAVIV_PARAM_GPU_VERTEX_CACHE_SIZE 0x13
+#define ETNAVIV_PARAM_GPU_SHADER_CORE_COUNT 0x14
+#define ETNAVIV_PARAM_GPU_PIXEL_PIPES 0x15
+#define ETNAVIV_PARAM_GPU_VERTEX_OUTPUT_BUFFER_SIZE 0x16
+#define ETNAVIV_PARAM_GPU_BUFFER_SIZE 0x17
+#define ETNAVIV_PARAM_GPU_INSTRUCTION_COUNT 0x18
+#define ETNAVIV_PARAM_GPU_NUM_CONSTANTS 0x19
+#define ETNAVIV_PARAM_GPU_NUM_VARYINGS 0x1a
+#define ETNAVIV_PARAM_SOFTPIN_START_ADDR 0x1b
+#define ETNAVIV_PARAM_GPU_PRODUCT_ID 0x1c
+#define ETNAVIV_PARAM_GPU_CUSTOMER_ID 0x1d
+#define ETNAVIV_PARAM_GPU_ECO_ID 0x1e
+#define ETNA_MAX_PIPES 4
+struct drm_etnaviv_param {
+  __u32 pipe;
+  __u32 param;
+  __u64 value;
+};
+#define ETNA_BO_CACHE_MASK 0x000f0000
+#define ETNA_BO_CACHED 0x00010000
+#define ETNA_BO_WC 0x00020000
+#define ETNA_BO_UNCACHED 0x00040000
+#define ETNA_BO_FORCE_MMU 0x00100000
+struct drm_etnaviv_gem_new {
+  __u64 size;
+  __u32 flags;
+  __u32 handle;
+};
+struct drm_etnaviv_gem_info {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+};
+#define ETNA_PREP_READ 0x01
+#define ETNA_PREP_WRITE 0x02
+#define ETNA_PREP_NOSYNC 0x04
+struct drm_etnaviv_gem_cpu_prep {
+  __u32 handle;
+  __u32 op;
+  struct drm_etnaviv_timespec timeout;
+};
+struct drm_etnaviv_gem_cpu_fini {
+  __u32 handle;
+  __u32 flags;
+};
+struct drm_etnaviv_gem_submit_reloc {
+  __u32 submit_offset;
+  __u32 reloc_idx;
+  __u64 reloc_offset;
+  __u32 flags;
+};
+#define ETNA_SUBMIT_BO_READ 0x0001
+#define ETNA_SUBMIT_BO_WRITE 0x0002
+struct drm_etnaviv_gem_submit_bo {
+  __u32 flags;
+  __u32 handle;
+  __u64 presumed;
+};
+#define ETNA_PM_PROCESS_PRE 0x0001
+#define ETNA_PM_PROCESS_POST 0x0002
+struct drm_etnaviv_gem_submit_pmr {
+  __u32 flags;
+  __u8 domain;
+  __u8 pad;
+  __u16 signal;
+  __u32 sequence;
+  __u32 read_offset;
+  __u32 read_idx;
+};
+#define ETNA_SUBMIT_NO_IMPLICIT 0x0001
+#define ETNA_SUBMIT_FENCE_FD_IN 0x0002
+#define ETNA_SUBMIT_FENCE_FD_OUT 0x0004
+#define ETNA_SUBMIT_SOFTPIN 0x0008
+#define ETNA_SUBMIT_FLAGS (ETNA_SUBMIT_NO_IMPLICIT | ETNA_SUBMIT_FENCE_FD_IN | ETNA_SUBMIT_FENCE_FD_OUT | ETNA_SUBMIT_SOFTPIN)
+#define ETNA_PIPE_3D 0x00
+#define ETNA_PIPE_2D 0x01
+#define ETNA_PIPE_VG 0x02
+struct drm_etnaviv_gem_submit {
+  __u32 fence;
+  __u32 pipe;
+  __u32 exec_state;
+  __u32 nr_bos;
+  __u32 nr_relocs;
+  __u32 stream_size;
+  __u64 bos;
+  __u64 relocs;
+  __u64 stream;
+  __u32 flags;
+  __s32 fence_fd;
+  __u64 pmrs;
+  __u32 nr_pmrs;
+  __u32 pad;
+};
+#define ETNA_WAIT_NONBLOCK 0x01
+struct drm_etnaviv_wait_fence {
+  __u32 pipe;
+  __u32 fence;
+  __u32 flags;
+  __u32 pad;
+  struct drm_etnaviv_timespec timeout;
+};
+#define ETNA_USERPTR_READ 0x01
+#define ETNA_USERPTR_WRITE 0x02
+struct drm_etnaviv_gem_userptr {
+  __u64 user_ptr;
+  __u64 user_size;
+  __u32 flags;
+  __u32 handle;
+};
+struct drm_etnaviv_gem_wait {
+  __u32 pipe;
+  __u32 handle;
+  __u32 flags;
+  __u32 pad;
+  struct drm_etnaviv_timespec timeout;
+};
+struct drm_etnaviv_pm_domain {
+  __u32 pipe;
+  __u8 iter;
+  __u8 id;
+  __u16 nr_signals;
+  char name[64];
+};
+struct drm_etnaviv_pm_signal {
+  __u32 pipe;
+  __u8 domain;
+  __u8 pad;
+  __u16 iter;
+  __u16 id;
+  char name[64];
+};
+#define DRM_ETNAVIV_GET_PARAM 0x00
+#define DRM_ETNAVIV_GEM_NEW 0x02
+#define DRM_ETNAVIV_GEM_INFO 0x03
+#define DRM_ETNAVIV_GEM_CPU_PREP 0x04
+#define DRM_ETNAVIV_GEM_CPU_FINI 0x05
+#define DRM_ETNAVIV_GEM_SUBMIT 0x06
+#define DRM_ETNAVIV_WAIT_FENCE 0x07
+#define DRM_ETNAVIV_GEM_USERPTR 0x08
+#define DRM_ETNAVIV_GEM_WAIT 0x09
+#define DRM_ETNAVIV_PM_QUERY_DOM 0x0a
+#define DRM_ETNAVIV_PM_QUERY_SIG 0x0b
+#define DRM_ETNAVIV_NUM_IOCTLS 0x0c
+#define DRM_IOCTL_ETNAVIV_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_ETNAVIV_GET_PARAM, struct drm_etnaviv_param)
+#define DRM_IOCTL_ETNAVIV_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_ETNAVIV_GEM_NEW, struct drm_etnaviv_gem_new)
+#define DRM_IOCTL_ETNAVIV_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_ETNAVIV_GEM_INFO, struct drm_etnaviv_gem_info)
+#define DRM_IOCTL_ETNAVIV_GEM_CPU_PREP DRM_IOW(DRM_COMMAND_BASE + DRM_ETNAVIV_GEM_CPU_PREP, struct drm_etnaviv_gem_cpu_prep)
+#define DRM_IOCTL_ETNAVIV_GEM_CPU_FINI DRM_IOW(DRM_COMMAND_BASE + DRM_ETNAVIV_GEM_CPU_FINI, struct drm_etnaviv_gem_cpu_fini)
+#define DRM_IOCTL_ETNAVIV_GEM_SUBMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_ETNAVIV_GEM_SUBMIT, struct drm_etnaviv_gem_submit)
+#define DRM_IOCTL_ETNAVIV_WAIT_FENCE DRM_IOW(DRM_COMMAND_BASE + DRM_ETNAVIV_WAIT_FENCE, struct drm_etnaviv_wait_fence)
+#define DRM_IOCTL_ETNAVIV_GEM_USERPTR DRM_IOWR(DRM_COMMAND_BASE + DRM_ETNAVIV_GEM_USERPTR, struct drm_etnaviv_gem_userptr)
+#define DRM_IOCTL_ETNAVIV_GEM_WAIT DRM_IOW(DRM_COMMAND_BASE + DRM_ETNAVIV_GEM_WAIT, struct drm_etnaviv_gem_wait)
+#define DRM_IOCTL_ETNAVIV_PM_QUERY_DOM DRM_IOWR(DRM_COMMAND_BASE + DRM_ETNAVIV_PM_QUERY_DOM, struct drm_etnaviv_pm_domain)
+#define DRM_IOCTL_ETNAVIV_PM_QUERY_SIG DRM_IOWR(DRM_COMMAND_BASE + DRM_ETNAVIV_PM_QUERY_SIG, struct drm_etnaviv_pm_signal)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/exynos_drm.h b/i686-linux-musl/include/drm/exynos_drm.h
new file mode 100644
index 0000000..4918035
--- /dev/null
+++ b/i686-linux-musl/include/drm/exynos_drm.h
@@ -0,0 +1,231 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_EXYNOS_DRM_H_
+#define _UAPI_EXYNOS_DRM_H_
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+struct drm_exynos_gem_create {
+  __u64 size;
+  __u32 flags;
+  __u32 handle;
+};
+struct drm_exynos_gem_map {
+  __u32 handle;
+  __u32 reserved;
+  __u64 offset;
+};
+struct drm_exynos_gem_info {
+  __u32 handle;
+  __u32 flags;
+  __u64 size;
+};
+struct drm_exynos_vidi_connection {
+  __u32 connection;
+  __u32 extensions;
+  __u64 edid;
+};
+enum e_drm_exynos_gem_mem_type {
+  EXYNOS_BO_CONTIG = 0 << 0,
+  EXYNOS_BO_NONCONTIG = 1 << 0,
+  EXYNOS_BO_NONCACHABLE = 0 << 1,
+  EXYNOS_BO_CACHABLE = 1 << 1,
+  EXYNOS_BO_WC = 1 << 2,
+  EXYNOS_BO_MASK = EXYNOS_BO_NONCONTIG | EXYNOS_BO_CACHABLE | EXYNOS_BO_WC
+};
+struct drm_exynos_g2d_get_ver {
+  __u32 major;
+  __u32 minor;
+};
+struct drm_exynos_g2d_cmd {
+  __u32 offset;
+  __u32 data;
+};
+enum drm_exynos_g2d_buf_type {
+  G2D_BUF_USERPTR = 1 << 31,
+};
+enum drm_exynos_g2d_event_type {
+  G2D_EVENT_NOT,
+  G2D_EVENT_NONSTOP,
+  G2D_EVENT_STOP,
+};
+struct drm_exynos_g2d_userptr {
+  unsigned long userptr;
+  unsigned long size;
+};
+struct drm_exynos_g2d_set_cmdlist {
+  __u64 cmd;
+  __u64 cmd_buf;
+  __u32 cmd_nr;
+  __u32 cmd_buf_nr;
+  __u64 event_type;
+  __u64 user_data;
+};
+struct drm_exynos_g2d_exec {
+  __u64 async;
+};
+struct drm_exynos_ioctl_ipp_get_res {
+  __u32 count_ipps;
+  __u32 reserved;
+  __u64 ipp_id_ptr;
+};
+enum drm_exynos_ipp_format_type {
+  DRM_EXYNOS_IPP_FORMAT_SOURCE = 0x01,
+  DRM_EXYNOS_IPP_FORMAT_DESTINATION = 0x02,
+};
+struct drm_exynos_ipp_format {
+  __u32 fourcc;
+  __u32 type;
+  __u64 modifier;
+};
+enum drm_exynos_ipp_capability {
+  DRM_EXYNOS_IPP_CAP_CROP = 0x01,
+  DRM_EXYNOS_IPP_CAP_ROTATE = 0x02,
+  DRM_EXYNOS_IPP_CAP_SCALE = 0x04,
+  DRM_EXYNOS_IPP_CAP_CONVERT = 0x08,
+};
+struct drm_exynos_ioctl_ipp_get_caps {
+  __u32 ipp_id;
+  __u32 capabilities;
+  __u32 reserved;
+  __u32 formats_count;
+  __u64 formats_ptr;
+};
+enum drm_exynos_ipp_limit_type {
+  DRM_EXYNOS_IPP_LIMIT_TYPE_SIZE = 0x0001,
+  DRM_EXYNOS_IPP_LIMIT_TYPE_SCALE = 0x0002,
+  DRM_EXYNOS_IPP_LIMIT_SIZE_BUFFER = 0x0001 << 16,
+  DRM_EXYNOS_IPP_LIMIT_SIZE_AREA = 0x0002 << 16,
+  DRM_EXYNOS_IPP_LIMIT_SIZE_ROTATED = 0x0003 << 16,
+  DRM_EXYNOS_IPP_LIMIT_TYPE_MASK = 0x000f,
+  DRM_EXYNOS_IPP_LIMIT_SIZE_MASK = 0x000f << 16,
+};
+struct drm_exynos_ipp_limit_val {
+  __u32 min;
+  __u32 max;
+  __u32 align;
+  __u32 reserved;
+};
+struct drm_exynos_ipp_limit {
+  __u32 type;
+  __u32 reserved;
+  struct drm_exynos_ipp_limit_val h;
+  struct drm_exynos_ipp_limit_val v;
+};
+struct drm_exynos_ioctl_ipp_get_limits {
+  __u32 ipp_id;
+  __u32 fourcc;
+  __u64 modifier;
+  __u32 type;
+  __u32 limits_count;
+  __u64 limits_ptr;
+};
+enum drm_exynos_ipp_task_id {
+  DRM_EXYNOS_IPP_TASK_BUFFER = 0x0001,
+  DRM_EXYNOS_IPP_TASK_RECTANGLE = 0x0002,
+  DRM_EXYNOS_IPP_TASK_TRANSFORM = 0x0003,
+  DRM_EXYNOS_IPP_TASK_ALPHA = 0x0004,
+  DRM_EXYNOS_IPP_TASK_TYPE_SOURCE = 0x0001 << 16,
+  DRM_EXYNOS_IPP_TASK_TYPE_DESTINATION = 0x0002 << 16,
+};
+struct drm_exynos_ipp_task_buffer {
+  __u32 id;
+  __u32 fourcc;
+  __u32 width, height;
+  __u32 gem_id[4];
+  __u32 offset[4];
+  __u32 pitch[4];
+  __u64 modifier;
+};
+struct drm_exynos_ipp_task_rect {
+  __u32 id;
+  __u32 reserved;
+  __u32 x;
+  __u32 y;
+  __u32 w;
+  __u32 h;
+};
+struct drm_exynos_ipp_task_transform {
+  __u32 id;
+  __u32 rotation;
+};
+struct drm_exynos_ipp_task_alpha {
+  __u32 id;
+  __u32 value;
+};
+enum drm_exynos_ipp_flag {
+  DRM_EXYNOS_IPP_FLAG_EVENT = 0x01,
+  DRM_EXYNOS_IPP_FLAG_TEST_ONLY = 0x02,
+  DRM_EXYNOS_IPP_FLAG_NONBLOCK = 0x04,
+};
+#define DRM_EXYNOS_IPP_FLAGS (DRM_EXYNOS_IPP_FLAG_EVENT | DRM_EXYNOS_IPP_FLAG_TEST_ONLY | DRM_EXYNOS_IPP_FLAG_NONBLOCK)
+struct drm_exynos_ioctl_ipp_commit {
+  __u32 ipp_id;
+  __u32 flags;
+  __u32 reserved;
+  __u32 params_size;
+  __u64 params_ptr;
+  __u64 user_data;
+};
+#define DRM_EXYNOS_GEM_CREATE 0x00
+#define DRM_EXYNOS_GEM_MAP 0x01
+#define DRM_EXYNOS_GEM_GET 0x04
+#define DRM_EXYNOS_VIDI_CONNECTION 0x07
+#define DRM_EXYNOS_G2D_GET_VER 0x20
+#define DRM_EXYNOS_G2D_SET_CMDLIST 0x21
+#define DRM_EXYNOS_G2D_EXEC 0x22
+#define DRM_EXYNOS_IPP_GET_RESOURCES 0x40
+#define DRM_EXYNOS_IPP_GET_CAPS 0x41
+#define DRM_EXYNOS_IPP_GET_LIMITS 0x42
+#define DRM_EXYNOS_IPP_COMMIT 0x43
+#define DRM_IOCTL_EXYNOS_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_GEM_CREATE, struct drm_exynos_gem_create)
+#define DRM_IOCTL_EXYNOS_GEM_MAP DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_GEM_MAP, struct drm_exynos_gem_map)
+#define DRM_IOCTL_EXYNOS_GEM_GET DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_GEM_GET, struct drm_exynos_gem_info)
+#define DRM_IOCTL_EXYNOS_VIDI_CONNECTION DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_VIDI_CONNECTION, struct drm_exynos_vidi_connection)
+#define DRM_IOCTL_EXYNOS_G2D_GET_VER DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_G2D_GET_VER, struct drm_exynos_g2d_get_ver)
+#define DRM_IOCTL_EXYNOS_G2D_SET_CMDLIST DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_G2D_SET_CMDLIST, struct drm_exynos_g2d_set_cmdlist)
+#define DRM_IOCTL_EXYNOS_G2D_EXEC DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_G2D_EXEC, struct drm_exynos_g2d_exec)
+#define DRM_IOCTL_EXYNOS_IPP_GET_RESOURCES DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_IPP_GET_RESOURCES, struct drm_exynos_ioctl_ipp_get_res)
+#define DRM_IOCTL_EXYNOS_IPP_GET_CAPS DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_IPP_GET_CAPS, struct drm_exynos_ioctl_ipp_get_caps)
+#define DRM_IOCTL_EXYNOS_IPP_GET_LIMITS DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_IPP_GET_LIMITS, struct drm_exynos_ioctl_ipp_get_limits)
+#define DRM_IOCTL_EXYNOS_IPP_COMMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_IPP_COMMIT, struct drm_exynos_ioctl_ipp_commit)
+#define DRM_EXYNOS_G2D_EVENT 0x80000000
+#define DRM_EXYNOS_IPP_EVENT 0x80000002
+struct drm_exynos_g2d_event {
+  struct drm_event base;
+  __u64 user_data;
+  __u32 tv_sec;
+  __u32 tv_usec;
+  __u32 cmdlist_no;
+  __u32 reserved;
+};
+struct drm_exynos_ipp_event {
+  struct drm_event base;
+  __u64 user_data;
+  __u32 tv_sec;
+  __u32 tv_usec;
+  __u32 ipp_id;
+  __u32 sequence;
+  __u64 reserved;
+};
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/i810_drm.h b/i686-linux-musl/include/drm/i810_drm.h
new file mode 100644
index 0000000..e33387d
--- /dev/null
+++ b/i686-linux-musl/include/drm/i810_drm.h
@@ -0,0 +1,220 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _I810_DRM_H_
+#define _I810_DRM_H_
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef _I810_DEFINES_
+#define _I810_DEFINES_
+#define I810_DMA_BUF_ORDER 12
+#define I810_DMA_BUF_SZ (1 << I810_DMA_BUF_ORDER)
+#define I810_DMA_BUF_NR 256
+#define I810_NR_SAREA_CLIPRECTS 8
+#define I810_NR_TEX_REGIONS 64
+#define I810_LOG_MIN_TEX_REGION_SIZE 16
+#endif
+#define I810_UPLOAD_TEX0IMAGE 0x1
+#define I810_UPLOAD_TEX1IMAGE 0x2
+#define I810_UPLOAD_CTX 0x4
+#define I810_UPLOAD_BUFFERS 0x8
+#define I810_UPLOAD_TEX0 0x10
+#define I810_UPLOAD_TEX1 0x20
+#define I810_UPLOAD_CLIPRECTS 0x40
+#define I810_DESTREG_DI0 0
+#define I810_DESTREG_DI1 1
+#define I810_DESTREG_DV0 2
+#define I810_DESTREG_DV1 3
+#define I810_DESTREG_DR0 4
+#define I810_DESTREG_DR1 5
+#define I810_DESTREG_DR2 6
+#define I810_DESTREG_DR3 7
+#define I810_DESTREG_DR4 8
+#define I810_DEST_SETUP_SIZE 10
+#define I810_CTXREG_CF0 0
+#define I810_CTXREG_CF1 1
+#define I810_CTXREG_ST0 2
+#define I810_CTXREG_ST1 3
+#define I810_CTXREG_VF 4
+#define I810_CTXREG_MT 5
+#define I810_CTXREG_MC0 6
+#define I810_CTXREG_MC1 7
+#define I810_CTXREG_MC2 8
+#define I810_CTXREG_MA0 9
+#define I810_CTXREG_MA1 10
+#define I810_CTXREG_MA2 11
+#define I810_CTXREG_SDM 12
+#define I810_CTXREG_FOG 13
+#define I810_CTXREG_B1 14
+#define I810_CTXREG_B2 15
+#define I810_CTXREG_LCS 16
+#define I810_CTXREG_PV 17
+#define I810_CTXREG_ZA 18
+#define I810_CTXREG_AA 19
+#define I810_CTX_SETUP_SIZE 20
+#define I810_TEXREG_MI0 0
+#define I810_TEXREG_MI1 1
+#define I810_TEXREG_MI2 2
+#define I810_TEXREG_MI3 3
+#define I810_TEXREG_MF 4
+#define I810_TEXREG_MLC 5
+#define I810_TEXREG_MLL 6
+#define I810_TEXREG_MCS 7
+#define I810_TEX_SETUP_SIZE 8
+#define I810_FRONT 0x1
+#define I810_BACK 0x2
+#define I810_DEPTH 0x4
+typedef enum _drm_i810_init_func {
+  I810_INIT_DMA = 0x01,
+  I810_CLEANUP_DMA = 0x02,
+  I810_INIT_DMA_1_4 = 0x03
+} drm_i810_init_func_t;
+typedef struct _drm_i810_init {
+  drm_i810_init_func_t func;
+  unsigned int mmio_offset;
+  unsigned int buffers_offset;
+  int sarea_priv_offset;
+  unsigned int ring_start;
+  unsigned int ring_end;
+  unsigned int ring_size;
+  unsigned int front_offset;
+  unsigned int back_offset;
+  unsigned int depth_offset;
+  unsigned int overlay_offset;
+  unsigned int overlay_physical;
+  unsigned int w;
+  unsigned int h;
+  unsigned int pitch;
+  unsigned int pitch_bits;
+} drm_i810_init_t;
+typedef struct _drm_i810_pre12_init {
+  drm_i810_init_func_t func;
+  unsigned int mmio_offset;
+  unsigned int buffers_offset;
+  int sarea_priv_offset;
+  unsigned int ring_start;
+  unsigned int ring_end;
+  unsigned int ring_size;
+  unsigned int front_offset;
+  unsigned int back_offset;
+  unsigned int depth_offset;
+  unsigned int w;
+  unsigned int h;
+  unsigned int pitch;
+  unsigned int pitch_bits;
+} drm_i810_pre12_init_t;
+typedef struct _drm_i810_tex_region {
+  unsigned char next, prev;
+  unsigned char in_use;
+  int age;
+} drm_i810_tex_region_t;
+typedef struct _drm_i810_sarea {
+  unsigned int ContextState[I810_CTX_SETUP_SIZE];
+  unsigned int BufferState[I810_DEST_SETUP_SIZE];
+  unsigned int TexState[2][I810_TEX_SETUP_SIZE];
+  unsigned int dirty;
+  unsigned int nbox;
+  struct drm_clip_rect boxes[I810_NR_SAREA_CLIPRECTS];
+  drm_i810_tex_region_t texList[I810_NR_TEX_REGIONS + 1];
+  int texAge;
+  int last_enqueue;
+  int last_dispatch;
+  int last_quiescent;
+  int ctxOwner;
+  int vertex_prim;
+  int pf_enabled;
+  int pf_active;
+  int pf_current_page;
+} drm_i810_sarea_t;
+#define DRM_I810_INIT 0x00
+#define DRM_I810_VERTEX 0x01
+#define DRM_I810_CLEAR 0x02
+#define DRM_I810_FLUSH 0x03
+#define DRM_I810_GETAGE 0x04
+#define DRM_I810_GETBUF 0x05
+#define DRM_I810_SWAP 0x06
+#define DRM_I810_COPY 0x07
+#define DRM_I810_DOCOPY 0x08
+#define DRM_I810_OV0INFO 0x09
+#define DRM_I810_FSTATUS 0x0a
+#define DRM_I810_OV0FLIP 0x0b
+#define DRM_I810_MC 0x0c
+#define DRM_I810_RSTATUS 0x0d
+#define DRM_I810_FLIP 0x0e
+#define DRM_IOCTL_I810_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_I810_INIT, drm_i810_init_t)
+#define DRM_IOCTL_I810_VERTEX DRM_IOW(DRM_COMMAND_BASE + DRM_I810_VERTEX, drm_i810_vertex_t)
+#define DRM_IOCTL_I810_CLEAR DRM_IOW(DRM_COMMAND_BASE + DRM_I810_CLEAR, drm_i810_clear_t)
+#define DRM_IOCTL_I810_FLUSH DRM_IO(DRM_COMMAND_BASE + DRM_I810_FLUSH)
+#define DRM_IOCTL_I810_GETAGE DRM_IO(DRM_COMMAND_BASE + DRM_I810_GETAGE)
+#define DRM_IOCTL_I810_GETBUF DRM_IOWR(DRM_COMMAND_BASE + DRM_I810_GETBUF, drm_i810_dma_t)
+#define DRM_IOCTL_I810_SWAP DRM_IO(DRM_COMMAND_BASE + DRM_I810_SWAP)
+#define DRM_IOCTL_I810_COPY DRM_IOW(DRM_COMMAND_BASE + DRM_I810_COPY, drm_i810_copy_t)
+#define DRM_IOCTL_I810_DOCOPY DRM_IO(DRM_COMMAND_BASE + DRM_I810_DOCOPY)
+#define DRM_IOCTL_I810_OV0INFO DRM_IOR(DRM_COMMAND_BASE + DRM_I810_OV0INFO, drm_i810_overlay_t)
+#define DRM_IOCTL_I810_FSTATUS DRM_IO(DRM_COMMAND_BASE + DRM_I810_FSTATUS)
+#define DRM_IOCTL_I810_OV0FLIP DRM_IO(DRM_COMMAND_BASE + DRM_I810_OV0FLIP)
+#define DRM_IOCTL_I810_MC DRM_IOW(DRM_COMMAND_BASE + DRM_I810_MC, drm_i810_mc_t)
+#define DRM_IOCTL_I810_RSTATUS DRM_IO(DRM_COMMAND_BASE + DRM_I810_RSTATUS)
+#define DRM_IOCTL_I810_FLIP DRM_IO(DRM_COMMAND_BASE + DRM_I810_FLIP)
+typedef struct _drm_i810_clear {
+  int clear_color;
+  int clear_depth;
+  int flags;
+} drm_i810_clear_t;
+typedef struct _drm_i810_vertex {
+  int idx;
+  int used;
+  int discard;
+} drm_i810_vertex_t;
+typedef struct _drm_i810_copy_t {
+  int idx;
+  int used;
+  void * address;
+} drm_i810_copy_t;
+#define PR_TRIANGLES (0x0 << 18)
+#define PR_TRISTRIP_0 (0x1 << 18)
+#define PR_TRISTRIP_1 (0x2 << 18)
+#define PR_TRIFAN (0x3 << 18)
+#define PR_POLYGON (0x4 << 18)
+#define PR_LINES (0x5 << 18)
+#define PR_LINESTRIP (0x6 << 18)
+#define PR_RECTS (0x7 << 18)
+#define PR_MASK (0x7 << 18)
+typedef struct drm_i810_dma {
+  void * __linux_virtual;
+  int request_idx;
+  int request_size;
+  int granted;
+} drm_i810_dma_t;
+typedef struct _drm_i810_overlay_t {
+  unsigned int offset;
+  unsigned int physical;
+} drm_i810_overlay_t;
+typedef struct _drm_i810_mc {
+  int idx;
+  int used;
+  int num_blocks;
+  int * length;
+  unsigned int last_render;
+} drm_i810_mc_t;
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/i915_drm.h b/i686-linux-musl/include/drm/i915_drm.h
new file mode 100644
index 0000000..52bfad2
--- /dev/null
+++ b/i686-linux-musl/include/drm/i915_drm.h
@@ -0,0 +1,988 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_I915_DRM_H_
+#define _UAPI_I915_DRM_H_
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define I915_L3_PARITY_UEVENT "L3_PARITY_ERROR"
+#define I915_ERROR_UEVENT "ERROR"
+#define I915_RESET_UEVENT "RESET"
+struct i915_user_extension {
+  __u64 next_extension;
+  __u32 name;
+  __u32 flags;
+  __u32 rsvd[4];
+};
+enum i915_mocs_table_index {
+  I915_MOCS_UNCACHED,
+  I915_MOCS_PTE,
+  I915_MOCS_CACHED,
+};
+enum drm_i915_gem_engine_class {
+  I915_ENGINE_CLASS_RENDER = 0,
+  I915_ENGINE_CLASS_COPY = 1,
+  I915_ENGINE_CLASS_VIDEO = 2,
+  I915_ENGINE_CLASS_VIDEO_ENHANCE = 3,
+  I915_ENGINE_CLASS_INVALID = - 1
+};
+struct i915_engine_class_instance {
+  __u16 engine_class;
+  __u16 engine_instance;
+#define I915_ENGINE_CLASS_INVALID_NONE - 1
+#define I915_ENGINE_CLASS_INVALID_VIRTUAL - 2
+};
+enum drm_i915_pmu_engine_sample {
+  I915_SAMPLE_BUSY = 0,
+  I915_SAMPLE_WAIT = 1,
+  I915_SAMPLE_SEMA = 2
+};
+#define I915_PMU_SAMPLE_BITS (4)
+#define I915_PMU_SAMPLE_MASK (0xf)
+#define I915_PMU_SAMPLE_INSTANCE_BITS (8)
+#define I915_PMU_CLASS_SHIFT (I915_PMU_SAMPLE_BITS + I915_PMU_SAMPLE_INSTANCE_BITS)
+#define __I915_PMU_ENGINE(class,instance,sample) ((class) << I915_PMU_CLASS_SHIFT | (instance) << I915_PMU_SAMPLE_BITS | (sample))
+#define I915_PMU_ENGINE_BUSY(class,instance) __I915_PMU_ENGINE(class, instance, I915_SAMPLE_BUSY)
+#define I915_PMU_ENGINE_WAIT(class,instance) __I915_PMU_ENGINE(class, instance, I915_SAMPLE_WAIT)
+#define I915_PMU_ENGINE_SEMA(class,instance) __I915_PMU_ENGINE(class, instance, I915_SAMPLE_SEMA)
+#define __I915_PMU_OTHER(x) (__I915_PMU_ENGINE(0xff, 0xff, 0xf) + 1 + (x))
+#define I915_PMU_ACTUAL_FREQUENCY __I915_PMU_OTHER(0)
+#define I915_PMU_REQUESTED_FREQUENCY __I915_PMU_OTHER(1)
+#define I915_PMU_INTERRUPTS __I915_PMU_OTHER(2)
+#define I915_PMU_RC6_RESIDENCY __I915_PMU_OTHER(3)
+#define I915_PMU_SOFTWARE_GT_AWAKE_TIME __I915_PMU_OTHER(4)
+#define I915_PMU_LAST I915_PMU_RC6_RESIDENCY
+#define I915_NR_TEX_REGIONS 255
+#define I915_LOG_MIN_TEX_REGION_SIZE 14
+typedef struct _drm_i915_init {
+  enum {
+    I915_INIT_DMA = 0x01,
+    I915_CLEANUP_DMA = 0x02,
+    I915_RESUME_DMA = 0x03
+  } func;
+  unsigned int mmio_offset;
+  int sarea_priv_offset;
+  unsigned int ring_start;
+  unsigned int ring_end;
+  unsigned int ring_size;
+  unsigned int front_offset;
+  unsigned int back_offset;
+  unsigned int depth_offset;
+  unsigned int w;
+  unsigned int h;
+  unsigned int pitch;
+  unsigned int pitch_bits;
+  unsigned int back_pitch;
+  unsigned int depth_pitch;
+  unsigned int cpp;
+  unsigned int chipset;
+} drm_i915_init_t;
+typedef struct _drm_i915_sarea {
+  struct drm_tex_region texList[I915_NR_TEX_REGIONS + 1];
+  int last_upload;
+  int last_enqueue;
+  int last_dispatch;
+  int ctxOwner;
+  int texAge;
+  int pf_enabled;
+  int pf_active;
+  int pf_current_page;
+  int perf_boxes;
+  int width, height;
+  drm_handle_t front_handle;
+  int front_offset;
+  int front_size;
+  drm_handle_t back_handle;
+  int back_offset;
+  int back_size;
+  drm_handle_t depth_handle;
+  int depth_offset;
+  int depth_size;
+  drm_handle_t tex_handle;
+  int tex_offset;
+  int tex_size;
+  int log_tex_granularity;
+  int pitch;
+  int rotation;
+  int rotated_offset;
+  int rotated_size;
+  int rotated_pitch;
+  int virtualX, virtualY;
+  unsigned int front_tiled;
+  unsigned int back_tiled;
+  unsigned int depth_tiled;
+  unsigned int rotated_tiled;
+  unsigned int rotated2_tiled;
+  int pipeA_x;
+  int pipeA_y;
+  int pipeA_w;
+  int pipeA_h;
+  int pipeB_x;
+  int pipeB_y;
+  int pipeB_w;
+  int pipeB_h;
+  drm_handle_t unused_handle;
+  __u32 unused1, unused2, unused3;
+  __u32 front_bo_handle;
+  __u32 back_bo_handle;
+  __u32 unused_bo_handle;
+  __u32 depth_bo_handle;
+} drm_i915_sarea_t;
+#define planeA_x pipeA_x
+#define planeA_y pipeA_y
+#define planeA_w pipeA_w
+#define planeA_h pipeA_h
+#define planeB_x pipeB_x
+#define planeB_y pipeB_y
+#define planeB_w pipeB_w
+#define planeB_h pipeB_h
+#define I915_BOX_RING_EMPTY 0x1
+#define I915_BOX_FLIP 0x2
+#define I915_BOX_WAIT 0x4
+#define I915_BOX_TEXTURE_LOAD 0x8
+#define I915_BOX_LOST_CONTEXT 0x10
+#define DRM_I915_INIT 0x00
+#define DRM_I915_FLUSH 0x01
+#define DRM_I915_FLIP 0x02
+#define DRM_I915_BATCHBUFFER 0x03
+#define DRM_I915_IRQ_EMIT 0x04
+#define DRM_I915_IRQ_WAIT 0x05
+#define DRM_I915_GETPARAM 0x06
+#define DRM_I915_SETPARAM 0x07
+#define DRM_I915_ALLOC 0x08
+#define DRM_I915_FREE 0x09
+#define DRM_I915_INIT_HEAP 0x0a
+#define DRM_I915_CMDBUFFER 0x0b
+#define DRM_I915_DESTROY_HEAP 0x0c
+#define DRM_I915_SET_VBLANK_PIPE 0x0d
+#define DRM_I915_GET_VBLANK_PIPE 0x0e
+#define DRM_I915_VBLANK_SWAP 0x0f
+#define DRM_I915_HWS_ADDR 0x11
+#define DRM_I915_GEM_INIT 0x13
+#define DRM_I915_GEM_EXECBUFFER 0x14
+#define DRM_I915_GEM_PIN 0x15
+#define DRM_I915_GEM_UNPIN 0x16
+#define DRM_I915_GEM_BUSY 0x17
+#define DRM_I915_GEM_THROTTLE 0x18
+#define DRM_I915_GEM_ENTERVT 0x19
+#define DRM_I915_GEM_LEAVEVT 0x1a
+#define DRM_I915_GEM_CREATE 0x1b
+#define DRM_I915_GEM_PREAD 0x1c
+#define DRM_I915_GEM_PWRITE 0x1d
+#define DRM_I915_GEM_MMAP 0x1e
+#define DRM_I915_GEM_SET_DOMAIN 0x1f
+#define DRM_I915_GEM_SW_FINISH 0x20
+#define DRM_I915_GEM_SET_TILING 0x21
+#define DRM_I915_GEM_GET_TILING 0x22
+#define DRM_I915_GEM_GET_APERTURE 0x23
+#define DRM_I915_GEM_MMAP_GTT 0x24
+#define DRM_I915_GET_PIPE_FROM_CRTC_ID 0x25
+#define DRM_I915_GEM_MADVISE 0x26
+#define DRM_I915_OVERLAY_PUT_IMAGE 0x27
+#define DRM_I915_OVERLAY_ATTRS 0x28
+#define DRM_I915_GEM_EXECBUFFER2 0x29
+#define DRM_I915_GEM_EXECBUFFER2_WR DRM_I915_GEM_EXECBUFFER2
+#define DRM_I915_GET_SPRITE_COLORKEY 0x2a
+#define DRM_I915_SET_SPRITE_COLORKEY 0x2b
+#define DRM_I915_GEM_WAIT 0x2c
+#define DRM_I915_GEM_CONTEXT_CREATE 0x2d
+#define DRM_I915_GEM_CONTEXT_DESTROY 0x2e
+#define DRM_I915_GEM_SET_CACHING 0x2f
+#define DRM_I915_GEM_GET_CACHING 0x30
+#define DRM_I915_REG_READ 0x31
+#define DRM_I915_GET_RESET_STATS 0x32
+#define DRM_I915_GEM_USERPTR 0x33
+#define DRM_I915_GEM_CONTEXT_GETPARAM 0x34
+#define DRM_I915_GEM_CONTEXT_SETPARAM 0x35
+#define DRM_I915_PERF_OPEN 0x36
+#define DRM_I915_PERF_ADD_CONFIG 0x37
+#define DRM_I915_PERF_REMOVE_CONFIG 0x38
+#define DRM_I915_QUERY 0x39
+#define DRM_I915_GEM_VM_CREATE 0x3a
+#define DRM_I915_GEM_VM_DESTROY 0x3b
+#define DRM_I915_GEM_CREATE_EXT 0x3c
+#define DRM_IOCTL_I915_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t)
+#define DRM_IOCTL_I915_FLUSH DRM_IO(DRM_COMMAND_BASE + DRM_I915_FLUSH)
+#define DRM_IOCTL_I915_FLIP DRM_IO(DRM_COMMAND_BASE + DRM_I915_FLIP)
+#define DRM_IOCTL_I915_BATCHBUFFER DRM_IOW(DRM_COMMAND_BASE + DRM_I915_BATCHBUFFER, drm_i915_batchbuffer_t)
+#define DRM_IOCTL_I915_IRQ_EMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_IRQ_EMIT, drm_i915_irq_emit_t)
+#define DRM_IOCTL_I915_IRQ_WAIT DRM_IOW(DRM_COMMAND_BASE + DRM_I915_IRQ_WAIT, drm_i915_irq_wait_t)
+#define DRM_IOCTL_I915_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GETPARAM, drm_i915_getparam_t)
+#define DRM_IOCTL_I915_SETPARAM DRM_IOW(DRM_COMMAND_BASE + DRM_I915_SETPARAM, drm_i915_setparam_t)
+#define DRM_IOCTL_I915_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_ALLOC, drm_i915_mem_alloc_t)
+#define DRM_IOCTL_I915_FREE DRM_IOW(DRM_COMMAND_BASE + DRM_I915_FREE, drm_i915_mem_free_t)
+#define DRM_IOCTL_I915_INIT_HEAP DRM_IOW(DRM_COMMAND_BASE + DRM_I915_INIT_HEAP, drm_i915_mem_init_heap_t)
+#define DRM_IOCTL_I915_CMDBUFFER DRM_IOW(DRM_COMMAND_BASE + DRM_I915_CMDBUFFER, drm_i915_cmdbuffer_t)
+#define DRM_IOCTL_I915_DESTROY_HEAP DRM_IOW(DRM_COMMAND_BASE + DRM_I915_DESTROY_HEAP, drm_i915_mem_destroy_heap_t)
+#define DRM_IOCTL_I915_SET_VBLANK_PIPE DRM_IOW(DRM_COMMAND_BASE + DRM_I915_SET_VBLANK_PIPE, drm_i915_vblank_pipe_t)
+#define DRM_IOCTL_I915_GET_VBLANK_PIPE DRM_IOR(DRM_COMMAND_BASE + DRM_I915_GET_VBLANK_PIPE, drm_i915_vblank_pipe_t)
+#define DRM_IOCTL_I915_VBLANK_SWAP DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_VBLANK_SWAP, drm_i915_vblank_swap_t)
+#define DRM_IOCTL_I915_HWS_ADDR DRM_IOW(DRM_COMMAND_BASE + DRM_I915_HWS_ADDR, struct drm_i915_gem_init)
+#define DRM_IOCTL_I915_GEM_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_INIT, struct drm_i915_gem_init)
+#define DRM_IOCTL_I915_GEM_EXECBUFFER DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER, struct drm_i915_gem_execbuffer)
+#define DRM_IOCTL_I915_GEM_EXECBUFFER2 DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER2, struct drm_i915_gem_execbuffer2)
+#define DRM_IOCTL_I915_GEM_EXECBUFFER2_WR DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER2_WR, struct drm_i915_gem_execbuffer2)
+#define DRM_IOCTL_I915_GEM_PIN DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_PIN, struct drm_i915_gem_pin)
+#define DRM_IOCTL_I915_GEM_UNPIN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_UNPIN, struct drm_i915_gem_unpin)
+#define DRM_IOCTL_I915_GEM_BUSY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_BUSY, struct drm_i915_gem_busy)
+#define DRM_IOCTL_I915_GEM_SET_CACHING DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_SET_CACHING, struct drm_i915_gem_caching)
+#define DRM_IOCTL_I915_GEM_GET_CACHING DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_GET_CACHING, struct drm_i915_gem_caching)
+#define DRM_IOCTL_I915_GEM_THROTTLE DRM_IO(DRM_COMMAND_BASE + DRM_I915_GEM_THROTTLE)
+#define DRM_IOCTL_I915_GEM_ENTERVT DRM_IO(DRM_COMMAND_BASE + DRM_I915_GEM_ENTERVT)
+#define DRM_IOCTL_I915_GEM_LEAVEVT DRM_IO(DRM_COMMAND_BASE + DRM_I915_GEM_LEAVEVT)
+#define DRM_IOCTL_I915_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CREATE, struct drm_i915_gem_create)
+#define DRM_IOCTL_I915_GEM_CREATE_EXT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CREATE_EXT, struct drm_i915_gem_create_ext)
+#define DRM_IOCTL_I915_GEM_PREAD DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_PREAD, struct drm_i915_gem_pread)
+#define DRM_IOCTL_I915_GEM_PWRITE DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_PWRITE, struct drm_i915_gem_pwrite)
+#define DRM_IOCTL_I915_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MMAP, struct drm_i915_gem_mmap)
+#define DRM_IOCTL_I915_GEM_MMAP_GTT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MMAP_GTT, struct drm_i915_gem_mmap_gtt)
+#define DRM_IOCTL_I915_GEM_MMAP_OFFSET DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MMAP_GTT, struct drm_i915_gem_mmap_offset)
+#define DRM_IOCTL_I915_GEM_SET_DOMAIN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_SET_DOMAIN, struct drm_i915_gem_set_domain)
+#define DRM_IOCTL_I915_GEM_SW_FINISH DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_SW_FINISH, struct drm_i915_gem_sw_finish)
+#define DRM_IOCTL_I915_GEM_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_SET_TILING, struct drm_i915_gem_set_tiling)
+#define DRM_IOCTL_I915_GEM_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_GET_TILING, struct drm_i915_gem_get_tiling)
+#define DRM_IOCTL_I915_GEM_GET_APERTURE DRM_IOR(DRM_COMMAND_BASE + DRM_I915_GEM_GET_APERTURE, struct drm_i915_gem_get_aperture)
+#define DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GET_PIPE_FROM_CRTC_ID, struct drm_i915_get_pipe_from_crtc_id)
+#define DRM_IOCTL_I915_GEM_MADVISE DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MADVISE, struct drm_i915_gem_madvise)
+#define DRM_IOCTL_I915_OVERLAY_PUT_IMAGE DRM_IOW(DRM_COMMAND_BASE + DRM_I915_OVERLAY_PUT_IMAGE, struct drm_intel_overlay_put_image)
+#define DRM_IOCTL_I915_OVERLAY_ATTRS DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_OVERLAY_ATTRS, struct drm_intel_overlay_attrs)
+#define DRM_IOCTL_I915_SET_SPRITE_COLORKEY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_SET_SPRITE_COLORKEY, struct drm_intel_sprite_colorkey)
+#define DRM_IOCTL_I915_GET_SPRITE_COLORKEY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GET_SPRITE_COLORKEY, struct drm_intel_sprite_colorkey)
+#define DRM_IOCTL_I915_GEM_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_WAIT, struct drm_i915_gem_wait)
+#define DRM_IOCTL_I915_GEM_CONTEXT_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_CREATE, struct drm_i915_gem_context_create)
+#define DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_CREATE, struct drm_i915_gem_context_create_ext)
+#define DRM_IOCTL_I915_GEM_CONTEXT_DESTROY DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_DESTROY, struct drm_i915_gem_context_destroy)
+#define DRM_IOCTL_I915_REG_READ DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_REG_READ, struct drm_i915_reg_read)
+#define DRM_IOCTL_I915_GET_RESET_STATS DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GET_RESET_STATS, struct drm_i915_reset_stats)
+#define DRM_IOCTL_I915_GEM_USERPTR DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_USERPTR, struct drm_i915_gem_userptr)
+#define DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_GETPARAM, struct drm_i915_gem_context_param)
+#define DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_SETPARAM, struct drm_i915_gem_context_param)
+#define DRM_IOCTL_I915_PERF_OPEN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_OPEN, struct drm_i915_perf_open_param)
+#define DRM_IOCTL_I915_PERF_ADD_CONFIG DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_ADD_CONFIG, struct drm_i915_perf_oa_config)
+#define DRM_IOCTL_I915_PERF_REMOVE_CONFIG DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_REMOVE_CONFIG, __u64)
+#define DRM_IOCTL_I915_QUERY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_QUERY, struct drm_i915_query)
+#define DRM_IOCTL_I915_GEM_VM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_VM_CREATE, struct drm_i915_gem_vm_control)
+#define DRM_IOCTL_I915_GEM_VM_DESTROY DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_VM_DESTROY, struct drm_i915_gem_vm_control)
+typedef struct drm_i915_batchbuffer {
+  int start;
+  int used;
+  int DR1;
+  int DR4;
+  int num_cliprects;
+  struct drm_clip_rect __user * cliprects;
+} drm_i915_batchbuffer_t;
+typedef struct _drm_i915_cmdbuffer {
+  char __user * buf;
+  int sz;
+  int DR1;
+  int DR4;
+  int num_cliprects;
+  struct drm_clip_rect __user * cliprects;
+} drm_i915_cmdbuffer_t;
+typedef struct drm_i915_irq_emit {
+  int __user * irq_seq;
+} drm_i915_irq_emit_t;
+typedef struct drm_i915_irq_wait {
+  int irq_seq;
+} drm_i915_irq_wait_t;
+#define I915_GEM_PPGTT_NONE 0
+#define I915_GEM_PPGTT_ALIASING 1
+#define I915_GEM_PPGTT_FULL 2
+#define I915_PARAM_IRQ_ACTIVE 1
+#define I915_PARAM_ALLOW_BATCHBUFFER 2
+#define I915_PARAM_LAST_DISPATCH 3
+#define I915_PARAM_CHIPSET_ID 4
+#define I915_PARAM_HAS_GEM 5
+#define I915_PARAM_NUM_FENCES_AVAIL 6
+#define I915_PARAM_HAS_OVERLAY 7
+#define I915_PARAM_HAS_PAGEFLIPPING 8
+#define I915_PARAM_HAS_EXECBUF2 9
+#define I915_PARAM_HAS_BSD 10
+#define I915_PARAM_HAS_BLT 11
+#define I915_PARAM_HAS_RELAXED_FENCING 12
+#define I915_PARAM_HAS_COHERENT_RINGS 13
+#define I915_PARAM_HAS_EXEC_CONSTANTS 14
+#define I915_PARAM_HAS_RELAXED_DELTA 15
+#define I915_PARAM_HAS_GEN7_SOL_RESET 16
+#define I915_PARAM_HAS_LLC 17
+#define I915_PARAM_HAS_ALIASING_PPGTT 18
+#define I915_PARAM_HAS_WAIT_TIMEOUT 19
+#define I915_PARAM_HAS_SEMAPHORES 20
+#define I915_PARAM_HAS_PRIME_VMAP_FLUSH 21
+#define I915_PARAM_HAS_VEBOX 22
+#define I915_PARAM_HAS_SECURE_BATCHES 23
+#define I915_PARAM_HAS_PINNED_BATCHES 24
+#define I915_PARAM_HAS_EXEC_NO_RELOC 25
+#define I915_PARAM_HAS_EXEC_HANDLE_LUT 26
+#define I915_PARAM_HAS_WT 27
+#define I915_PARAM_CMD_PARSER_VERSION 28
+#define I915_PARAM_HAS_COHERENT_PHYS_GTT 29
+#define I915_PARAM_MMAP_VERSION 30
+#define I915_PARAM_HAS_BSD2 31
+#define I915_PARAM_REVISION 32
+#define I915_PARAM_SUBSLICE_TOTAL 33
+#define I915_PARAM_EU_TOTAL 34
+#define I915_PARAM_HAS_GPU_RESET 35
+#define I915_PARAM_HAS_RESOURCE_STREAMER 36
+#define I915_PARAM_HAS_EXEC_SOFTPIN 37
+#define I915_PARAM_HAS_POOLED_EU 38
+#define I915_PARAM_MIN_EU_IN_POOL 39
+#define I915_PARAM_MMAP_GTT_VERSION 40
+#define I915_PARAM_HAS_SCHEDULER 41
+#define I915_SCHEDULER_CAP_ENABLED (1ul << 0)
+#define I915_SCHEDULER_CAP_PRIORITY (1ul << 1)
+#define I915_SCHEDULER_CAP_PREEMPTION (1ul << 2)
+#define I915_SCHEDULER_CAP_SEMAPHORES (1ul << 3)
+#define I915_SCHEDULER_CAP_ENGINE_BUSY_STATS (1ul << 4)
+#define I915_SCHEDULER_CAP_STATIC_PRIORITY_MAP (1ul << 5)
+#define I915_PARAM_HUC_STATUS 42
+#define I915_PARAM_HAS_EXEC_ASYNC 43
+#define I915_PARAM_HAS_EXEC_FENCE 44
+#define I915_PARAM_HAS_EXEC_CAPTURE 45
+#define I915_PARAM_SLICE_MASK 46
+#define I915_PARAM_SUBSLICE_MASK 47
+#define I915_PARAM_HAS_EXEC_BATCH_FIRST 48
+#define I915_PARAM_HAS_EXEC_FENCE_ARRAY 49
+#define I915_PARAM_HAS_CONTEXT_ISOLATION 50
+#define I915_PARAM_CS_TIMESTAMP_FREQUENCY 51
+#define I915_PARAM_MMAP_GTT_COHERENT 52
+#define I915_PARAM_HAS_EXEC_SUBMIT_FENCE 53
+#define I915_PARAM_PERF_REVISION 54
+#define I915_PARAM_HAS_EXEC_TIMELINE_FENCES 55
+#define I915_PARAM_HAS_USERPTR_PROBE 56
+typedef struct drm_i915_getparam {
+  __s32 param;
+  int __user * value;
+} drm_i915_getparam_t;
+#define I915_SETPARAM_USE_MI_BATCHBUFFER_START 1
+#define I915_SETPARAM_TEX_LRU_LOG_GRANULARITY 2
+#define I915_SETPARAM_ALLOW_BATCHBUFFER 3
+#define I915_SETPARAM_NUM_USED_FENCES 4
+typedef struct drm_i915_setparam {
+  int param;
+  int value;
+} drm_i915_setparam_t;
+#define I915_MEM_REGION_AGP 1
+typedef struct drm_i915_mem_alloc {
+  int region;
+  int alignment;
+  int size;
+  int __user * region_offset;
+} drm_i915_mem_alloc_t;
+typedef struct drm_i915_mem_free {
+  int region;
+  int region_offset;
+} drm_i915_mem_free_t;
+typedef struct drm_i915_mem_init_heap {
+  int region;
+  int size;
+  int start;
+} drm_i915_mem_init_heap_t;
+typedef struct drm_i915_mem_destroy_heap {
+  int region;
+} drm_i915_mem_destroy_heap_t;
+#define DRM_I915_VBLANK_PIPE_A 1
+#define DRM_I915_VBLANK_PIPE_B 2
+typedef struct drm_i915_vblank_pipe {
+  int pipe;
+} drm_i915_vblank_pipe_t;
+typedef struct drm_i915_vblank_swap {
+  drm_drawable_t drawable;
+  enum drm_vblank_seq_type seqtype;
+  unsigned int sequence;
+} drm_i915_vblank_swap_t;
+typedef struct drm_i915_hws_addr {
+  __u64 addr;
+} drm_i915_hws_addr_t;
+struct drm_i915_gem_init {
+  __u64 gtt_start;
+  __u64 gtt_end;
+};
+struct drm_i915_gem_create {
+  __u64 size;
+  __u32 handle;
+  __u32 pad;
+};
+struct drm_i915_gem_pread {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+  __u64 size;
+  __u64 data_ptr;
+};
+struct drm_i915_gem_pwrite {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+  __u64 size;
+  __u64 data_ptr;
+};
+struct drm_i915_gem_mmap {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+  __u64 size;
+  __u64 addr_ptr;
+  __u64 flags;
+#define I915_MMAP_WC 0x1
+};
+struct drm_i915_gem_mmap_gtt {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+};
+struct drm_i915_gem_mmap_offset {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+  __u64 flags;
+#define I915_MMAP_OFFSET_GTT 0
+#define I915_MMAP_OFFSET_WC 1
+#define I915_MMAP_OFFSET_WB 2
+#define I915_MMAP_OFFSET_UC 3
+#define I915_MMAP_OFFSET_FIXED 4
+  __u64 extensions;
+};
+struct drm_i915_gem_set_domain {
+  __u32 handle;
+  __u32 read_domains;
+  __u32 write_domain;
+};
+struct drm_i915_gem_sw_finish {
+  __u32 handle;
+};
+struct drm_i915_gem_relocation_entry {
+  __u32 target_handle;
+  __u32 delta;
+  __u64 offset;
+  __u64 presumed_offset;
+  __u32 read_domains;
+  __u32 write_domain;
+};
+#define I915_GEM_DOMAIN_CPU 0x00000001
+#define I915_GEM_DOMAIN_RENDER 0x00000002
+#define I915_GEM_DOMAIN_SAMPLER 0x00000004
+#define I915_GEM_DOMAIN_COMMAND 0x00000008
+#define I915_GEM_DOMAIN_INSTRUCTION 0x00000010
+#define I915_GEM_DOMAIN_VERTEX 0x00000020
+#define I915_GEM_DOMAIN_GTT 0x00000040
+#define I915_GEM_DOMAIN_WC 0x00000080
+struct drm_i915_gem_exec_object {
+  __u32 handle;
+  __u32 relocation_count;
+  __u64 relocs_ptr;
+  __u64 alignment;
+  __u64 offset;
+};
+struct drm_i915_gem_execbuffer {
+  __u64 buffers_ptr;
+  __u32 buffer_count;
+  __u32 batch_start_offset;
+  __u32 batch_len;
+  __u32 DR1;
+  __u32 DR4;
+  __u32 num_cliprects;
+  __u64 cliprects_ptr;
+};
+struct drm_i915_gem_exec_object2 {
+  __u32 handle;
+  __u32 relocation_count;
+  __u64 relocs_ptr;
+  __u64 alignment;
+  __u64 offset;
+#define EXEC_OBJECT_NEEDS_FENCE (1 << 0)
+#define EXEC_OBJECT_NEEDS_GTT (1 << 1)
+#define EXEC_OBJECT_WRITE (1 << 2)
+#define EXEC_OBJECT_SUPPORTS_48B_ADDRESS (1 << 3)
+#define EXEC_OBJECT_PINNED (1 << 4)
+#define EXEC_OBJECT_PAD_TO_SIZE (1 << 5)
+#define EXEC_OBJECT_ASYNC (1 << 6)
+#define EXEC_OBJECT_CAPTURE (1 << 7)
+#define __EXEC_OBJECT_UNKNOWN_FLAGS - (EXEC_OBJECT_CAPTURE << 1)
+  __u64 flags;
+  union {
+    __u64 rsvd1;
+    __u64 pad_to_size;
+  };
+  __u64 rsvd2;
+};
+struct drm_i915_gem_exec_fence {
+  __u32 handle;
+#define I915_EXEC_FENCE_WAIT (1 << 0)
+#define I915_EXEC_FENCE_SIGNAL (1 << 1)
+#define __I915_EXEC_FENCE_UNKNOWN_FLAGS (- (I915_EXEC_FENCE_SIGNAL << 1))
+  __u32 flags;
+};
+#define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0
+struct drm_i915_gem_execbuffer_ext_timeline_fences {
+  struct i915_user_extension base;
+  __u64 fence_count;
+  __u64 handles_ptr;
+  __u64 values_ptr;
+};
+struct drm_i915_gem_execbuffer2 {
+  __u64 buffers_ptr;
+  __u32 buffer_count;
+  __u32 batch_start_offset;
+  __u32 batch_len;
+  __u32 DR1;
+  __u32 DR4;
+  __u32 num_cliprects;
+  __u64 cliprects_ptr;
+#define I915_EXEC_RING_MASK (0x3f)
+#define I915_EXEC_DEFAULT (0 << 0)
+#define I915_EXEC_RENDER (1 << 0)
+#define I915_EXEC_BSD (2 << 0)
+#define I915_EXEC_BLT (3 << 0)
+#define I915_EXEC_VEBOX (4 << 0)
+#define I915_EXEC_CONSTANTS_MASK (3 << 6)
+#define I915_EXEC_CONSTANTS_REL_GENERAL (0 << 6)
+#define I915_EXEC_CONSTANTS_ABSOLUTE (1 << 6)
+#define I915_EXEC_CONSTANTS_REL_SURFACE (2 << 6)
+  __u64 flags;
+  __u64 rsvd1;
+  __u64 rsvd2;
+};
+#define I915_EXEC_GEN7_SOL_RESET (1 << 8)
+#define I915_EXEC_SECURE (1 << 9)
+#define I915_EXEC_IS_PINNED (1 << 10)
+#define I915_EXEC_NO_RELOC (1 << 11)
+#define I915_EXEC_HANDLE_LUT (1 << 12)
+#define I915_EXEC_BSD_SHIFT (13)
+#define I915_EXEC_BSD_MASK (3 << I915_EXEC_BSD_SHIFT)
+#define I915_EXEC_BSD_DEFAULT (0 << I915_EXEC_BSD_SHIFT)
+#define I915_EXEC_BSD_RING1 (1 << I915_EXEC_BSD_SHIFT)
+#define I915_EXEC_BSD_RING2 (2 << I915_EXEC_BSD_SHIFT)
+#define I915_EXEC_RESOURCE_STREAMER (1 << 15)
+#define I915_EXEC_FENCE_IN (1 << 16)
+#define I915_EXEC_FENCE_OUT (1 << 17)
+#define I915_EXEC_BATCH_FIRST (1 << 18)
+#define I915_EXEC_FENCE_ARRAY (1 << 19)
+#define I915_EXEC_FENCE_SUBMIT (1 << 20)
+#define I915_EXEC_USE_EXTENSIONS (1 << 21)
+#define __I915_EXEC_UNKNOWN_FLAGS (- (I915_EXEC_USE_EXTENSIONS << 1))
+#define I915_EXEC_CONTEXT_ID_MASK (0xffffffff)
+#define i915_execbuffer2_set_context_id(eb2,context) (eb2).rsvd1 = context & I915_EXEC_CONTEXT_ID_MASK
+#define i915_execbuffer2_get_context_id(eb2) ((eb2).rsvd1 & I915_EXEC_CONTEXT_ID_MASK)
+struct drm_i915_gem_pin {
+  __u32 handle;
+  __u32 pad;
+  __u64 alignment;
+  __u64 offset;
+};
+struct drm_i915_gem_unpin {
+  __u32 handle;
+  __u32 pad;
+};
+struct drm_i915_gem_busy {
+  __u32 handle;
+  __u32 busy;
+};
+struct drm_i915_gem_caching {
+  __u32 handle;
+#define I915_CACHING_NONE 0
+#define I915_CACHING_CACHED 1
+#define I915_CACHING_DISPLAY 2
+  __u32 caching;
+};
+#define I915_TILING_NONE 0
+#define I915_TILING_X 1
+#define I915_TILING_Y 2
+#define I915_TILING_LAST I915_TILING_Y
+#define I915_BIT_6_SWIZZLE_NONE 0
+#define I915_BIT_6_SWIZZLE_9 1
+#define I915_BIT_6_SWIZZLE_9_10 2
+#define I915_BIT_6_SWIZZLE_9_11 3
+#define I915_BIT_6_SWIZZLE_9_10_11 4
+#define I915_BIT_6_SWIZZLE_UNKNOWN 5
+#define I915_BIT_6_SWIZZLE_9_17 6
+#define I915_BIT_6_SWIZZLE_9_10_17 7
+struct drm_i915_gem_set_tiling {
+  __u32 handle;
+  __u32 tiling_mode;
+  __u32 stride;
+  __u32 swizzle_mode;
+};
+struct drm_i915_gem_get_tiling {
+  __u32 handle;
+  __u32 tiling_mode;
+  __u32 swizzle_mode;
+  __u32 phys_swizzle_mode;
+};
+struct drm_i915_gem_get_aperture {
+  __u64 aper_size;
+  __u64 aper_available_size;
+};
+struct drm_i915_get_pipe_from_crtc_id {
+  __u32 crtc_id;
+  __u32 pipe;
+};
+#define I915_MADV_WILLNEED 0
+#define I915_MADV_DONTNEED 1
+#define __I915_MADV_PURGED 2
+struct drm_i915_gem_madvise {
+  __u32 handle;
+  __u32 madv;
+  __u32 retained;
+};
+#define I915_OVERLAY_TYPE_MASK 0xff
+#define I915_OVERLAY_YUV_PLANAR 0x01
+#define I915_OVERLAY_YUV_PACKED 0x02
+#define I915_OVERLAY_RGB 0x03
+#define I915_OVERLAY_DEPTH_MASK 0xff00
+#define I915_OVERLAY_RGB24 0x1000
+#define I915_OVERLAY_RGB16 0x2000
+#define I915_OVERLAY_RGB15 0x3000
+#define I915_OVERLAY_YUV422 0x0100
+#define I915_OVERLAY_YUV411 0x0200
+#define I915_OVERLAY_YUV420 0x0300
+#define I915_OVERLAY_YUV410 0x0400
+#define I915_OVERLAY_SWAP_MASK 0xff0000
+#define I915_OVERLAY_NO_SWAP 0x000000
+#define I915_OVERLAY_UV_SWAP 0x010000
+#define I915_OVERLAY_Y_SWAP 0x020000
+#define I915_OVERLAY_Y_AND_UV_SWAP 0x030000
+#define I915_OVERLAY_FLAGS_MASK 0xff000000
+#define I915_OVERLAY_ENABLE 0x01000000
+struct drm_intel_overlay_put_image {
+  __u32 flags;
+  __u32 bo_handle;
+  __u16 stride_Y;
+  __u16 stride_UV;
+  __u32 offset_Y;
+  __u32 offset_U;
+  __u32 offset_V;
+  __u16 src_width;
+  __u16 src_height;
+  __u16 src_scan_width;
+  __u16 src_scan_height;
+  __u32 crtc_id;
+  __u16 dst_x;
+  __u16 dst_y;
+  __u16 dst_width;
+  __u16 dst_height;
+};
+#define I915_OVERLAY_UPDATE_ATTRS (1 << 0)
+#define I915_OVERLAY_UPDATE_GAMMA (1 << 1)
+#define I915_OVERLAY_DISABLE_DEST_COLORKEY (1 << 2)
+struct drm_intel_overlay_attrs {
+  __u32 flags;
+  __u32 color_key;
+  __s32 brightness;
+  __u32 contrast;
+  __u32 saturation;
+  __u32 gamma0;
+  __u32 gamma1;
+  __u32 gamma2;
+  __u32 gamma3;
+  __u32 gamma4;
+  __u32 gamma5;
+};
+#define I915_SET_COLORKEY_NONE (1 << 0)
+#define I915_SET_COLORKEY_DESTINATION (1 << 1)
+#define I915_SET_COLORKEY_SOURCE (1 << 2)
+struct drm_intel_sprite_colorkey {
+  __u32 plane_id;
+  __u32 min_value;
+  __u32 channel_mask;
+  __u32 max_value;
+  __u32 flags;
+};
+struct drm_i915_gem_wait {
+  __u32 bo_handle;
+  __u32 flags;
+  __s64 timeout_ns;
+};
+struct drm_i915_gem_context_create {
+  __u32 ctx_id;
+  __u32 pad;
+};
+struct drm_i915_gem_context_create_ext {
+  __u32 ctx_id;
+  __u32 flags;
+#define I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS (1u << 0)
+#define I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE (1u << 1)
+#define I915_CONTEXT_CREATE_FLAGS_UNKNOWN (- (I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE << 1))
+  __u64 extensions;
+};
+struct drm_i915_gem_context_param {
+  __u32 ctx_id;
+  __u32 size;
+  __u64 param;
+#define I915_CONTEXT_PARAM_BAN_PERIOD 0x1
+#define I915_CONTEXT_PARAM_NO_ZEROMAP 0x2
+#define I915_CONTEXT_PARAM_GTT_SIZE 0x3
+#define I915_CONTEXT_PARAM_NO_ERROR_CAPTURE 0x4
+#define I915_CONTEXT_PARAM_BANNABLE 0x5
+#define I915_CONTEXT_PARAM_PRIORITY 0x6
+#define I915_CONTEXT_MAX_USER_PRIORITY 1023
+#define I915_CONTEXT_DEFAULT_PRIORITY 0
+#define I915_CONTEXT_MIN_USER_PRIORITY - 1023
+#define I915_CONTEXT_PARAM_SSEU 0x7
+#define I915_CONTEXT_PARAM_RECOVERABLE 0x8
+#define I915_CONTEXT_PARAM_VM 0x9
+#define I915_CONTEXT_PARAM_ENGINES 0xa
+#define I915_CONTEXT_PARAM_PERSISTENCE 0xb
+#define I915_CONTEXT_PARAM_RINGSIZE 0xc
+#define I915_CONTEXT_PARAM_PROTECTED_CONTENT 0xd
+  __u64 value;
+};
+struct drm_i915_gem_context_param_sseu {
+  struct i915_engine_class_instance engine;
+  __u32 flags;
+#define I915_CONTEXT_SSEU_FLAG_ENGINE_INDEX (1u << 0)
+  __u64 slice_mask;
+  __u64 subslice_mask;
+  __u16 min_eus_per_subslice;
+  __u16 max_eus_per_subslice;
+  __u32 rsvd;
+};
+struct i915_context_engines_load_balance {
+  struct i915_user_extension base;
+  __u16 engine_index;
+  __u16 num_siblings;
+  __u32 flags;
+  __u64 mbz64;
+  struct i915_engine_class_instance engines[0];
+} __attribute__((packed));
+#define I915_DEFINE_CONTEXT_ENGINES_LOAD_BALANCE(name__,N__) struct { struct i915_user_extension base; __u16 engine_index; __u16 num_siblings; __u32 flags; __u64 mbz64; struct i915_engine_class_instance engines[N__]; \
+} __attribute__((packed)) name__
+struct i915_context_engines_bond {
+  struct i915_user_extension base;
+  struct i915_engine_class_instance master;
+  __u16 virtual_index;
+  __u16 num_bonds;
+  __u64 flags;
+  __u64 mbz64[4];
+  struct i915_engine_class_instance engines[0];
+} __attribute__((packed));
+#define I915_DEFINE_CONTEXT_ENGINES_BOND(name__,N__) struct { struct i915_user_extension base; struct i915_engine_class_instance master; __u16 virtual_index; __u16 num_bonds; __u64 flags; __u64 mbz64[4]; struct i915_engine_class_instance engines[N__]; \
+} __attribute__((packed)) name__
+struct i915_context_engines_parallel_submit {
+  struct i915_user_extension base;
+  __u16 engine_index;
+  __u16 width;
+  __u16 num_siblings;
+  __u16 mbz16;
+  __u64 flags;
+  __u64 mbz64[3];
+  struct i915_engine_class_instance engines[0];
+} __packed;
+#define I915_DEFINE_CONTEXT_ENGINES_PARALLEL_SUBMIT(name__,N__) struct { struct i915_user_extension base; __u16 engine_index; __u16 width; __u16 num_siblings; __u16 mbz16; __u64 flags; __u64 mbz64[3]; struct i915_engine_class_instance engines[N__]; \
+} __attribute__((packed)) name__
+struct i915_context_param_engines {
+  __u64 extensions;
+#define I915_CONTEXT_ENGINES_EXT_LOAD_BALANCE 0
+#define I915_CONTEXT_ENGINES_EXT_BOND 1
+#define I915_CONTEXT_ENGINES_EXT_PARALLEL_SUBMIT 2
+  struct i915_engine_class_instance engines[0];
+} __attribute__((packed));
+#define I915_DEFINE_CONTEXT_PARAM_ENGINES(name__,N__) struct { __u64 extensions; struct i915_engine_class_instance engines[N__]; \
+} __attribute__((packed)) name__
+struct drm_i915_gem_context_create_ext_setparam {
+#define I915_CONTEXT_CREATE_EXT_SETPARAM 0
+  struct i915_user_extension base;
+  struct drm_i915_gem_context_param param;
+};
+#define I915_CONTEXT_CREATE_EXT_CLONE 1
+struct drm_i915_gem_context_destroy {
+  __u32 ctx_id;
+  __u32 pad;
+};
+struct drm_i915_gem_vm_control {
+  __u64 extensions;
+  __u32 flags;
+  __u32 vm_id;
+};
+struct drm_i915_reg_read {
+  __u64 offset;
+#define I915_REG_READ_8B_WA (1ul << 0)
+  __u64 val;
+};
+struct drm_i915_reset_stats {
+  __u32 ctx_id;
+  __u32 flags;
+  __u32 reset_count;
+  __u32 batch_active;
+  __u32 batch_pending;
+  __u32 pad;
+};
+struct drm_i915_gem_userptr {
+  __u64 user_ptr;
+  __u64 user_size;
+  __u32 flags;
+#define I915_USERPTR_READ_ONLY 0x1
+#define I915_USERPTR_PROBE 0x2
+#define I915_USERPTR_UNSYNCHRONIZED 0x80000000
+  __u32 handle;
+};
+enum drm_i915_oa_format {
+  I915_OA_FORMAT_A13 = 1,
+  I915_OA_FORMAT_A29,
+  I915_OA_FORMAT_A13_B8_C8,
+  I915_OA_FORMAT_B4_C8,
+  I915_OA_FORMAT_A45_B8_C8,
+  I915_OA_FORMAT_B4_C8_A16,
+  I915_OA_FORMAT_C4_B8,
+  I915_OA_FORMAT_A12,
+  I915_OA_FORMAT_A12_B8_C8,
+  I915_OA_FORMAT_A32u40_A4u32_B8_C8,
+  I915_OA_FORMAT_MAX
+};
+enum drm_i915_perf_property_id {
+  DRM_I915_PERF_PROP_CTX_HANDLE = 1,
+  DRM_I915_PERF_PROP_SAMPLE_OA,
+  DRM_I915_PERF_PROP_OA_METRICS_SET,
+  DRM_I915_PERF_PROP_OA_FORMAT,
+  DRM_I915_PERF_PROP_OA_EXPONENT,
+  DRM_I915_PERF_PROP_HOLD_PREEMPTION,
+  DRM_I915_PERF_PROP_GLOBAL_SSEU,
+  DRM_I915_PERF_PROP_POLL_OA_PERIOD,
+  DRM_I915_PERF_PROP_MAX
+};
+struct drm_i915_perf_open_param {
+  __u32 flags;
+#define I915_PERF_FLAG_FD_CLOEXEC (1 << 0)
+#define I915_PERF_FLAG_FD_NONBLOCK (1 << 1)
+#define I915_PERF_FLAG_DISABLED (1 << 2)
+  __u32 num_properties;
+  __u64 properties_ptr;
+};
+#define I915_PERF_IOCTL_ENABLE _IO('i', 0x0)
+#define I915_PERF_IOCTL_DISABLE _IO('i', 0x1)
+#define I915_PERF_IOCTL_CONFIG _IO('i', 0x2)
+struct drm_i915_perf_record_header {
+  __u32 type;
+  __u16 pad;
+  __u16 size;
+};
+enum drm_i915_perf_record_type {
+  DRM_I915_PERF_RECORD_SAMPLE = 1,
+  DRM_I915_PERF_RECORD_OA_REPORT_LOST = 2,
+  DRM_I915_PERF_RECORD_OA_BUFFER_LOST = 3,
+  DRM_I915_PERF_RECORD_MAX
+};
+struct drm_i915_perf_oa_config {
+  char uuid[36];
+  __u32 n_mux_regs;
+  __u32 n_boolean_regs;
+  __u32 n_flex_regs;
+  __u64 mux_regs_ptr;
+  __u64 boolean_regs_ptr;
+  __u64 flex_regs_ptr;
+};
+struct drm_i915_query_item {
+  __u64 query_id;
+#define DRM_I915_QUERY_TOPOLOGY_INFO 1
+#define DRM_I915_QUERY_ENGINE_INFO 2
+#define DRM_I915_QUERY_PERF_CONFIG 3
+#define DRM_I915_QUERY_MEMORY_REGIONS 4
+  __s32 length;
+  __u32 flags;
+#define DRM_I915_QUERY_PERF_CONFIG_LIST 1
+#define DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID 2
+#define DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_ID 3
+  __u64 data_ptr;
+};
+struct drm_i915_query {
+  __u32 num_items;
+  __u32 flags;
+  __u64 items_ptr;
+};
+struct drm_i915_query_topology_info {
+  __u16 flags;
+  __u16 max_slices;
+  __u16 max_subslices;
+  __u16 max_eus_per_subslice;
+  __u16 subslice_offset;
+  __u16 subslice_stride;
+  __u16 eu_offset;
+  __u16 eu_stride;
+  __u8 data[];
+};
+struct drm_i915_engine_info {
+  struct i915_engine_class_instance engine;
+  __u32 rsvd0;
+  __u64 flags;
+#define I915_ENGINE_INFO_HAS_LOGICAL_INSTANCE (1 << 0)
+  __u64 capabilities;
+#define I915_VIDEO_CLASS_CAPABILITY_HEVC (1 << 0)
+#define I915_VIDEO_AND_ENHANCE_CLASS_CAPABILITY_SFC (1 << 1)
+  __u16 logical_instance;
+  __u16 rsvd1[3];
+  __u64 rsvd2[3];
+};
+struct drm_i915_query_engine_info {
+  __u32 num_engines;
+  __u32 rsvd[3];
+  struct drm_i915_engine_info engines[];
+};
+struct drm_i915_query_perf_config {
+  union {
+    __u64 n_configs;
+    __u64 config;
+    char uuid[36];
+  };
+  __u32 flags;
+  __u8 data[];
+};
+enum drm_i915_gem_memory_class {
+  I915_MEMORY_CLASS_SYSTEM = 0,
+  I915_MEMORY_CLASS_DEVICE,
+};
+struct drm_i915_gem_memory_class_instance {
+  __u16 memory_class;
+  __u16 memory_instance;
+};
+struct drm_i915_memory_region_info {
+  struct drm_i915_gem_memory_class_instance region;
+  __u32 rsvd0;
+  __u64 probed_size;
+  __u64 unallocated_size;
+  __u64 rsvd1[8];
+};
+struct drm_i915_query_memory_regions {
+  __u32 num_regions;
+  __u32 rsvd[3];
+  struct drm_i915_memory_region_info regions[];
+};
+struct drm_i915_gem_create_ext {
+  __u64 size;
+  __u32 handle;
+  __u32 flags;
+#define I915_GEM_CREATE_EXT_MEMORY_REGIONS 0
+#define I915_GEM_CREATE_EXT_PROTECTED_CONTENT 1
+  __u64 extensions;
+};
+struct drm_i915_gem_create_ext_memory_regions {
+  struct i915_user_extension base;
+  __u32 pad;
+  __u32 num_regions;
+  __u64 regions;
+};
+struct drm_i915_gem_create_ext_protected_content {
+  struct i915_user_extension base;
+  __u32 flags;
+};
+#define I915_PROTECTED_CONTENT_DEFAULT_SESSION 0xf
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/lima_drm.h b/i686-linux-musl/include/drm/lima_drm.h
new file mode 100644
index 0000000..bd8ba9c
--- /dev/null
+++ b/i686-linux-musl/include/drm/lima_drm.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 __LIMA_DRM_H__
+#define __LIMA_DRM_H__
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+enum drm_lima_param_gpu_id {
+  DRM_LIMA_PARAM_GPU_ID_UNKNOWN,
+  DRM_LIMA_PARAM_GPU_ID_MALI400,
+  DRM_LIMA_PARAM_GPU_ID_MALI450,
+};
+enum drm_lima_param {
+  DRM_LIMA_PARAM_GPU_ID,
+  DRM_LIMA_PARAM_NUM_PP,
+  DRM_LIMA_PARAM_GP_VERSION,
+  DRM_LIMA_PARAM_PP_VERSION,
+};
+struct drm_lima_get_param {
+  __u32 param;
+  __u32 pad;
+  __u64 value;
+};
+#define LIMA_BO_FLAG_HEAP (1 << 0)
+struct drm_lima_gem_create {
+  __u32 size;
+  __u32 flags;
+  __u32 handle;
+  __u32 pad;
+};
+struct drm_lima_gem_info {
+  __u32 handle;
+  __u32 va;
+  __u64 offset;
+};
+#define LIMA_SUBMIT_BO_READ 0x01
+#define LIMA_SUBMIT_BO_WRITE 0x02
+struct drm_lima_gem_submit_bo {
+  __u32 handle;
+  __u32 flags;
+};
+#define LIMA_GP_FRAME_REG_NUM 6
+struct drm_lima_gp_frame {
+  __u32 frame[LIMA_GP_FRAME_REG_NUM];
+};
+#define LIMA_PP_FRAME_REG_NUM 23
+#define LIMA_PP_WB_REG_NUM 12
+struct drm_lima_m400_pp_frame {
+  __u32 frame[LIMA_PP_FRAME_REG_NUM];
+  __u32 num_pp;
+  __u32 wb[3 * LIMA_PP_WB_REG_NUM];
+  __u32 plbu_array_address[4];
+  __u32 fragment_stack_address[4];
+};
+struct drm_lima_m450_pp_frame {
+  __u32 frame[LIMA_PP_FRAME_REG_NUM];
+  __u32 num_pp;
+  __u32 wb[3 * LIMA_PP_WB_REG_NUM];
+  __u32 use_dlbu;
+  __u32 _pad;
+  union {
+    __u32 plbu_array_address[8];
+    __u32 dlbu_regs[4];
+  };
+  __u32 fragment_stack_address[8];
+};
+#define LIMA_PIPE_GP 0x00
+#define LIMA_PIPE_PP 0x01
+#define LIMA_SUBMIT_FLAG_EXPLICIT_FENCE (1 << 0)
+struct drm_lima_gem_submit {
+  __u32 ctx;
+  __u32 pipe;
+  __u32 nr_bos;
+  __u32 frame_size;
+  __u64 bos;
+  __u64 frame;
+  __u32 flags;
+  __u32 out_sync;
+  __u32 in_sync[2];
+};
+#define LIMA_GEM_WAIT_READ 0x01
+#define LIMA_GEM_WAIT_WRITE 0x02
+struct drm_lima_gem_wait {
+  __u32 handle;
+  __u32 op;
+  __s64 timeout_ns;
+};
+struct drm_lima_ctx_create {
+  __u32 id;
+  __u32 _pad;
+};
+struct drm_lima_ctx_free {
+  __u32 id;
+  __u32 _pad;
+};
+#define DRM_LIMA_GET_PARAM 0x00
+#define DRM_LIMA_GEM_CREATE 0x01
+#define DRM_LIMA_GEM_INFO 0x02
+#define DRM_LIMA_GEM_SUBMIT 0x03
+#define DRM_LIMA_GEM_WAIT 0x04
+#define DRM_LIMA_CTX_CREATE 0x05
+#define DRM_LIMA_CTX_FREE 0x06
+#define DRM_IOCTL_LIMA_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_LIMA_GET_PARAM, struct drm_lima_get_param)
+#define DRM_IOCTL_LIMA_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_LIMA_GEM_CREATE, struct drm_lima_gem_create)
+#define DRM_IOCTL_LIMA_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_LIMA_GEM_INFO, struct drm_lima_gem_info)
+#define DRM_IOCTL_LIMA_GEM_SUBMIT DRM_IOW(DRM_COMMAND_BASE + DRM_LIMA_GEM_SUBMIT, struct drm_lima_gem_submit)
+#define DRM_IOCTL_LIMA_GEM_WAIT DRM_IOW(DRM_COMMAND_BASE + DRM_LIMA_GEM_WAIT, struct drm_lima_gem_wait)
+#define DRM_IOCTL_LIMA_CTX_CREATE DRM_IOR(DRM_COMMAND_BASE + DRM_LIMA_CTX_CREATE, struct drm_lima_ctx_create)
+#define DRM_IOCTL_LIMA_CTX_FREE DRM_IOW(DRM_COMMAND_BASE + DRM_LIMA_CTX_FREE, struct drm_lima_ctx_free)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/mga_drm.h b/i686-linux-musl/include/drm/mga_drm.h
new file mode 100644
index 0000000..dc62961
--- /dev/null
+++ b/i686-linux-musl/include/drm/mga_drm.h
@@ -0,0 +1,247 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __MGA_DRM_H__
+#define __MGA_DRM_H__
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef __MGA_SAREA_DEFINES__
+#define __MGA_SAREA_DEFINES__
+#define MGA_F 0x1
+#define MGA_A 0x2
+#define MGA_S 0x4
+#define MGA_T2 0x8
+#define MGA_WARP_TGZ 0
+#define MGA_WARP_TGZF (MGA_F)
+#define MGA_WARP_TGZA (MGA_A)
+#define MGA_WARP_TGZAF (MGA_F | MGA_A)
+#define MGA_WARP_TGZS (MGA_S)
+#define MGA_WARP_TGZSF (MGA_S | MGA_F)
+#define MGA_WARP_TGZSA (MGA_S | MGA_A)
+#define MGA_WARP_TGZSAF (MGA_S | MGA_F | MGA_A)
+#define MGA_WARP_T2GZ (MGA_T2)
+#define MGA_WARP_T2GZF (MGA_T2 | MGA_F)
+#define MGA_WARP_T2GZA (MGA_T2 | MGA_A)
+#define MGA_WARP_T2GZAF (MGA_T2 | MGA_A | MGA_F)
+#define MGA_WARP_T2GZS (MGA_T2 | MGA_S)
+#define MGA_WARP_T2GZSF (MGA_T2 | MGA_S | MGA_F)
+#define MGA_WARP_T2GZSA (MGA_T2 | MGA_S | MGA_A)
+#define MGA_WARP_T2GZSAF (MGA_T2 | MGA_S | MGA_F | MGA_A)
+#define MGA_MAX_G200_PIPES 8
+#define MGA_MAX_G400_PIPES 16
+#define MGA_MAX_WARP_PIPES MGA_MAX_G400_PIPES
+#define MGA_WARP_UCODE_SIZE 32768
+#define MGA_CARD_TYPE_G200 1
+#define MGA_CARD_TYPE_G400 2
+#define MGA_CARD_TYPE_G450 3
+#define MGA_CARD_TYPE_G550 4
+#define MGA_FRONT 0x1
+#define MGA_BACK 0x2
+#define MGA_DEPTH 0x4
+#define MGA_UPLOAD_CONTEXT 0x1
+#define MGA_UPLOAD_TEX0 0x2
+#define MGA_UPLOAD_TEX1 0x4
+#define MGA_UPLOAD_PIPE 0x8
+#define MGA_UPLOAD_TEX0IMAGE 0x10
+#define MGA_UPLOAD_TEX1IMAGE 0x20
+#define MGA_UPLOAD_2D 0x40
+#define MGA_WAIT_AGE 0x80
+#define MGA_UPLOAD_CLIPRECTS 0x100
+#define MGA_BUFFER_SIZE (1 << 16)
+#define MGA_NUM_BUFFERS 128
+#define MGA_NR_SAREA_CLIPRECTS 8
+#define MGA_CARD_HEAP 0
+#define MGA_AGP_HEAP 1
+#define MGA_NR_TEX_HEAPS 2
+#define MGA_NR_TEX_REGIONS 16
+#define MGA_LOG_MIN_TEX_REGION_SIZE 16
+#define DRM_MGA_IDLE_RETRY 2048
+#endif
+typedef struct {
+  unsigned int dstorg;
+  unsigned int maccess;
+  unsigned int plnwt;
+  unsigned int dwgctl;
+  unsigned int alphactrl;
+  unsigned int fogcolor;
+  unsigned int wflag;
+  unsigned int tdualstage0;
+  unsigned int tdualstage1;
+  unsigned int fcol;
+  unsigned int stencil;
+  unsigned int stencilctl;
+} drm_mga_context_regs_t;
+typedef struct {
+  unsigned int pitch;
+} drm_mga_server_regs_t;
+typedef struct {
+  unsigned int texctl;
+  unsigned int texctl2;
+  unsigned int texfilter;
+  unsigned int texbordercol;
+  unsigned int texorg;
+  unsigned int texwidth;
+  unsigned int texheight;
+  unsigned int texorg1;
+  unsigned int texorg2;
+  unsigned int texorg3;
+  unsigned int texorg4;
+} drm_mga_texture_regs_t;
+typedef struct {
+  unsigned int head;
+  unsigned int wrap;
+} drm_mga_age_t;
+typedef struct _drm_mga_sarea {
+  drm_mga_context_regs_t context_state;
+  drm_mga_server_regs_t server_state;
+  drm_mga_texture_regs_t tex_state[2];
+  unsigned int warp_pipe;
+  unsigned int dirty;
+  unsigned int vertsize;
+  struct drm_clip_rect boxes[MGA_NR_SAREA_CLIPRECTS];
+  unsigned int nbox;
+  unsigned int req_drawable;
+  unsigned int req_draw_buffer;
+  unsigned int exported_drawable;
+  unsigned int exported_index;
+  unsigned int exported_stamp;
+  unsigned int exported_buffers;
+  unsigned int exported_nfront;
+  unsigned int exported_nback;
+  int exported_back_x, exported_front_x, exported_w;
+  int exported_back_y, exported_front_y, exported_h;
+  struct drm_clip_rect exported_boxes[MGA_NR_SAREA_CLIPRECTS];
+  unsigned int status[4];
+  unsigned int last_wrap;
+  drm_mga_age_t last_frame;
+  unsigned int last_enqueue;
+  unsigned int last_dispatch;
+  unsigned int last_quiescent;
+  struct drm_tex_region texList[MGA_NR_TEX_HEAPS][MGA_NR_TEX_REGIONS + 1];
+  unsigned int texAge[MGA_NR_TEX_HEAPS];
+  int ctxOwner;
+} drm_mga_sarea_t;
+#define DRM_MGA_INIT 0x00
+#define DRM_MGA_FLUSH 0x01
+#define DRM_MGA_RESET 0x02
+#define DRM_MGA_SWAP 0x03
+#define DRM_MGA_CLEAR 0x04
+#define DRM_MGA_VERTEX 0x05
+#define DRM_MGA_INDICES 0x06
+#define DRM_MGA_ILOAD 0x07
+#define DRM_MGA_BLIT 0x08
+#define DRM_MGA_GETPARAM 0x09
+#define DRM_MGA_SET_FENCE 0x0a
+#define DRM_MGA_WAIT_FENCE 0x0b
+#define DRM_MGA_DMA_BOOTSTRAP 0x0c
+#define DRM_IOCTL_MGA_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_INIT, drm_mga_init_t)
+#define DRM_IOCTL_MGA_FLUSH DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_FLUSH, struct drm_lock)
+#define DRM_IOCTL_MGA_RESET DRM_IO(DRM_COMMAND_BASE + DRM_MGA_RESET)
+#define DRM_IOCTL_MGA_SWAP DRM_IO(DRM_COMMAND_BASE + DRM_MGA_SWAP)
+#define DRM_IOCTL_MGA_CLEAR DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_CLEAR, drm_mga_clear_t)
+#define DRM_IOCTL_MGA_VERTEX DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_VERTEX, drm_mga_vertex_t)
+#define DRM_IOCTL_MGA_INDICES DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_INDICES, drm_mga_indices_t)
+#define DRM_IOCTL_MGA_ILOAD DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_ILOAD, drm_mga_iload_t)
+#define DRM_IOCTL_MGA_BLIT DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_BLIT, drm_mga_blit_t)
+#define DRM_IOCTL_MGA_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_MGA_GETPARAM, drm_mga_getparam_t)
+#define DRM_IOCTL_MGA_SET_FENCE DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_SET_FENCE, __u32)
+#define DRM_IOCTL_MGA_WAIT_FENCE DRM_IOWR(DRM_COMMAND_BASE + DRM_MGA_WAIT_FENCE, __u32)
+#define DRM_IOCTL_MGA_DMA_BOOTSTRAP DRM_IOWR(DRM_COMMAND_BASE + DRM_MGA_DMA_BOOTSTRAP, drm_mga_dma_bootstrap_t)
+typedef struct _drm_mga_warp_index {
+  int installed;
+  unsigned long phys_addr;
+  int size;
+} drm_mga_warp_index_t;
+typedef struct drm_mga_init {
+  enum {
+    MGA_INIT_DMA = 0x01,
+    MGA_CLEANUP_DMA = 0x02
+  } func;
+  unsigned long sarea_priv_offset;
+  __struct_group(, always32bit,, int chipset;
+  int sgram;
+  unsigned int maccess;
+  unsigned int fb_cpp;
+  unsigned int front_offset, front_pitch;
+  unsigned int back_offset, back_pitch;
+  unsigned int depth_cpp;
+  unsigned int depth_offset, depth_pitch;
+  unsigned int texture_offset[MGA_NR_TEX_HEAPS];
+  unsigned int texture_size[MGA_NR_TEX_HEAPS];
+ );
+  unsigned long fb_offset;
+  unsigned long mmio_offset;
+  unsigned long status_offset;
+  unsigned long warp_offset;
+  unsigned long primary_offset;
+  unsigned long buffers_offset;
+} drm_mga_init_t;
+typedef struct drm_mga_dma_bootstrap {
+  unsigned long texture_handle;
+  __u32 texture_size;
+  __u32 primary_size;
+  __u32 secondary_bin_count;
+  __u32 secondary_bin_size;
+  __u32 agp_mode;
+  __u8 agp_size;
+} drm_mga_dma_bootstrap_t;
+typedef struct drm_mga_clear {
+  unsigned int flags;
+  unsigned int clear_color;
+  unsigned int clear_depth;
+  unsigned int color_mask;
+  unsigned int depth_mask;
+} drm_mga_clear_t;
+typedef struct drm_mga_vertex {
+  int idx;
+  int used;
+  int discard;
+} drm_mga_vertex_t;
+typedef struct drm_mga_indices {
+  int idx;
+  unsigned int start;
+  unsigned int end;
+  int discard;
+} drm_mga_indices_t;
+typedef struct drm_mga_iload {
+  int idx;
+  unsigned int dstorg;
+  unsigned int length;
+} drm_mga_iload_t;
+typedef struct _drm_mga_blit {
+  unsigned int planemask;
+  unsigned int srcorg;
+  unsigned int dstorg;
+  int src_pitch, dst_pitch;
+  int delta_sx, delta_sy;
+  int delta_dx, delta_dy;
+  int height, ydir;
+  int source_pitch, dest_pitch;
+} drm_mga_blit_t;
+#define MGA_PARAM_IRQ_NR 1
+#define MGA_PARAM_CARD_TYPE 2
+typedef struct drm_mga_getparam {
+  int param;
+  void __user * value;
+} drm_mga_getparam_t;
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/msm_drm.h b/i686-linux-musl/include/drm/msm_drm.h
new file mode 100644
index 0000000..b4ba1d0
--- /dev/null
+++ b/i686-linux-musl/include/drm/msm_drm.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 __MSM_DRM_H__
+#define __MSM_DRM_H__
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define MSM_PIPE_NONE 0x00
+#define MSM_PIPE_2D0 0x01
+#define MSM_PIPE_2D1 0x02
+#define MSM_PIPE_3D0 0x10
+#define MSM_PIPE_ID_MASK 0xffff
+#define MSM_PIPE_ID(x) ((x) & MSM_PIPE_ID_MASK)
+#define MSM_PIPE_FLAGS(x) ((x) & ~MSM_PIPE_ID_MASK)
+struct drm_msm_timespec {
+  __s64 tv_sec;
+  __s64 tv_nsec;
+};
+#define MSM_PARAM_GPU_ID 0x01
+#define MSM_PARAM_GMEM_SIZE 0x02
+#define MSM_PARAM_CHIP_ID 0x03
+#define MSM_PARAM_MAX_FREQ 0x04
+#define MSM_PARAM_TIMESTAMP 0x05
+#define MSM_PARAM_GMEM_BASE 0x06
+#define MSM_PARAM_PRIORITIES 0x07
+#define MSM_PARAM_PP_PGTABLE 0x08
+#define MSM_PARAM_FAULTS 0x09
+#define MSM_PARAM_SUSPENDS 0x0a
+#define MSM_PARAM_NR_RINGS MSM_PARAM_PRIORITIES
+struct drm_msm_param {
+  __u32 pipe;
+  __u32 param;
+  __u64 value;
+};
+#define MSM_BO_SCANOUT 0x00000001
+#define MSM_BO_GPU_READONLY 0x00000002
+#define MSM_BO_CACHE_MASK 0x000f0000
+#define MSM_BO_CACHED 0x00010000
+#define MSM_BO_WC 0x00020000
+#define MSM_BO_UNCACHED 0x00040000
+#define MSM_BO_CACHED_COHERENT 0x080000
+#define MSM_BO_FLAGS (MSM_BO_SCANOUT | MSM_BO_GPU_READONLY | MSM_BO_CACHE_MASK)
+struct drm_msm_gem_new {
+  __u64 size;
+  __u32 flags;
+  __u32 handle;
+};
+#define MSM_INFO_GET_OFFSET 0x00
+#define MSM_INFO_GET_IOVA 0x01
+#define MSM_INFO_SET_NAME 0x02
+#define MSM_INFO_GET_NAME 0x03
+struct drm_msm_gem_info {
+  __u32 handle;
+  __u32 info;
+  __u64 value;
+  __u32 len;
+  __u32 pad;
+};
+#define MSM_PREP_READ 0x01
+#define MSM_PREP_WRITE 0x02
+#define MSM_PREP_NOSYNC 0x04
+#define MSM_PREP_FLAGS (MSM_PREP_READ | MSM_PREP_WRITE | MSM_PREP_NOSYNC)
+struct drm_msm_gem_cpu_prep {
+  __u32 handle;
+  __u32 op;
+  struct drm_msm_timespec timeout;
+};
+struct drm_msm_gem_cpu_fini {
+  __u32 handle;
+};
+struct drm_msm_gem_submit_reloc {
+  __u32 submit_offset;
+  __u32 or;
+  __s32 shift;
+  __u32 reloc_idx;
+  __u64 reloc_offset;
+};
+#define MSM_SUBMIT_CMD_BUF 0x0001
+#define MSM_SUBMIT_CMD_IB_TARGET_BUF 0x0002
+#define MSM_SUBMIT_CMD_CTX_RESTORE_BUF 0x0003
+struct drm_msm_gem_submit_cmd {
+  __u32 type;
+  __u32 submit_idx;
+  __u32 submit_offset;
+  __u32 size;
+  __u32 pad;
+  __u32 nr_relocs;
+  __u64 relocs;
+};
+#define MSM_SUBMIT_BO_READ 0x0001
+#define MSM_SUBMIT_BO_WRITE 0x0002
+#define MSM_SUBMIT_BO_DUMP 0x0004
+#define MSM_SUBMIT_BO_FLAGS (MSM_SUBMIT_BO_READ | MSM_SUBMIT_BO_WRITE | MSM_SUBMIT_BO_DUMP)
+struct drm_msm_gem_submit_bo {
+  __u32 flags;
+  __u32 handle;
+  __u64 presumed;
+};
+#define MSM_SUBMIT_NO_IMPLICIT 0x80000000
+#define MSM_SUBMIT_FENCE_FD_IN 0x40000000
+#define MSM_SUBMIT_FENCE_FD_OUT 0x20000000
+#define MSM_SUBMIT_SUDO 0x10000000
+#define MSM_SUBMIT_SYNCOBJ_IN 0x08000000
+#define MSM_SUBMIT_SYNCOBJ_OUT 0x04000000
+#define MSM_SUBMIT_FLAGS (MSM_SUBMIT_NO_IMPLICIT | MSM_SUBMIT_FENCE_FD_IN | MSM_SUBMIT_FENCE_FD_OUT | MSM_SUBMIT_SUDO | MSM_SUBMIT_SYNCOBJ_IN | MSM_SUBMIT_SYNCOBJ_OUT | 0)
+#define MSM_SUBMIT_SYNCOBJ_RESET 0x00000001
+#define MSM_SUBMIT_SYNCOBJ_FLAGS (MSM_SUBMIT_SYNCOBJ_RESET | 0)
+struct drm_msm_gem_submit_syncobj {
+  __u32 handle;
+  __u32 flags;
+  __u64 point;
+};
+struct drm_msm_gem_submit {
+  __u32 flags;
+  __u32 fence;
+  __u32 nr_bos;
+  __u32 nr_cmds;
+  __u64 bos;
+  __u64 cmds;
+  __s32 fence_fd;
+  __u32 queueid;
+  __u64 in_syncobjs;
+  __u64 out_syncobjs;
+  __u32 nr_in_syncobjs;
+  __u32 nr_out_syncobjs;
+  __u32 syncobj_stride;
+  __u32 pad;
+};
+struct drm_msm_wait_fence {
+  __u32 fence;
+  __u32 pad;
+  struct drm_msm_timespec timeout;
+  __u32 queueid;
+};
+#define MSM_MADV_WILLNEED 0
+#define MSM_MADV_DONTNEED 1
+#define __MSM_MADV_PURGED 2
+struct drm_msm_gem_madvise {
+  __u32 handle;
+  __u32 madv;
+  __u32 retained;
+};
+#define MSM_SUBMITQUEUE_FLAGS (0)
+struct drm_msm_submitqueue {
+  __u32 flags;
+  __u32 prio;
+  __u32 id;
+};
+#define MSM_SUBMITQUEUE_PARAM_FAULTS 0
+struct drm_msm_submitqueue_query {
+  __u64 data;
+  __u32 id;
+  __u32 param;
+  __u32 len;
+  __u32 pad;
+};
+#define DRM_MSM_GET_PARAM 0x00
+#define DRM_MSM_GEM_NEW 0x02
+#define DRM_MSM_GEM_INFO 0x03
+#define DRM_MSM_GEM_CPU_PREP 0x04
+#define DRM_MSM_GEM_CPU_FINI 0x05
+#define DRM_MSM_GEM_SUBMIT 0x06
+#define DRM_MSM_WAIT_FENCE 0x07
+#define DRM_MSM_GEM_MADVISE 0x08
+#define DRM_MSM_SUBMITQUEUE_NEW 0x0A
+#define DRM_MSM_SUBMITQUEUE_CLOSE 0x0B
+#define DRM_MSM_SUBMITQUEUE_QUERY 0x0C
+#define DRM_IOCTL_MSM_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GET_PARAM, struct drm_msm_param)
+#define DRM_IOCTL_MSM_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_NEW, struct drm_msm_gem_new)
+#define DRM_IOCTL_MSM_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_INFO, struct drm_msm_gem_info)
+#define DRM_IOCTL_MSM_GEM_CPU_PREP DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_GEM_CPU_PREP, struct drm_msm_gem_cpu_prep)
+#define DRM_IOCTL_MSM_GEM_CPU_FINI DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_GEM_CPU_FINI, struct drm_msm_gem_cpu_fini)
+#define DRM_IOCTL_MSM_GEM_SUBMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_SUBMIT, struct drm_msm_gem_submit)
+#define DRM_IOCTL_MSM_WAIT_FENCE DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_WAIT_FENCE, struct drm_msm_wait_fence)
+#define DRM_IOCTL_MSM_GEM_MADVISE DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_MADVISE, struct drm_msm_gem_madvise)
+#define DRM_IOCTL_MSM_SUBMITQUEUE_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_NEW, struct drm_msm_submitqueue)
+#define DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_CLOSE, __u32)
+#define DRM_IOCTL_MSM_SUBMITQUEUE_QUERY DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_QUERY, struct drm_msm_submitqueue_query)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/nouveau_drm.h b/i686-linux-musl/include/drm/nouveau_drm.h
new file mode 100644
index 0000000..150f729
--- /dev/null
+++ b/i686-linux-musl/include/drm/nouveau_drm.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 __NOUVEAU_DRM_H__
+#define __NOUVEAU_DRM_H__
+#define DRM_NOUVEAU_EVENT_NVIF 0x80000000
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define NOUVEAU_GEM_DOMAIN_CPU (1 << 0)
+#define NOUVEAU_GEM_DOMAIN_VRAM (1 << 1)
+#define NOUVEAU_GEM_DOMAIN_GART (1 << 2)
+#define NOUVEAU_GEM_DOMAIN_MAPPABLE (1 << 3)
+#define NOUVEAU_GEM_DOMAIN_COHERENT (1 << 4)
+#define NOUVEAU_GEM_TILE_COMP 0x00030000
+#define NOUVEAU_GEM_TILE_LAYOUT_MASK 0x0000ff00
+#define NOUVEAU_GEM_TILE_16BPP 0x00000001
+#define NOUVEAU_GEM_TILE_32BPP 0x00000002
+#define NOUVEAU_GEM_TILE_ZETA 0x00000004
+#define NOUVEAU_GEM_TILE_NONCONTIG 0x00000008
+struct drm_nouveau_gem_info {
+  __u32 handle;
+  __u32 domain;
+  __u64 size;
+  __u64 offset;
+  __u64 map_handle;
+  __u32 tile_mode;
+  __u32 tile_flags;
+};
+struct drm_nouveau_gem_new {
+  struct drm_nouveau_gem_info info;
+  __u32 channel_hint;
+  __u32 align;
+};
+#define NOUVEAU_GEM_MAX_BUFFERS 1024
+struct drm_nouveau_gem_pushbuf_bo_presumed {
+  __u32 valid;
+  __u32 domain;
+  __u64 offset;
+};
+struct drm_nouveau_gem_pushbuf_bo {
+  __u64 user_priv;
+  __u32 handle;
+  __u32 read_domains;
+  __u32 write_domains;
+  __u32 valid_domains;
+  struct drm_nouveau_gem_pushbuf_bo_presumed presumed;
+};
+#define NOUVEAU_GEM_RELOC_LOW (1 << 0)
+#define NOUVEAU_GEM_RELOC_HIGH (1 << 1)
+#define NOUVEAU_GEM_RELOC_OR (1 << 2)
+#define NOUVEAU_GEM_MAX_RELOCS 1024
+struct drm_nouveau_gem_pushbuf_reloc {
+  __u32 reloc_bo_index;
+  __u32 reloc_bo_offset;
+  __u32 bo_index;
+  __u32 flags;
+  __u32 data;
+  __u32 vor;
+  __u32 tor;
+};
+#define NOUVEAU_GEM_MAX_PUSH 512
+struct drm_nouveau_gem_pushbuf_push {
+  __u32 bo_index;
+  __u32 pad;
+  __u64 offset;
+  __u64 length;
+};
+struct drm_nouveau_gem_pushbuf {
+  __u32 channel;
+  __u32 nr_buffers;
+  __u64 buffers;
+  __u32 nr_relocs;
+  __u32 nr_push;
+  __u64 relocs;
+  __u64 push;
+  __u32 suffix0;
+  __u32 suffix1;
+#define NOUVEAU_GEM_PUSHBUF_SYNC (1ULL << 0)
+  __u64 vram_available;
+  __u64 gart_available;
+};
+#define NOUVEAU_GEM_CPU_PREP_NOWAIT 0x00000001
+#define NOUVEAU_GEM_CPU_PREP_WRITE 0x00000004
+struct drm_nouveau_gem_cpu_prep {
+  __u32 handle;
+  __u32 flags;
+};
+struct drm_nouveau_gem_cpu_fini {
+  __u32 handle;
+};
+#define DRM_NOUVEAU_GETPARAM 0x00
+#define DRM_NOUVEAU_SETPARAM 0x01
+#define DRM_NOUVEAU_CHANNEL_ALLOC 0x02
+#define DRM_NOUVEAU_CHANNEL_FREE 0x03
+#define DRM_NOUVEAU_GROBJ_ALLOC 0x04
+#define DRM_NOUVEAU_NOTIFIEROBJ_ALLOC 0x05
+#define DRM_NOUVEAU_GPUOBJ_FREE 0x06
+#define DRM_NOUVEAU_NVIF 0x07
+#define DRM_NOUVEAU_SVM_INIT 0x08
+#define DRM_NOUVEAU_SVM_BIND 0x09
+#define DRM_NOUVEAU_GEM_NEW 0x40
+#define DRM_NOUVEAU_GEM_PUSHBUF 0x41
+#define DRM_NOUVEAU_GEM_CPU_PREP 0x42
+#define DRM_NOUVEAU_GEM_CPU_FINI 0x43
+#define DRM_NOUVEAU_GEM_INFO 0x44
+struct drm_nouveau_svm_init {
+  __u64 unmanaged_addr;
+  __u64 unmanaged_size;
+};
+struct drm_nouveau_svm_bind {
+  __u64 header;
+  __u64 va_start;
+  __u64 va_end;
+  __u64 npages;
+  __u64 stride;
+  __u64 result;
+  __u64 reserved0;
+  __u64 reserved1;
+};
+#define NOUVEAU_SVM_BIND_COMMAND_SHIFT 0
+#define NOUVEAU_SVM_BIND_COMMAND_BITS 8
+#define NOUVEAU_SVM_BIND_COMMAND_MASK ((1 << 8) - 1)
+#define NOUVEAU_SVM_BIND_PRIORITY_SHIFT 8
+#define NOUVEAU_SVM_BIND_PRIORITY_BITS 8
+#define NOUVEAU_SVM_BIND_PRIORITY_MASK ((1 << 8) - 1)
+#define NOUVEAU_SVM_BIND_TARGET_SHIFT 16
+#define NOUVEAU_SVM_BIND_TARGET_BITS 32
+#define NOUVEAU_SVM_BIND_TARGET_MASK 0xffffffff
+#define NOUVEAU_SVM_BIND_VALID_BITS 48
+#define NOUVEAU_SVM_BIND_VALID_MASK ((1ULL << NOUVEAU_SVM_BIND_VALID_BITS) - 1)
+#define NOUVEAU_SVM_BIND_COMMAND__MIGRATE 0
+#define NOUVEAU_SVM_BIND_TARGET__GPU_VRAM (1UL << 31)
+#define DRM_IOCTL_NOUVEAU_SVM_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SVM_INIT, struct drm_nouveau_svm_init)
+#define DRM_IOCTL_NOUVEAU_SVM_BIND DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SVM_BIND, struct drm_nouveau_svm_bind)
+#define DRM_IOCTL_NOUVEAU_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_NEW, struct drm_nouveau_gem_new)
+#define DRM_IOCTL_NOUVEAU_GEM_PUSHBUF DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_PUSHBUF, struct drm_nouveau_gem_pushbuf)
+#define DRM_IOCTL_NOUVEAU_GEM_CPU_PREP DRM_IOW(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_PREP, struct drm_nouveau_gem_cpu_prep)
+#define DRM_IOCTL_NOUVEAU_GEM_CPU_FINI DRM_IOW(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_FINI, struct drm_nouveau_gem_cpu_fini)
+#define DRM_IOCTL_NOUVEAU_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_INFO, struct drm_nouveau_gem_info)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/omap_drm.h b/i686-linux-musl/include/drm/omap_drm.h
new file mode 100644
index 0000000..72d949d
--- /dev/null
+++ b/i686-linux-musl/include/drm/omap_drm.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 __OMAP_DRM_H__
+#define __OMAP_DRM_H__
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define OMAP_PARAM_CHIPSET_ID 1
+struct drm_omap_param {
+  __u64 param;
+  __u64 value;
+};
+#define OMAP_BO_SCANOUT 0x00000001
+#define OMAP_BO_CACHED 0x00000000
+#define OMAP_BO_WC 0x00000002
+#define OMAP_BO_UNCACHED 0x00000004
+#define OMAP_BO_CACHE_MASK 0x00000006
+#define OMAP_BO_TILED_8 0x00000100
+#define OMAP_BO_TILED_16 0x00000200
+#define OMAP_BO_TILED_32 0x00000300
+#define OMAP_BO_TILED_MASK 0x00000f00
+union omap_gem_size {
+  __u32 bytes;
+  struct {
+    __u16 width;
+    __u16 height;
+  } tiled;
+};
+struct drm_omap_gem_new {
+  union omap_gem_size size;
+  __u32 flags;
+  __u32 handle;
+  __u32 __pad;
+};
+enum omap_gem_op {
+  OMAP_GEM_READ = 0x01,
+  OMAP_GEM_WRITE = 0x02,
+};
+struct drm_omap_gem_cpu_prep {
+  __u32 handle;
+  __u32 op;
+};
+struct drm_omap_gem_cpu_fini {
+  __u32 handle;
+  __u32 op;
+  __u32 nregions;
+  __u32 __pad;
+};
+struct drm_omap_gem_info {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+  __u32 size;
+  __u32 __pad;
+};
+#define DRM_OMAP_GET_PARAM 0x00
+#define DRM_OMAP_SET_PARAM 0x01
+#define DRM_OMAP_GEM_NEW 0x03
+#define DRM_OMAP_GEM_CPU_PREP 0x04
+#define DRM_OMAP_GEM_CPU_FINI 0x05
+#define DRM_OMAP_GEM_INFO 0x06
+#define DRM_OMAP_NUM_IOCTLS 0x07
+#define DRM_IOCTL_OMAP_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_OMAP_GET_PARAM, struct drm_omap_param)
+#define DRM_IOCTL_OMAP_SET_PARAM DRM_IOW(DRM_COMMAND_BASE + DRM_OMAP_SET_PARAM, struct drm_omap_param)
+#define DRM_IOCTL_OMAP_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_OMAP_GEM_NEW, struct drm_omap_gem_new)
+#define DRM_IOCTL_OMAP_GEM_CPU_PREP DRM_IOW(DRM_COMMAND_BASE + DRM_OMAP_GEM_CPU_PREP, struct drm_omap_gem_cpu_prep)
+#define DRM_IOCTL_OMAP_GEM_CPU_FINI DRM_IOW(DRM_COMMAND_BASE + DRM_OMAP_GEM_CPU_FINI, struct drm_omap_gem_cpu_fini)
+#define DRM_IOCTL_OMAP_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_OMAP_GEM_INFO, struct drm_omap_gem_info)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/panfrost_drm.h b/i686-linux-musl/include/drm/panfrost_drm.h
new file mode 100644
index 0000000..1f4473d
--- /dev/null
+++ b/i686-linux-musl/include/drm/panfrost_drm.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 _PANFROST_DRM_H_
+#define _PANFROST_DRM_H_
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_PANFROST_SUBMIT 0x00
+#define DRM_PANFROST_WAIT_BO 0x01
+#define DRM_PANFROST_CREATE_BO 0x02
+#define DRM_PANFROST_MMAP_BO 0x03
+#define DRM_PANFROST_GET_PARAM 0x04
+#define DRM_PANFROST_GET_BO_OFFSET 0x05
+#define DRM_PANFROST_PERFCNT_ENABLE 0x06
+#define DRM_PANFROST_PERFCNT_DUMP 0x07
+#define DRM_PANFROST_MADVISE 0x08
+#define DRM_IOCTL_PANFROST_SUBMIT DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_SUBMIT, struct drm_panfrost_submit)
+#define DRM_IOCTL_PANFROST_WAIT_BO DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_WAIT_BO, struct drm_panfrost_wait_bo)
+#define DRM_IOCTL_PANFROST_CREATE_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_CREATE_BO, struct drm_panfrost_create_bo)
+#define DRM_IOCTL_PANFROST_MMAP_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_MMAP_BO, struct drm_panfrost_mmap_bo)
+#define DRM_IOCTL_PANFROST_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_GET_PARAM, struct drm_panfrost_get_param)
+#define DRM_IOCTL_PANFROST_GET_BO_OFFSET DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_GET_BO_OFFSET, struct drm_panfrost_get_bo_offset)
+#define DRM_IOCTL_PANFROST_MADVISE DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_MADVISE, struct drm_panfrost_madvise)
+#define DRM_IOCTL_PANFROST_PERFCNT_ENABLE DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_PERFCNT_ENABLE, struct drm_panfrost_perfcnt_enable)
+#define DRM_IOCTL_PANFROST_PERFCNT_DUMP DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_PERFCNT_DUMP, struct drm_panfrost_perfcnt_dump)
+#define PANFROST_JD_REQ_FS (1 << 0)
+struct drm_panfrost_submit {
+  __u64 jc;
+  __u64 in_syncs;
+  __u32 in_sync_count;
+  __u32 out_sync;
+  __u64 bo_handles;
+  __u32 bo_handle_count;
+  __u32 requirements;
+};
+struct drm_panfrost_wait_bo {
+  __u32 handle;
+  __u32 pad;
+  __s64 timeout_ns;
+};
+#define PANFROST_BO_NOEXEC 1
+#define PANFROST_BO_HEAP 2
+struct drm_panfrost_create_bo {
+  __u32 size;
+  __u32 flags;
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+};
+struct drm_panfrost_mmap_bo {
+  __u32 handle;
+  __u32 flags;
+  __u64 offset;
+};
+enum drm_panfrost_param {
+  DRM_PANFROST_PARAM_GPU_PROD_ID,
+  DRM_PANFROST_PARAM_GPU_REVISION,
+  DRM_PANFROST_PARAM_SHADER_PRESENT,
+  DRM_PANFROST_PARAM_TILER_PRESENT,
+  DRM_PANFROST_PARAM_L2_PRESENT,
+  DRM_PANFROST_PARAM_STACK_PRESENT,
+  DRM_PANFROST_PARAM_AS_PRESENT,
+  DRM_PANFROST_PARAM_JS_PRESENT,
+  DRM_PANFROST_PARAM_L2_FEATURES,
+  DRM_PANFROST_PARAM_CORE_FEATURES,
+  DRM_PANFROST_PARAM_TILER_FEATURES,
+  DRM_PANFROST_PARAM_MEM_FEATURES,
+  DRM_PANFROST_PARAM_MMU_FEATURES,
+  DRM_PANFROST_PARAM_THREAD_FEATURES,
+  DRM_PANFROST_PARAM_MAX_THREADS,
+  DRM_PANFROST_PARAM_THREAD_MAX_WORKGROUP_SZ,
+  DRM_PANFROST_PARAM_THREAD_MAX_BARRIER_SZ,
+  DRM_PANFROST_PARAM_COHERENCY_FEATURES,
+  DRM_PANFROST_PARAM_TEXTURE_FEATURES0,
+  DRM_PANFROST_PARAM_TEXTURE_FEATURES1,
+  DRM_PANFROST_PARAM_TEXTURE_FEATURES2,
+  DRM_PANFROST_PARAM_TEXTURE_FEATURES3,
+  DRM_PANFROST_PARAM_JS_FEATURES0,
+  DRM_PANFROST_PARAM_JS_FEATURES1,
+  DRM_PANFROST_PARAM_JS_FEATURES2,
+  DRM_PANFROST_PARAM_JS_FEATURES3,
+  DRM_PANFROST_PARAM_JS_FEATURES4,
+  DRM_PANFROST_PARAM_JS_FEATURES5,
+  DRM_PANFROST_PARAM_JS_FEATURES6,
+  DRM_PANFROST_PARAM_JS_FEATURES7,
+  DRM_PANFROST_PARAM_JS_FEATURES8,
+  DRM_PANFROST_PARAM_JS_FEATURES9,
+  DRM_PANFROST_PARAM_JS_FEATURES10,
+  DRM_PANFROST_PARAM_JS_FEATURES11,
+  DRM_PANFROST_PARAM_JS_FEATURES12,
+  DRM_PANFROST_PARAM_JS_FEATURES13,
+  DRM_PANFROST_PARAM_JS_FEATURES14,
+  DRM_PANFROST_PARAM_JS_FEATURES15,
+  DRM_PANFROST_PARAM_NR_CORE_GROUPS,
+  DRM_PANFROST_PARAM_THREAD_TLS_ALLOC,
+  DRM_PANFROST_PARAM_AFBC_FEATURES,
+};
+struct drm_panfrost_get_param {
+  __u32 param;
+  __u32 pad;
+  __u64 value;
+};
+struct drm_panfrost_get_bo_offset {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+};
+struct drm_panfrost_perfcnt_enable {
+  __u32 enable;
+  __u32 counterset;
+};
+struct drm_panfrost_perfcnt_dump {
+  __u64 buf_ptr;
+};
+#define PANFROST_MADV_WILLNEED 0
+#define PANFROST_MADV_DONTNEED 1
+struct drm_panfrost_madvise {
+  __u32 handle;
+  __u32 madv;
+  __u32 retained;
+};
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/qxl_drm.h b/i686-linux-musl/include/drm/qxl_drm.h
new file mode 100644
index 0000000..e9521c4
--- /dev/null
+++ b/i686-linux-musl/include/drm/qxl_drm.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 QXL_DRM_H
+#define QXL_DRM_H
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define QXL_GEM_DOMAIN_CPU 0
+#define QXL_GEM_DOMAIN_VRAM 1
+#define QXL_GEM_DOMAIN_SURFACE 2
+#define DRM_QXL_ALLOC 0x00
+#define DRM_QXL_MAP 0x01
+#define DRM_QXL_EXECBUFFER 0x02
+#define DRM_QXL_UPDATE_AREA 0x03
+#define DRM_QXL_GETPARAM 0x04
+#define DRM_QXL_CLIENTCAP 0x05
+#define DRM_QXL_ALLOC_SURF 0x06
+struct drm_qxl_alloc {
+  __u32 size;
+  __u32 handle;
+};
+struct drm_qxl_map {
+  __u64 offset;
+  __u32 handle;
+  __u32 pad;
+};
+#define QXL_RELOC_TYPE_BO 1
+#define QXL_RELOC_TYPE_SURF 2
+struct drm_qxl_reloc {
+  __u64 src_offset;
+  __u64 dst_offset;
+  __u32 src_handle;
+  __u32 dst_handle;
+  __u32 reloc_type;
+  __u32 pad;
+};
+struct drm_qxl_command {
+  __u64 command;
+  __u64 relocs;
+  __u32 type;
+  __u32 command_size;
+  __u32 relocs_num;
+  __u32 pad;
+};
+struct drm_qxl_execbuffer {
+  __u32 flags;
+  __u32 commands_num;
+  __u64 commands;
+};
+struct drm_qxl_update_area {
+  __u32 handle;
+  __u32 top;
+  __u32 left;
+  __u32 bottom;
+  __u32 right;
+  __u32 pad;
+};
+#define QXL_PARAM_NUM_SURFACES 1
+#define QXL_PARAM_MAX_RELOCS 2
+struct drm_qxl_getparam {
+  __u64 param;
+  __u64 value;
+};
+struct drm_qxl_clientcap {
+  __u32 index;
+  __u32 pad;
+};
+struct drm_qxl_alloc_surf {
+  __u32 format;
+  __u32 width;
+  __u32 height;
+  __s32 stride;
+  __u32 handle;
+  __u32 pad;
+};
+#define DRM_IOCTL_QXL_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_ALLOC, struct drm_qxl_alloc)
+#define DRM_IOCTL_QXL_MAP DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_MAP, struct drm_qxl_map)
+#define DRM_IOCTL_QXL_EXECBUFFER DRM_IOW(DRM_COMMAND_BASE + DRM_QXL_EXECBUFFER, struct drm_qxl_execbuffer)
+#define DRM_IOCTL_QXL_UPDATE_AREA DRM_IOW(DRM_COMMAND_BASE + DRM_QXL_UPDATE_AREA, struct drm_qxl_update_area)
+#define DRM_IOCTL_QXL_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_GETPARAM, struct drm_qxl_getparam)
+#define DRM_IOCTL_QXL_CLIENTCAP DRM_IOW(DRM_COMMAND_BASE + DRM_QXL_CLIENTCAP, struct drm_qxl_clientcap)
+#define DRM_IOCTL_QXL_ALLOC_SURF DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_ALLOC_SURF, struct drm_qxl_alloc_surf)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/r128_drm.h b/i686-linux-musl/include/drm/r128_drm.h
new file mode 100644
index 0000000..618b6dc
--- /dev/null
+++ b/i686-linux-musl/include/drm/r128_drm.h
@@ -0,0 +1,235 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __R128_DRM_H__
+#define __R128_DRM_H__
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef __R128_SAREA_DEFINES__
+#define __R128_SAREA_DEFINES__
+#define R128_UPLOAD_CONTEXT 0x001
+#define R128_UPLOAD_SETUP 0x002
+#define R128_UPLOAD_TEX0 0x004
+#define R128_UPLOAD_TEX1 0x008
+#define R128_UPLOAD_TEX0IMAGES 0x010
+#define R128_UPLOAD_TEX1IMAGES 0x020
+#define R128_UPLOAD_CORE 0x040
+#define R128_UPLOAD_MASKS 0x080
+#define R128_UPLOAD_WINDOW 0x100
+#define R128_UPLOAD_CLIPRECTS 0x200
+#define R128_REQUIRE_QUIESCENCE 0x400
+#define R128_UPLOAD_ALL 0x7ff
+#define R128_FRONT 0x1
+#define R128_BACK 0x2
+#define R128_DEPTH 0x4
+#define R128_POINTS 0x1
+#define R128_LINES 0x2
+#define R128_LINE_STRIP 0x3
+#define R128_TRIANGLES 0x4
+#define R128_TRIANGLE_FAN 0x5
+#define R128_TRIANGLE_STRIP 0x6
+#define R128_BUFFER_SIZE 16384
+#define R128_INDEX_PRIM_OFFSET 20
+#define R128_HOSTDATA_BLIT_OFFSET 32
+#define R128_NR_SAREA_CLIPRECTS 12
+#define R128_LOCAL_TEX_HEAP 0
+#define R128_AGP_TEX_HEAP 1
+#define R128_NR_TEX_HEAPS 2
+#define R128_NR_TEX_REGIONS 64
+#define R128_LOG_TEX_GRANULARITY 16
+#define R128_NR_CONTEXT_REGS 12
+#define R128_MAX_TEXTURE_LEVELS 11
+#define R128_MAX_TEXTURE_UNITS 2
+#endif
+typedef struct {
+  unsigned int dst_pitch_offset_c;
+  unsigned int dp_gui_master_cntl_c;
+  unsigned int sc_top_left_c;
+  unsigned int sc_bottom_right_c;
+  unsigned int z_offset_c;
+  unsigned int z_pitch_c;
+  unsigned int z_sten_cntl_c;
+  unsigned int tex_cntl_c;
+  unsigned int misc_3d_state_cntl_reg;
+  unsigned int texture_clr_cmp_clr_c;
+  unsigned int texture_clr_cmp_msk_c;
+  unsigned int fog_color_c;
+  unsigned int tex_size_pitch_c;
+  unsigned int constant_color_c;
+  unsigned int pm4_vc_fpu_setup;
+  unsigned int setup_cntl;
+  unsigned int dp_write_mask;
+  unsigned int sten_ref_mask_c;
+  unsigned int plane_3d_mask_c;
+  unsigned int window_xy_offset;
+  unsigned int scale_3d_cntl;
+} drm_r128_context_regs_t;
+typedef struct {
+  unsigned int tex_cntl;
+  unsigned int tex_combine_cntl;
+  unsigned int tex_size_pitch;
+  unsigned int tex_offset[R128_MAX_TEXTURE_LEVELS];
+  unsigned int tex_border_color;
+} drm_r128_texture_regs_t;
+typedef struct drm_r128_sarea {
+  drm_r128_context_regs_t context_state;
+  drm_r128_texture_regs_t tex_state[R128_MAX_TEXTURE_UNITS];
+  unsigned int dirty;
+  unsigned int vertsize;
+  unsigned int vc_format;
+  struct drm_clip_rect boxes[R128_NR_SAREA_CLIPRECTS];
+  unsigned int nbox;
+  unsigned int last_frame;
+  unsigned int last_dispatch;
+  struct drm_tex_region tex_list[R128_NR_TEX_HEAPS][R128_NR_TEX_REGIONS + 1];
+  unsigned int tex_age[R128_NR_TEX_HEAPS];
+  int ctx_owner;
+  int pfAllowPageFlip;
+  int pfCurrentPage;
+} drm_r128_sarea_t;
+#define DRM_R128_INIT 0x00
+#define DRM_R128_CCE_START 0x01
+#define DRM_R128_CCE_STOP 0x02
+#define DRM_R128_CCE_RESET 0x03
+#define DRM_R128_CCE_IDLE 0x04
+#define DRM_R128_RESET 0x06
+#define DRM_R128_SWAP 0x07
+#define DRM_R128_CLEAR 0x08
+#define DRM_R128_VERTEX 0x09
+#define DRM_R128_INDICES 0x0a
+#define DRM_R128_BLIT 0x0b
+#define DRM_R128_DEPTH 0x0c
+#define DRM_R128_STIPPLE 0x0d
+#define DRM_R128_INDIRECT 0x0f
+#define DRM_R128_FULLSCREEN 0x10
+#define DRM_R128_CLEAR2 0x11
+#define DRM_R128_GETPARAM 0x12
+#define DRM_R128_FLIP 0x13
+#define DRM_IOCTL_R128_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_R128_INIT, drm_r128_init_t)
+#define DRM_IOCTL_R128_CCE_START DRM_IO(DRM_COMMAND_BASE + DRM_R128_CCE_START)
+#define DRM_IOCTL_R128_CCE_STOP DRM_IOW(DRM_COMMAND_BASE + DRM_R128_CCE_STOP, drm_r128_cce_stop_t)
+#define DRM_IOCTL_R128_CCE_RESET DRM_IO(DRM_COMMAND_BASE + DRM_R128_CCE_RESET)
+#define DRM_IOCTL_R128_CCE_IDLE DRM_IO(DRM_COMMAND_BASE + DRM_R128_CCE_IDLE)
+#define DRM_IOCTL_R128_RESET DRM_IO(DRM_COMMAND_BASE + DRM_R128_RESET)
+#define DRM_IOCTL_R128_SWAP DRM_IO(DRM_COMMAND_BASE + DRM_R128_SWAP)
+#define DRM_IOCTL_R128_CLEAR DRM_IOW(DRM_COMMAND_BASE + DRM_R128_CLEAR, drm_r128_clear_t)
+#define DRM_IOCTL_R128_VERTEX DRM_IOW(DRM_COMMAND_BASE + DRM_R128_VERTEX, drm_r128_vertex_t)
+#define DRM_IOCTL_R128_INDICES DRM_IOW(DRM_COMMAND_BASE + DRM_R128_INDICES, drm_r128_indices_t)
+#define DRM_IOCTL_R128_BLIT DRM_IOW(DRM_COMMAND_BASE + DRM_R128_BLIT, drm_r128_blit_t)
+#define DRM_IOCTL_R128_DEPTH DRM_IOW(DRM_COMMAND_BASE + DRM_R128_DEPTH, drm_r128_depth_t)
+#define DRM_IOCTL_R128_STIPPLE DRM_IOW(DRM_COMMAND_BASE + DRM_R128_STIPPLE, drm_r128_stipple_t)
+#define DRM_IOCTL_R128_INDIRECT DRM_IOWR(DRM_COMMAND_BASE + DRM_R128_INDIRECT, drm_r128_indirect_t)
+#define DRM_IOCTL_R128_FULLSCREEN DRM_IOW(DRM_COMMAND_BASE + DRM_R128_FULLSCREEN, drm_r128_fullscreen_t)
+#define DRM_IOCTL_R128_CLEAR2 DRM_IOW(DRM_COMMAND_BASE + DRM_R128_CLEAR2, drm_r128_clear2_t)
+#define DRM_IOCTL_R128_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_R128_GETPARAM, drm_r128_getparam_t)
+#define DRM_IOCTL_R128_FLIP DRM_IO(DRM_COMMAND_BASE + DRM_R128_FLIP)
+typedef struct drm_r128_init {
+  enum {
+    R128_INIT_CCE = 0x01,
+    R128_CLEANUP_CCE = 0x02
+  } func;
+  unsigned long sarea_priv_offset;
+  int is_pci;
+  int cce_mode;
+  int cce_secure;
+  int ring_size;
+  int usec_timeout;
+  unsigned int fb_bpp;
+  unsigned int front_offset, front_pitch;
+  unsigned int back_offset, back_pitch;
+  unsigned int depth_bpp;
+  unsigned int depth_offset, depth_pitch;
+  unsigned int span_offset;
+  unsigned long fb_offset;
+  unsigned long mmio_offset;
+  unsigned long ring_offset;
+  unsigned long ring_rptr_offset;
+  unsigned long buffers_offset;
+  unsigned long agp_textures_offset;
+} drm_r128_init_t;
+typedef struct drm_r128_cce_stop {
+  int flush;
+  int idle;
+} drm_r128_cce_stop_t;
+typedef struct drm_r128_clear {
+  unsigned int flags;
+  unsigned int clear_color;
+  unsigned int clear_depth;
+  unsigned int color_mask;
+  unsigned int depth_mask;
+} drm_r128_clear_t;
+typedef struct drm_r128_vertex {
+  int prim;
+  int idx;
+  int count;
+  int discard;
+} drm_r128_vertex_t;
+typedef struct drm_r128_indices {
+  int prim;
+  int idx;
+  int start;
+  int end;
+  int discard;
+} drm_r128_indices_t;
+typedef struct drm_r128_blit {
+  int idx;
+  int pitch;
+  int offset;
+  int format;
+  unsigned short x, y;
+  unsigned short width, height;
+} drm_r128_blit_t;
+typedef struct drm_r128_depth {
+  enum {
+    R128_WRITE_SPAN = 0x01,
+    R128_WRITE_PIXELS = 0x02,
+    R128_READ_SPAN = 0x03,
+    R128_READ_PIXELS = 0x04
+  } func;
+  int n;
+  int __user * x;
+  int __user * y;
+  unsigned int __user * buffer;
+  unsigned char __user * mask;
+} drm_r128_depth_t;
+typedef struct drm_r128_stipple {
+  unsigned int __user * mask;
+} drm_r128_stipple_t;
+typedef struct drm_r128_indirect {
+  int idx;
+  int start;
+  int end;
+  int discard;
+} drm_r128_indirect_t;
+typedef struct drm_r128_fullscreen {
+  enum {
+    R128_INIT_FULLSCREEN = 0x01,
+    R128_CLEANUP_FULLSCREEN = 0x02
+  } func;
+} drm_r128_fullscreen_t;
+#define R128_PARAM_IRQ_NR 1
+typedef struct drm_r128_getparam {
+  int param;
+  void __user * value;
+} drm_r128_getparam_t;
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/radeon_drm.h b/i686-linux-musl/include/drm/radeon_drm.h
new file mode 100644
index 0000000..9dc69ad
--- /dev/null
+++ b/i686-linux-musl/include/drm/radeon_drm.h
@@ -0,0 +1,807 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __RADEON_DRM_H__
+#define __RADEON_DRM_H__
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef __RADEON_SAREA_DEFINES__
+#define __RADEON_SAREA_DEFINES__
+#define RADEON_UPLOAD_CONTEXT 0x00000001
+#define RADEON_UPLOAD_VERTFMT 0x00000002
+#define RADEON_UPLOAD_LINE 0x00000004
+#define RADEON_UPLOAD_BUMPMAP 0x00000008
+#define RADEON_UPLOAD_MASKS 0x00000010
+#define RADEON_UPLOAD_VIEWPORT 0x00000020
+#define RADEON_UPLOAD_SETUP 0x00000040
+#define RADEON_UPLOAD_TCL 0x00000080
+#define RADEON_UPLOAD_MISC 0x00000100
+#define RADEON_UPLOAD_TEX0 0x00000200
+#define RADEON_UPLOAD_TEX1 0x00000400
+#define RADEON_UPLOAD_TEX2 0x00000800
+#define RADEON_UPLOAD_TEX0IMAGES 0x00001000
+#define RADEON_UPLOAD_TEX1IMAGES 0x00002000
+#define RADEON_UPLOAD_TEX2IMAGES 0x00004000
+#define RADEON_UPLOAD_CLIPRECTS 0x00008000
+#define RADEON_REQUIRE_QUIESCENCE 0x00010000
+#define RADEON_UPLOAD_ZBIAS 0x00020000
+#define RADEON_UPLOAD_ALL 0x003effff
+#define RADEON_UPLOAD_CONTEXT_ALL 0x003e01ff
+#define RADEON_EMIT_PP_MISC 0
+#define RADEON_EMIT_PP_CNTL 1
+#define RADEON_EMIT_RB3D_COLORPITCH 2
+#define RADEON_EMIT_RE_LINE_PATTERN 3
+#define RADEON_EMIT_SE_LINE_WIDTH 4
+#define RADEON_EMIT_PP_LUM_MATRIX 5
+#define RADEON_EMIT_PP_ROT_MATRIX_0 6
+#define RADEON_EMIT_RB3D_STENCILREFMASK 7
+#define RADEON_EMIT_SE_VPORT_XSCALE 8
+#define RADEON_EMIT_SE_CNTL 9
+#define RADEON_EMIT_SE_CNTL_STATUS 10
+#define RADEON_EMIT_RE_MISC 11
+#define RADEON_EMIT_PP_TXFILTER_0 12
+#define RADEON_EMIT_PP_BORDER_COLOR_0 13
+#define RADEON_EMIT_PP_TXFILTER_1 14
+#define RADEON_EMIT_PP_BORDER_COLOR_1 15
+#define RADEON_EMIT_PP_TXFILTER_2 16
+#define RADEON_EMIT_PP_BORDER_COLOR_2 17
+#define RADEON_EMIT_SE_ZBIAS_FACTOR 18
+#define RADEON_EMIT_SE_TCL_OUTPUT_VTX_FMT 19
+#define RADEON_EMIT_SE_TCL_MATERIAL_EMMISSIVE_RED 20
+#define R200_EMIT_PP_TXCBLEND_0 21
+#define R200_EMIT_PP_TXCBLEND_1 22
+#define R200_EMIT_PP_TXCBLEND_2 23
+#define R200_EMIT_PP_TXCBLEND_3 24
+#define R200_EMIT_PP_TXCBLEND_4 25
+#define R200_EMIT_PP_TXCBLEND_5 26
+#define R200_EMIT_PP_TXCBLEND_6 27
+#define R200_EMIT_PP_TXCBLEND_7 28
+#define R200_EMIT_TCL_LIGHT_MODEL_CTL_0 29
+#define R200_EMIT_TFACTOR_0 30
+#define R200_EMIT_VTX_FMT_0 31
+#define R200_EMIT_VAP_CTL 32
+#define R200_EMIT_MATRIX_SELECT_0 33
+#define R200_EMIT_TEX_PROC_CTL_2 34
+#define R200_EMIT_TCL_UCP_VERT_BLEND_CTL 35
+#define R200_EMIT_PP_TXFILTER_0 36
+#define R200_EMIT_PP_TXFILTER_1 37
+#define R200_EMIT_PP_TXFILTER_2 38
+#define R200_EMIT_PP_TXFILTER_3 39
+#define R200_EMIT_PP_TXFILTER_4 40
+#define R200_EMIT_PP_TXFILTER_5 41
+#define R200_EMIT_PP_TXOFFSET_0 42
+#define R200_EMIT_PP_TXOFFSET_1 43
+#define R200_EMIT_PP_TXOFFSET_2 44
+#define R200_EMIT_PP_TXOFFSET_3 45
+#define R200_EMIT_PP_TXOFFSET_4 46
+#define R200_EMIT_PP_TXOFFSET_5 47
+#define R200_EMIT_VTE_CNTL 48
+#define R200_EMIT_OUTPUT_VTX_COMP_SEL 49
+#define R200_EMIT_PP_TAM_DEBUG3 50
+#define R200_EMIT_PP_CNTL_X 51
+#define R200_EMIT_RB3D_DEPTHXY_OFFSET 52
+#define R200_EMIT_RE_AUX_SCISSOR_CNTL 53
+#define R200_EMIT_RE_SCISSOR_TL_0 54
+#define R200_EMIT_RE_SCISSOR_TL_1 55
+#define R200_EMIT_RE_SCISSOR_TL_2 56
+#define R200_EMIT_SE_VAP_CNTL_STATUS 57
+#define R200_EMIT_SE_VTX_STATE_CNTL 58
+#define R200_EMIT_RE_POINTSIZE 59
+#define R200_EMIT_TCL_INPUT_VTX_VECTOR_ADDR_0 60
+#define R200_EMIT_PP_CUBIC_FACES_0 61
+#define R200_EMIT_PP_CUBIC_OFFSETS_0 62
+#define R200_EMIT_PP_CUBIC_FACES_1 63
+#define R200_EMIT_PP_CUBIC_OFFSETS_1 64
+#define R200_EMIT_PP_CUBIC_FACES_2 65
+#define R200_EMIT_PP_CUBIC_OFFSETS_2 66
+#define R200_EMIT_PP_CUBIC_FACES_3 67
+#define R200_EMIT_PP_CUBIC_OFFSETS_3 68
+#define R200_EMIT_PP_CUBIC_FACES_4 69
+#define R200_EMIT_PP_CUBIC_OFFSETS_4 70
+#define R200_EMIT_PP_CUBIC_FACES_5 71
+#define R200_EMIT_PP_CUBIC_OFFSETS_5 72
+#define RADEON_EMIT_PP_TEX_SIZE_0 73
+#define RADEON_EMIT_PP_TEX_SIZE_1 74
+#define RADEON_EMIT_PP_TEX_SIZE_2 75
+#define R200_EMIT_RB3D_BLENDCOLOR 76
+#define R200_EMIT_TCL_POINT_SPRITE_CNTL 77
+#define RADEON_EMIT_PP_CUBIC_FACES_0 78
+#define RADEON_EMIT_PP_CUBIC_OFFSETS_T0 79
+#define RADEON_EMIT_PP_CUBIC_FACES_1 80
+#define RADEON_EMIT_PP_CUBIC_OFFSETS_T1 81
+#define RADEON_EMIT_PP_CUBIC_FACES_2 82
+#define RADEON_EMIT_PP_CUBIC_OFFSETS_T2 83
+#define R200_EMIT_PP_TRI_PERF_CNTL 84
+#define R200_EMIT_PP_AFS_0 85
+#define R200_EMIT_PP_AFS_1 86
+#define R200_EMIT_ATF_TFACTOR 87
+#define R200_EMIT_PP_TXCTLALL_0 88
+#define R200_EMIT_PP_TXCTLALL_1 89
+#define R200_EMIT_PP_TXCTLALL_2 90
+#define R200_EMIT_PP_TXCTLALL_3 91
+#define R200_EMIT_PP_TXCTLALL_4 92
+#define R200_EMIT_PP_TXCTLALL_5 93
+#define R200_EMIT_VAP_PVS_CNTL 94
+#define RADEON_MAX_STATE_PACKETS 95
+#define RADEON_CMD_PACKET 1
+#define RADEON_CMD_SCALARS 2
+#define RADEON_CMD_VECTORS 3
+#define RADEON_CMD_DMA_DISCARD 4
+#define RADEON_CMD_PACKET3 5
+#define RADEON_CMD_PACKET3_CLIP 6
+#define RADEON_CMD_SCALARS2 7
+#define RADEON_CMD_WAIT 8
+#define RADEON_CMD_VECLINEAR 9
+typedef union {
+  int i;
+  struct {
+    unsigned char cmd_type, pad0, pad1, pad2;
+  } header;
+  struct {
+    unsigned char cmd_type, packet_id, pad0, pad1;
+  } packet;
+  struct {
+    unsigned char cmd_type, offset, stride, count;
+  } scalars;
+  struct {
+    unsigned char cmd_type, offset, stride, count;
+  } vectors;
+  struct {
+    unsigned char cmd_type, addr_lo, addr_hi, count;
+  } veclinear;
+  struct {
+    unsigned char cmd_type, buf_idx, pad0, pad1;
+  } dma;
+  struct {
+    unsigned char cmd_type, flags, pad0, pad1;
+  } wait;
+} drm_radeon_cmd_header_t;
+#define RADEON_WAIT_2D 0x1
+#define RADEON_WAIT_3D 0x2
+#define R300_CMD_PACKET3_CLEAR 0
+#define R300_CMD_PACKET3_RAW 1
+#define R300_CMD_PACKET0 1
+#define R300_CMD_VPU 2
+#define R300_CMD_PACKET3 3
+#define R300_CMD_END3D 4
+#define R300_CMD_CP_DELAY 5
+#define R300_CMD_DMA_DISCARD 6
+#define R300_CMD_WAIT 7
+#define R300_WAIT_2D 0x1
+#define R300_WAIT_3D 0x2
+#define R300_WAIT_2D_CLEAN 0x3
+#define R300_WAIT_3D_CLEAN 0x4
+#define R300_NEW_WAIT_2D_3D 0x3
+#define R300_NEW_WAIT_2D_2D_CLEAN 0x4
+#define R300_NEW_WAIT_3D_3D_CLEAN 0x6
+#define R300_NEW_WAIT_2D_2D_CLEAN_3D_3D_CLEAN 0x8
+#define R300_CMD_SCRATCH 8
+#define R300_CMD_R500FP 9
+typedef union {
+  unsigned int u;
+  struct {
+    unsigned char cmd_type, pad0, pad1, pad2;
+  } header;
+  struct {
+    unsigned char cmd_type, count, reglo, reghi;
+  } packet0;
+  struct {
+    unsigned char cmd_type, count, adrlo, adrhi;
+  } vpu;
+  struct {
+    unsigned char cmd_type, packet, pad0, pad1;
+  } packet3;
+  struct {
+    unsigned char cmd_type, packet;
+    unsigned short count;
+  } delay;
+  struct {
+    unsigned char cmd_type, buf_idx, pad0, pad1;
+  } dma;
+  struct {
+    unsigned char cmd_type, flags, pad0, pad1;
+  } wait;
+  struct {
+    unsigned char cmd_type, reg, n_bufs, flags;
+  } scratch;
+  struct {
+    unsigned char cmd_type, count, adrlo, adrhi_flags;
+  } r500fp;
+} drm_r300_cmd_header_t;
+#define RADEON_FRONT 0x1
+#define RADEON_BACK 0x2
+#define RADEON_DEPTH 0x4
+#define RADEON_STENCIL 0x8
+#define RADEON_CLEAR_FASTZ 0x80000000
+#define RADEON_USE_HIERZ 0x40000000
+#define RADEON_USE_COMP_ZBUF 0x20000000
+#define R500FP_CONSTANT_TYPE (1 << 1)
+#define R500FP_CONSTANT_CLAMP (1 << 2)
+#define RADEON_POINTS 0x1
+#define RADEON_LINES 0x2
+#define RADEON_LINE_STRIP 0x3
+#define RADEON_TRIANGLES 0x4
+#define RADEON_TRIANGLE_FAN 0x5
+#define RADEON_TRIANGLE_STRIP 0x6
+#define RADEON_BUFFER_SIZE 65536
+#define RADEON_INDEX_PRIM_OFFSET 20
+#define RADEON_SCRATCH_REG_OFFSET 32
+#define R600_SCRATCH_REG_OFFSET 256
+#define RADEON_NR_SAREA_CLIPRECTS 12
+#define RADEON_LOCAL_TEX_HEAP 0
+#define RADEON_GART_TEX_HEAP 1
+#define RADEON_NR_TEX_HEAPS 2
+#define RADEON_NR_TEX_REGIONS 64
+#define RADEON_LOG_TEX_GRANULARITY 16
+#define RADEON_MAX_TEXTURE_LEVELS 12
+#define RADEON_MAX_TEXTURE_UNITS 3
+#define RADEON_MAX_SURFACES 8
+#define RADEON_OFFSET_SHIFT 10
+#define RADEON_OFFSET_ALIGN (1 << RADEON_OFFSET_SHIFT)
+#define RADEON_OFFSET_MASK (RADEON_OFFSET_ALIGN - 1)
+#endif
+typedef struct {
+  unsigned int red;
+  unsigned int green;
+  unsigned int blue;
+  unsigned int alpha;
+} radeon_color_regs_t;
+typedef struct {
+  unsigned int pp_misc;
+  unsigned int pp_fog_color;
+  unsigned int re_solid_color;
+  unsigned int rb3d_blendcntl;
+  unsigned int rb3d_depthoffset;
+  unsigned int rb3d_depthpitch;
+  unsigned int rb3d_zstencilcntl;
+  unsigned int pp_cntl;
+  unsigned int rb3d_cntl;
+  unsigned int rb3d_coloroffset;
+  unsigned int re_width_height;
+  unsigned int rb3d_colorpitch;
+  unsigned int se_cntl;
+  unsigned int se_coord_fmt;
+  unsigned int re_line_pattern;
+  unsigned int re_line_state;
+  unsigned int se_line_width;
+  unsigned int pp_lum_matrix;
+  unsigned int pp_rot_matrix_0;
+  unsigned int pp_rot_matrix_1;
+  unsigned int rb3d_stencilrefmask;
+  unsigned int rb3d_ropcntl;
+  unsigned int rb3d_planemask;
+  unsigned int se_vport_xscale;
+  unsigned int se_vport_xoffset;
+  unsigned int se_vport_yscale;
+  unsigned int se_vport_yoffset;
+  unsigned int se_vport_zscale;
+  unsigned int se_vport_zoffset;
+  unsigned int se_cntl_status;
+  unsigned int re_top_left;
+  unsigned int re_misc;
+} drm_radeon_context_regs_t;
+typedef struct {
+  unsigned int se_zbias_factor;
+  unsigned int se_zbias_constant;
+} drm_radeon_context2_regs_t;
+typedef struct {
+  unsigned int pp_txfilter;
+  unsigned int pp_txformat;
+  unsigned int pp_txoffset;
+  unsigned int pp_txcblend;
+  unsigned int pp_txablend;
+  unsigned int pp_tfactor;
+  unsigned int pp_border_color;
+} drm_radeon_texture_regs_t;
+typedef struct {
+  unsigned int start;
+  unsigned int finish;
+  unsigned int prim : 8;
+  unsigned int stateidx : 8;
+  unsigned int numverts : 16;
+  unsigned int vc_format;
+} drm_radeon_prim_t;
+typedef struct {
+  drm_radeon_context_regs_t context;
+  drm_radeon_texture_regs_t tex[RADEON_MAX_TEXTURE_UNITS];
+  drm_radeon_context2_regs_t context2;
+  unsigned int dirty;
+} drm_radeon_state_t;
+typedef struct {
+  drm_radeon_context_regs_t context_state;
+  drm_radeon_texture_regs_t tex_state[RADEON_MAX_TEXTURE_UNITS];
+  unsigned int dirty;
+  unsigned int vertsize;
+  unsigned int vc_format;
+  struct drm_clip_rect boxes[RADEON_NR_SAREA_CLIPRECTS];
+  unsigned int nbox;
+  unsigned int last_frame;
+  unsigned int last_dispatch;
+  unsigned int last_clear;
+  struct drm_tex_region tex_list[RADEON_NR_TEX_HEAPS][RADEON_NR_TEX_REGIONS + 1];
+  unsigned int tex_age[RADEON_NR_TEX_HEAPS];
+  int ctx_owner;
+  int pfState;
+  int pfCurrentPage;
+  int crtc2_base;
+  int tiling_enabled;
+} drm_radeon_sarea_t;
+#define DRM_RADEON_CP_INIT 0x00
+#define DRM_RADEON_CP_START 0x01
+#define DRM_RADEON_CP_STOP 0x02
+#define DRM_RADEON_CP_RESET 0x03
+#define DRM_RADEON_CP_IDLE 0x04
+#define DRM_RADEON_RESET 0x05
+#define DRM_RADEON_FULLSCREEN 0x06
+#define DRM_RADEON_SWAP 0x07
+#define DRM_RADEON_CLEAR 0x08
+#define DRM_RADEON_VERTEX 0x09
+#define DRM_RADEON_INDICES 0x0A
+#define DRM_RADEON_NOT_USED
+#define DRM_RADEON_STIPPLE 0x0C
+#define DRM_RADEON_INDIRECT 0x0D
+#define DRM_RADEON_TEXTURE 0x0E
+#define DRM_RADEON_VERTEX2 0x0F
+#define DRM_RADEON_CMDBUF 0x10
+#define DRM_RADEON_GETPARAM 0x11
+#define DRM_RADEON_FLIP 0x12
+#define DRM_RADEON_ALLOC 0x13
+#define DRM_RADEON_FREE 0x14
+#define DRM_RADEON_INIT_HEAP 0x15
+#define DRM_RADEON_IRQ_EMIT 0x16
+#define DRM_RADEON_IRQ_WAIT 0x17
+#define DRM_RADEON_CP_RESUME 0x18
+#define DRM_RADEON_SETPARAM 0x19
+#define DRM_RADEON_SURF_ALLOC 0x1a
+#define DRM_RADEON_SURF_FREE 0x1b
+#define DRM_RADEON_GEM_INFO 0x1c
+#define DRM_RADEON_GEM_CREATE 0x1d
+#define DRM_RADEON_GEM_MMAP 0x1e
+#define DRM_RADEON_GEM_PREAD 0x21
+#define DRM_RADEON_GEM_PWRITE 0x22
+#define DRM_RADEON_GEM_SET_DOMAIN 0x23
+#define DRM_RADEON_GEM_WAIT_IDLE 0x24
+#define DRM_RADEON_CS 0x26
+#define DRM_RADEON_INFO 0x27
+#define DRM_RADEON_GEM_SET_TILING 0x28
+#define DRM_RADEON_GEM_GET_TILING 0x29
+#define DRM_RADEON_GEM_BUSY 0x2a
+#define DRM_RADEON_GEM_VA 0x2b
+#define DRM_RADEON_GEM_OP 0x2c
+#define DRM_RADEON_GEM_USERPTR 0x2d
+#define DRM_IOCTL_RADEON_CP_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_CP_INIT, drm_radeon_init_t)
+#define DRM_IOCTL_RADEON_CP_START DRM_IO(DRM_COMMAND_BASE + DRM_RADEON_CP_START)
+#define DRM_IOCTL_RADEON_CP_STOP DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_CP_STOP, drm_radeon_cp_stop_t)
+#define DRM_IOCTL_RADEON_CP_RESET DRM_IO(DRM_COMMAND_BASE + DRM_RADEON_CP_RESET)
+#define DRM_IOCTL_RADEON_CP_IDLE DRM_IO(DRM_COMMAND_BASE + DRM_RADEON_CP_IDLE)
+#define DRM_IOCTL_RADEON_RESET DRM_IO(DRM_COMMAND_BASE + DRM_RADEON_RESET)
+#define DRM_IOCTL_RADEON_FULLSCREEN DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_FULLSCREEN, drm_radeon_fullscreen_t)
+#define DRM_IOCTL_RADEON_SWAP DRM_IO(DRM_COMMAND_BASE + DRM_RADEON_SWAP)
+#define DRM_IOCTL_RADEON_CLEAR DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_CLEAR, drm_radeon_clear_t)
+#define DRM_IOCTL_RADEON_VERTEX DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_VERTEX, drm_radeon_vertex_t)
+#define DRM_IOCTL_RADEON_INDICES DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_INDICES, drm_radeon_indices_t)
+#define DRM_IOCTL_RADEON_STIPPLE DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_STIPPLE, drm_radeon_stipple_t)
+#define DRM_IOCTL_RADEON_INDIRECT DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_INDIRECT, drm_radeon_indirect_t)
+#define DRM_IOCTL_RADEON_TEXTURE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_TEXTURE, drm_radeon_texture_t)
+#define DRM_IOCTL_RADEON_VERTEX2 DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_VERTEX2, drm_radeon_vertex2_t)
+#define DRM_IOCTL_RADEON_CMDBUF DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_CMDBUF, drm_radeon_cmd_buffer_t)
+#define DRM_IOCTL_RADEON_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GETPARAM, drm_radeon_getparam_t)
+#define DRM_IOCTL_RADEON_FLIP DRM_IO(DRM_COMMAND_BASE + DRM_RADEON_FLIP)
+#define DRM_IOCTL_RADEON_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_ALLOC, drm_radeon_mem_alloc_t)
+#define DRM_IOCTL_RADEON_FREE DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_FREE, drm_radeon_mem_free_t)
+#define DRM_IOCTL_RADEON_INIT_HEAP DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_INIT_HEAP, drm_radeon_mem_init_heap_t)
+#define DRM_IOCTL_RADEON_IRQ_EMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_IRQ_EMIT, drm_radeon_irq_emit_t)
+#define DRM_IOCTL_RADEON_IRQ_WAIT DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_IRQ_WAIT, drm_radeon_irq_wait_t)
+#define DRM_IOCTL_RADEON_CP_RESUME DRM_IO(DRM_COMMAND_BASE + DRM_RADEON_CP_RESUME)
+#define DRM_IOCTL_RADEON_SETPARAM DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_SETPARAM, drm_radeon_setparam_t)
+#define DRM_IOCTL_RADEON_SURF_ALLOC DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_SURF_ALLOC, drm_radeon_surface_alloc_t)
+#define DRM_IOCTL_RADEON_SURF_FREE DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_SURF_FREE, drm_radeon_surface_free_t)
+#define DRM_IOCTL_RADEON_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_INFO, struct drm_radeon_gem_info)
+#define DRM_IOCTL_RADEON_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_CREATE, struct drm_radeon_gem_create)
+#define DRM_IOCTL_RADEON_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_MMAP, struct drm_radeon_gem_mmap)
+#define DRM_IOCTL_RADEON_GEM_PREAD DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PREAD, struct drm_radeon_gem_pread)
+#define DRM_IOCTL_RADEON_GEM_PWRITE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PWRITE, struct drm_radeon_gem_pwrite)
+#define DRM_IOCTL_RADEON_GEM_SET_DOMAIN DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_SET_DOMAIN, struct drm_radeon_gem_set_domain)
+#define DRM_IOCTL_RADEON_GEM_WAIT_IDLE DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_GEM_WAIT_IDLE, struct drm_radeon_gem_wait_idle)
+#define DRM_IOCTL_RADEON_CS DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_CS, struct drm_radeon_cs)
+#define DRM_IOCTL_RADEON_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_INFO, struct drm_radeon_info)
+#define DRM_IOCTL_RADEON_GEM_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_SET_TILING, struct drm_radeon_gem_set_tiling)
+#define DRM_IOCTL_RADEON_GEM_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_GET_TILING, struct drm_radeon_gem_get_tiling)
+#define DRM_IOCTL_RADEON_GEM_BUSY DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_BUSY, struct drm_radeon_gem_busy)
+#define DRM_IOCTL_RADEON_GEM_VA DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_VA, struct drm_radeon_gem_va)
+#define DRM_IOCTL_RADEON_GEM_OP DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_OP, struct drm_radeon_gem_op)
+#define DRM_IOCTL_RADEON_GEM_USERPTR DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_USERPTR, struct drm_radeon_gem_userptr)
+typedef struct drm_radeon_init {
+  enum {
+    RADEON_INIT_CP = 0x01,
+    RADEON_CLEANUP_CP = 0x02,
+    RADEON_INIT_R200_CP = 0x03,
+    RADEON_INIT_R300_CP = 0x04,
+    RADEON_INIT_R600_CP = 0x05
+  } func;
+  unsigned long sarea_priv_offset;
+  int is_pci;
+  int cp_mode;
+  int gart_size;
+  int ring_size;
+  int usec_timeout;
+  unsigned int fb_bpp;
+  unsigned int front_offset, front_pitch;
+  unsigned int back_offset, back_pitch;
+  unsigned int depth_bpp;
+  unsigned int depth_offset, depth_pitch;
+  unsigned long fb_offset;
+  unsigned long mmio_offset;
+  unsigned long ring_offset;
+  unsigned long ring_rptr_offset;
+  unsigned long buffers_offset;
+  unsigned long gart_textures_offset;
+} drm_radeon_init_t;
+typedef struct drm_radeon_cp_stop {
+  int flush;
+  int idle;
+} drm_radeon_cp_stop_t;
+typedef struct drm_radeon_fullscreen {
+  enum {
+    RADEON_INIT_FULLSCREEN = 0x01,
+    RADEON_CLEANUP_FULLSCREEN = 0x02
+  } func;
+} drm_radeon_fullscreen_t;
+#define CLEAR_X1 0
+#define CLEAR_Y1 1
+#define CLEAR_X2 2
+#define CLEAR_Y2 3
+#define CLEAR_DEPTH 4
+typedef union drm_radeon_clear_rect {
+  float f[5];
+  unsigned int ui[5];
+} drm_radeon_clear_rect_t;
+typedef struct drm_radeon_clear {
+  unsigned int flags;
+  unsigned int clear_color;
+  unsigned int clear_depth;
+  unsigned int color_mask;
+  unsigned int depth_mask;
+  drm_radeon_clear_rect_t __user * depth_boxes;
+} drm_radeon_clear_t;
+typedef struct drm_radeon_vertex {
+  int prim;
+  int idx;
+  int count;
+  int discard;
+} drm_radeon_vertex_t;
+typedef struct drm_radeon_indices {
+  int prim;
+  int idx;
+  int start;
+  int end;
+  int discard;
+} drm_radeon_indices_t;
+typedef struct drm_radeon_vertex2 {
+  int idx;
+  int discard;
+  int nr_states;
+  drm_radeon_state_t __user * state;
+  int nr_prims;
+  drm_radeon_prim_t __user * prim;
+} drm_radeon_vertex2_t;
+typedef struct drm_radeon_cmd_buffer {
+  int bufsz;
+  char __user * buf;
+  int nbox;
+  struct drm_clip_rect __user * boxes;
+} drm_radeon_cmd_buffer_t;
+typedef struct drm_radeon_tex_image {
+  unsigned int x, y;
+  unsigned int width, height;
+  const void __user * data;
+} drm_radeon_tex_image_t;
+typedef struct drm_radeon_texture {
+  unsigned int offset;
+  int pitch;
+  int format;
+  int width;
+  int height;
+  drm_radeon_tex_image_t __user * image;
+} drm_radeon_texture_t;
+typedef struct drm_radeon_stipple {
+  unsigned int __user * mask;
+} drm_radeon_stipple_t;
+typedef struct drm_radeon_indirect {
+  int idx;
+  int start;
+  int end;
+  int discard;
+} drm_radeon_indirect_t;
+#define RADEON_CARD_PCI 0
+#define RADEON_CARD_AGP 1
+#define RADEON_CARD_PCIE 2
+#define RADEON_PARAM_GART_BUFFER_OFFSET 1
+#define RADEON_PARAM_LAST_FRAME 2
+#define RADEON_PARAM_LAST_DISPATCH 3
+#define RADEON_PARAM_LAST_CLEAR 4
+#define RADEON_PARAM_IRQ_NR 5
+#define RADEON_PARAM_GART_BASE 6
+#define RADEON_PARAM_REGISTER_HANDLE 7
+#define RADEON_PARAM_STATUS_HANDLE 8
+#define RADEON_PARAM_SAREA_HANDLE 9
+#define RADEON_PARAM_GART_TEX_HANDLE 10
+#define RADEON_PARAM_SCRATCH_OFFSET 11
+#define RADEON_PARAM_CARD_TYPE 12
+#define RADEON_PARAM_VBLANK_CRTC 13
+#define RADEON_PARAM_FB_LOCATION 14
+#define RADEON_PARAM_NUM_GB_PIPES 15
+#define RADEON_PARAM_DEVICE_ID 16
+#define RADEON_PARAM_NUM_Z_PIPES 17
+typedef struct drm_radeon_getparam {
+  int param;
+  void __user * value;
+} drm_radeon_getparam_t;
+#define RADEON_MEM_REGION_GART 1
+#define RADEON_MEM_REGION_FB 2
+typedef struct drm_radeon_mem_alloc {
+  int region;
+  int alignment;
+  int size;
+  int __user * region_offset;
+} drm_radeon_mem_alloc_t;
+typedef struct drm_radeon_mem_free {
+  int region;
+  int region_offset;
+} drm_radeon_mem_free_t;
+typedef struct drm_radeon_mem_init_heap {
+  int region;
+  int size;
+  int start;
+} drm_radeon_mem_init_heap_t;
+typedef struct drm_radeon_irq_emit {
+  int __user * irq_seq;
+} drm_radeon_irq_emit_t;
+typedef struct drm_radeon_irq_wait {
+  int irq_seq;
+} drm_radeon_irq_wait_t;
+typedef struct drm_radeon_setparam {
+  unsigned int param;
+  __s64 value;
+} drm_radeon_setparam_t;
+#define RADEON_SETPARAM_FB_LOCATION 1
+#define RADEON_SETPARAM_SWITCH_TILING 2
+#define RADEON_SETPARAM_PCIGART_LOCATION 3
+#define RADEON_SETPARAM_NEW_MEMMAP 4
+#define RADEON_SETPARAM_PCIGART_TABLE_SIZE 5
+#define RADEON_SETPARAM_VBLANK_CRTC 6
+typedef struct drm_radeon_surface_alloc {
+  unsigned int address;
+  unsigned int size;
+  unsigned int flags;
+} drm_radeon_surface_alloc_t;
+typedef struct drm_radeon_surface_free {
+  unsigned int address;
+} drm_radeon_surface_free_t;
+#define DRM_RADEON_VBLANK_CRTC1 1
+#define DRM_RADEON_VBLANK_CRTC2 2
+#define RADEON_GEM_DOMAIN_CPU 0x1
+#define RADEON_GEM_DOMAIN_GTT 0x2
+#define RADEON_GEM_DOMAIN_VRAM 0x4
+struct drm_radeon_gem_info {
+  __u64 gart_size;
+  __u64 vram_size;
+  __u64 vram_visible;
+};
+#define RADEON_GEM_NO_BACKING_STORE (1 << 0)
+#define RADEON_GEM_GTT_UC (1 << 1)
+#define RADEON_GEM_GTT_WC (1 << 2)
+#define RADEON_GEM_CPU_ACCESS (1 << 3)
+#define RADEON_GEM_NO_CPU_ACCESS (1 << 4)
+struct drm_radeon_gem_create {
+  __u64 size;
+  __u64 alignment;
+  __u32 handle;
+  __u32 initial_domain;
+  __u32 flags;
+};
+#define RADEON_GEM_USERPTR_READONLY (1 << 0)
+#define RADEON_GEM_USERPTR_ANONONLY (1 << 1)
+#define RADEON_GEM_USERPTR_VALIDATE (1 << 2)
+#define RADEON_GEM_USERPTR_REGISTER (1 << 3)
+struct drm_radeon_gem_userptr {
+  __u64 addr;
+  __u64 size;
+  __u32 flags;
+  __u32 handle;
+};
+#define RADEON_TILING_MACRO 0x1
+#define RADEON_TILING_MICRO 0x2
+#define RADEON_TILING_SWAP_16BIT 0x4
+#define RADEON_TILING_SWAP_32BIT 0x8
+#define RADEON_TILING_SURFACE 0x10
+#define RADEON_TILING_MICRO_SQUARE 0x20
+#define RADEON_TILING_EG_BANKW_SHIFT 8
+#define RADEON_TILING_EG_BANKW_MASK 0xf
+#define RADEON_TILING_EG_BANKH_SHIFT 12
+#define RADEON_TILING_EG_BANKH_MASK 0xf
+#define RADEON_TILING_EG_MACRO_TILE_ASPECT_SHIFT 16
+#define RADEON_TILING_EG_MACRO_TILE_ASPECT_MASK 0xf
+#define RADEON_TILING_EG_TILE_SPLIT_SHIFT 24
+#define RADEON_TILING_EG_TILE_SPLIT_MASK 0xf
+#define RADEON_TILING_EG_STENCIL_TILE_SPLIT_SHIFT 28
+#define RADEON_TILING_EG_STENCIL_TILE_SPLIT_MASK 0xf
+struct drm_radeon_gem_set_tiling {
+  __u32 handle;
+  __u32 tiling_flags;
+  __u32 pitch;
+};
+struct drm_radeon_gem_get_tiling {
+  __u32 handle;
+  __u32 tiling_flags;
+  __u32 pitch;
+};
+struct drm_radeon_gem_mmap {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+  __u64 size;
+  __u64 addr_ptr;
+};
+struct drm_radeon_gem_set_domain {
+  __u32 handle;
+  __u32 read_domains;
+  __u32 write_domain;
+};
+struct drm_radeon_gem_wait_idle {
+  __u32 handle;
+  __u32 pad;
+};
+struct drm_radeon_gem_busy {
+  __u32 handle;
+  __u32 domain;
+};
+struct drm_radeon_gem_pread {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+  __u64 size;
+  __u64 data_ptr;
+};
+struct drm_radeon_gem_pwrite {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+  __u64 size;
+  __u64 data_ptr;
+};
+struct drm_radeon_gem_op {
+  __u32 handle;
+  __u32 op;
+  __u64 value;
+};
+#define RADEON_GEM_OP_GET_INITIAL_DOMAIN 0
+#define RADEON_GEM_OP_SET_INITIAL_DOMAIN 1
+#define RADEON_VA_MAP 1
+#define RADEON_VA_UNMAP 2
+#define RADEON_VA_RESULT_OK 0
+#define RADEON_VA_RESULT_ERROR 1
+#define RADEON_VA_RESULT_VA_EXIST 2
+#define RADEON_VM_PAGE_VALID (1 << 0)
+#define RADEON_VM_PAGE_READABLE (1 << 1)
+#define RADEON_VM_PAGE_WRITEABLE (1 << 2)
+#define RADEON_VM_PAGE_SYSTEM (1 << 3)
+#define RADEON_VM_PAGE_SNOOPED (1 << 4)
+struct drm_radeon_gem_va {
+  __u32 handle;
+  __u32 operation;
+  __u32 vm_id;
+  __u32 flags;
+  __u64 offset;
+};
+#define RADEON_CHUNK_ID_RELOCS 0x01
+#define RADEON_CHUNK_ID_IB 0x02
+#define RADEON_CHUNK_ID_FLAGS 0x03
+#define RADEON_CHUNK_ID_CONST_IB 0x04
+#define RADEON_CS_KEEP_TILING_FLAGS 0x01
+#define RADEON_CS_USE_VM 0x02
+#define RADEON_CS_END_OF_FRAME 0x04
+#define RADEON_CS_RING_GFX 0
+#define RADEON_CS_RING_COMPUTE 1
+#define RADEON_CS_RING_DMA 2
+#define RADEON_CS_RING_UVD 3
+#define RADEON_CS_RING_VCE 4
+struct drm_radeon_cs_chunk {
+  __u32 chunk_id;
+  __u32 length_dw;
+  __u64 chunk_data;
+};
+#define RADEON_RELOC_PRIO_MASK (0xf << 0)
+struct drm_radeon_cs_reloc {
+  __u32 handle;
+  __u32 read_domains;
+  __u32 write_domain;
+  __u32 flags;
+};
+struct drm_radeon_cs {
+  __u32 num_chunks;
+  __u32 cs_id;
+  __u64 chunks;
+  __u64 gart_limit;
+  __u64 vram_limit;
+};
+#define RADEON_INFO_DEVICE_ID 0x00
+#define RADEON_INFO_NUM_GB_PIPES 0x01
+#define RADEON_INFO_NUM_Z_PIPES 0x02
+#define RADEON_INFO_ACCEL_WORKING 0x03
+#define RADEON_INFO_CRTC_FROM_ID 0x04
+#define RADEON_INFO_ACCEL_WORKING2 0x05
+#define RADEON_INFO_TILING_CONFIG 0x06
+#define RADEON_INFO_WANT_HYPERZ 0x07
+#define RADEON_INFO_WANT_CMASK 0x08
+#define RADEON_INFO_CLOCK_CRYSTAL_FREQ 0x09
+#define RADEON_INFO_NUM_BACKENDS 0x0a
+#define RADEON_INFO_NUM_TILE_PIPES 0x0b
+#define RADEON_INFO_FUSION_GART_WORKING 0x0c
+#define RADEON_INFO_BACKEND_MAP 0x0d
+#define RADEON_INFO_VA_START 0x0e
+#define RADEON_INFO_IB_VM_MAX_SIZE 0x0f
+#define RADEON_INFO_MAX_PIPES 0x10
+#define RADEON_INFO_TIMESTAMP 0x11
+#define RADEON_INFO_MAX_SE 0x12
+#define RADEON_INFO_MAX_SH_PER_SE 0x13
+#define RADEON_INFO_FASTFB_WORKING 0x14
+#define RADEON_INFO_RING_WORKING 0x15
+#define RADEON_INFO_SI_TILE_MODE_ARRAY 0x16
+#define RADEON_INFO_SI_CP_DMA_COMPUTE 0x17
+#define RADEON_INFO_CIK_MACROTILE_MODE_ARRAY 0x18
+#define RADEON_INFO_SI_BACKEND_ENABLED_MASK 0x19
+#define RADEON_INFO_MAX_SCLK 0x1a
+#define RADEON_INFO_VCE_FW_VERSION 0x1b
+#define RADEON_INFO_VCE_FB_VERSION 0x1c
+#define RADEON_INFO_NUM_BYTES_MOVED 0x1d
+#define RADEON_INFO_VRAM_USAGE 0x1e
+#define RADEON_INFO_GTT_USAGE 0x1f
+#define RADEON_INFO_ACTIVE_CU_COUNT 0x20
+#define RADEON_INFO_CURRENT_GPU_TEMP 0x21
+#define RADEON_INFO_CURRENT_GPU_SCLK 0x22
+#define RADEON_INFO_CURRENT_GPU_MCLK 0x23
+#define RADEON_INFO_READ_REG 0x24
+#define RADEON_INFO_VA_UNMAP_WORKING 0x25
+#define RADEON_INFO_GPU_RESET_COUNTER 0x26
+struct drm_radeon_info {
+  __u32 request;
+  __u32 pad;
+  __u64 value;
+};
+#define SI_TILE_MODE_COLOR_LINEAR_ALIGNED 8
+#define SI_TILE_MODE_COLOR_1D 13
+#define SI_TILE_MODE_COLOR_1D_SCANOUT 9
+#define SI_TILE_MODE_COLOR_2D_8BPP 14
+#define SI_TILE_MODE_COLOR_2D_16BPP 15
+#define SI_TILE_MODE_COLOR_2D_32BPP 16
+#define SI_TILE_MODE_COLOR_2D_64BPP 17
+#define SI_TILE_MODE_COLOR_2D_SCANOUT_16BPP 11
+#define SI_TILE_MODE_COLOR_2D_SCANOUT_32BPP 12
+#define SI_TILE_MODE_DEPTH_STENCIL_1D 4
+#define SI_TILE_MODE_DEPTH_STENCIL_2D 0
+#define SI_TILE_MODE_DEPTH_STENCIL_2D_2AA 3
+#define SI_TILE_MODE_DEPTH_STENCIL_2D_4AA 3
+#define SI_TILE_MODE_DEPTH_STENCIL_2D_8AA 2
+#define CIK_TILE_MODE_DEPTH_STENCIL_1D 5
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/savage_drm.h b/i686-linux-musl/include/drm/savage_drm.h
new file mode 100644
index 0000000..ae87d21
--- /dev/null
+++ b/i686-linux-musl/include/drm/savage_drm.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 __SAVAGE_DRM_H__
+#define __SAVAGE_DRM_H__
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef __SAVAGE_SAREA_DEFINES__
+#define __SAVAGE_SAREA_DEFINES__
+#define SAVAGE_CARD_HEAP 0
+#define SAVAGE_AGP_HEAP 1
+#define SAVAGE_NR_TEX_HEAPS 2
+#define SAVAGE_NR_TEX_REGIONS 16
+#define SAVAGE_LOG_MIN_TEX_REGION_SIZE 16
+#endif
+typedef struct _drm_savage_sarea {
+  struct drm_tex_region texList[SAVAGE_NR_TEX_HEAPS][SAVAGE_NR_TEX_REGIONS + 1];
+  unsigned int texAge[SAVAGE_NR_TEX_HEAPS];
+  int ctxOwner;
+} drm_savage_sarea_t, * drm_savage_sarea_ptr;
+#define DRM_SAVAGE_BCI_INIT 0x00
+#define DRM_SAVAGE_BCI_CMDBUF 0x01
+#define DRM_SAVAGE_BCI_EVENT_EMIT 0x02
+#define DRM_SAVAGE_BCI_EVENT_WAIT 0x03
+#define DRM_IOCTL_SAVAGE_BCI_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_SAVAGE_BCI_INIT, drm_savage_init_t)
+#define DRM_IOCTL_SAVAGE_BCI_CMDBUF DRM_IOW(DRM_COMMAND_BASE + DRM_SAVAGE_BCI_CMDBUF, drm_savage_cmdbuf_t)
+#define DRM_IOCTL_SAVAGE_BCI_EVENT_EMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_SAVAGE_BCI_EVENT_EMIT, drm_savage_event_emit_t)
+#define DRM_IOCTL_SAVAGE_BCI_EVENT_WAIT DRM_IOW(DRM_COMMAND_BASE + DRM_SAVAGE_BCI_EVENT_WAIT, drm_savage_event_wait_t)
+#define SAVAGE_DMA_PCI 1
+#define SAVAGE_DMA_AGP 3
+typedef struct drm_savage_init {
+  enum {
+    SAVAGE_INIT_BCI = 1,
+    SAVAGE_CLEANUP_BCI = 2
+  } func;
+  unsigned int sarea_priv_offset;
+  unsigned int cob_size;
+  unsigned int bci_threshold_lo, bci_threshold_hi;
+  unsigned int dma_type;
+  unsigned int fb_bpp;
+  unsigned int front_offset, front_pitch;
+  unsigned int back_offset, back_pitch;
+  unsigned int depth_bpp;
+  unsigned int depth_offset, depth_pitch;
+  unsigned int texture_offset;
+  unsigned int texture_size;
+  unsigned long status_offset;
+  unsigned long buffers_offset;
+  unsigned long agp_textures_offset;
+  unsigned long cmd_dma_offset;
+} drm_savage_init_t;
+typedef union drm_savage_cmd_header drm_savage_cmd_header_t;
+typedef struct drm_savage_cmdbuf {
+  drm_savage_cmd_header_t __user * cmd_addr;
+  unsigned int size;
+  unsigned int dma_idx;
+  int discard;
+  unsigned int __user * vb_addr;
+  unsigned int vb_size;
+  unsigned int vb_stride;
+  struct drm_clip_rect __user * box_addr;
+  unsigned int nbox;
+} drm_savage_cmdbuf_t;
+#define SAVAGE_WAIT_2D 0x1
+#define SAVAGE_WAIT_3D 0x2
+#define SAVAGE_WAIT_IRQ 0x4
+typedef struct drm_savage_event {
+  unsigned int count;
+  unsigned int flags;
+} drm_savage_event_emit_t, drm_savage_event_wait_t;
+#define SAVAGE_CMD_STATE 0
+#define SAVAGE_CMD_DMA_PRIM 1
+#define SAVAGE_CMD_VB_PRIM 2
+#define SAVAGE_CMD_DMA_IDX 3
+#define SAVAGE_CMD_VB_IDX 4
+#define SAVAGE_CMD_CLEAR 5
+#define SAVAGE_CMD_SWAP 6
+#define SAVAGE_PRIM_TRILIST 0
+#define SAVAGE_PRIM_TRISTRIP 1
+#define SAVAGE_PRIM_TRIFAN 2
+#define SAVAGE_PRIM_TRILIST_201 3
+#define SAVAGE_SKIP_Z 0x01
+#define SAVAGE_SKIP_W 0x02
+#define SAVAGE_SKIP_C0 0x04
+#define SAVAGE_SKIP_C1 0x08
+#define SAVAGE_SKIP_S0 0x10
+#define SAVAGE_SKIP_T0 0x20
+#define SAVAGE_SKIP_ST0 0x30
+#define SAVAGE_SKIP_S1 0x40
+#define SAVAGE_SKIP_T1 0x80
+#define SAVAGE_SKIP_ST1 0xc0
+#define SAVAGE_SKIP_ALL_S3D 0x3f
+#define SAVAGE_SKIP_ALL_S4 0xff
+#define SAVAGE_FRONT 0x1
+#define SAVAGE_BACK 0x2
+#define SAVAGE_DEPTH 0x4
+union drm_savage_cmd_header {
+  struct {
+    unsigned char cmd;
+    unsigned char pad0;
+    unsigned short pad1;
+    unsigned short pad2;
+    unsigned short pad3;
+  } cmd;
+  struct {
+    unsigned char cmd;
+    unsigned char global;
+    unsigned short count;
+    unsigned short start;
+    unsigned short pad3;
+  } state;
+  struct {
+    unsigned char cmd;
+    unsigned char prim;
+    unsigned short skip;
+    unsigned short count;
+    unsigned short start;
+  } prim;
+  struct {
+    unsigned char cmd;
+    unsigned char prim;
+    unsigned short skip;
+    unsigned short count;
+    unsigned short pad3;
+  } idx;
+  struct {
+    unsigned char cmd;
+    unsigned char pad0;
+    unsigned short pad1;
+    unsigned int flags;
+  } clear0;
+  struct {
+    unsigned int mask;
+    unsigned int value;
+  } clear1;
+};
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/sis_drm.h b/i686-linux-musl/include/drm/sis_drm.h
new file mode 100644
index 0000000..1606a85
--- /dev/null
+++ b/i686-linux-musl/include/drm/sis_drm.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 __SIS_DRM_H__
+#define __SIS_DRM_H__
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define NOT_USED_0_3
+#define DRM_SIS_FB_ALLOC 0x04
+#define DRM_SIS_FB_FREE 0x05
+#define NOT_USED_6_12
+#define DRM_SIS_AGP_INIT 0x13
+#define DRM_SIS_AGP_ALLOC 0x14
+#define DRM_SIS_AGP_FREE 0x15
+#define DRM_SIS_FB_INIT 0x16
+#define DRM_IOCTL_SIS_FB_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_SIS_FB_ALLOC, drm_sis_mem_t)
+#define DRM_IOCTL_SIS_FB_FREE DRM_IOW(DRM_COMMAND_BASE + DRM_SIS_FB_FREE, drm_sis_mem_t)
+#define DRM_IOCTL_SIS_AGP_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_SIS_AGP_INIT, drm_sis_agp_t)
+#define DRM_IOCTL_SIS_AGP_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_SIS_AGP_ALLOC, drm_sis_mem_t)
+#define DRM_IOCTL_SIS_AGP_FREE DRM_IOW(DRM_COMMAND_BASE + DRM_SIS_AGP_FREE, drm_sis_mem_t)
+#define DRM_IOCTL_SIS_FB_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_SIS_FB_INIT, drm_sis_fb_t)
+typedef struct {
+  int context;
+  unsigned long offset;
+  unsigned long size;
+  unsigned long free;
+} drm_sis_mem_t;
+typedef struct {
+  unsigned long offset, size;
+} drm_sis_agp_t;
+typedef struct {
+  unsigned long offset, size;
+} drm_sis_fb_t;
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/tegra_drm.h b/i686-linux-musl/include/drm/tegra_drm.h
new file mode 100644
index 0000000..5e90635
--- /dev/null
+++ b/i686-linux-musl/include/drm/tegra_drm.h
@@ -0,0 +1,267 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_TEGRA_DRM_H_
+#define _UAPI_TEGRA_DRM_H_
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_TEGRA_GEM_CREATE_TILED (1 << 0)
+#define DRM_TEGRA_GEM_CREATE_BOTTOM_UP (1 << 1)
+struct drm_tegra_gem_create {
+  __u64 size;
+  __u32 flags;
+  __u32 handle;
+};
+struct drm_tegra_gem_mmap {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+};
+struct drm_tegra_syncpt_read {
+  __u32 id;
+  __u32 value;
+};
+struct drm_tegra_syncpt_incr {
+  __u32 id;
+  __u32 pad;
+};
+struct drm_tegra_syncpt_wait {
+  __u32 id;
+  __u32 thresh;
+  __u32 timeout;
+  __u32 value;
+};
+#define DRM_TEGRA_NO_TIMEOUT (0xffffffff)
+struct drm_tegra_open_channel {
+  __u32 client;
+  __u32 pad;
+  __u64 context;
+};
+struct drm_tegra_close_channel {
+  __u64 context;
+};
+struct drm_tegra_get_syncpt {
+  __u64 context;
+  __u32 index;
+  __u32 id;
+};
+struct drm_tegra_get_syncpt_base {
+  __u64 context;
+  __u32 syncpt;
+  __u32 id;
+};
+struct drm_tegra_syncpt {
+  __u32 id;
+  __u32 incrs;
+};
+struct drm_tegra_cmdbuf {
+  __u32 handle;
+  __u32 offset;
+  __u32 words;
+  __u32 pad;
+};
+struct drm_tegra_reloc {
+  struct {
+    __u32 handle;
+    __u32 offset;
+  } cmdbuf;
+  struct {
+    __u32 handle;
+    __u32 offset;
+  } target;
+  __u32 shift;
+  __u32 pad;
+};
+struct drm_tegra_waitchk {
+  __u32 handle;
+  __u32 offset;
+  __u32 syncpt;
+  __u32 thresh;
+};
+struct drm_tegra_submit {
+  __u64 context;
+  __u32 num_syncpts;
+  __u32 num_cmdbufs;
+  __u32 num_relocs;
+  __u32 num_waitchks;
+  __u32 waitchk_mask;
+  __u32 timeout;
+  __u64 syncpts;
+  __u64 cmdbufs;
+  __u64 relocs;
+  __u64 waitchks;
+  __u32 fence;
+  __u32 reserved[5];
+};
+#define DRM_TEGRA_GEM_TILING_MODE_PITCH 0
+#define DRM_TEGRA_GEM_TILING_MODE_TILED 1
+#define DRM_TEGRA_GEM_TILING_MODE_BLOCK 2
+struct drm_tegra_gem_set_tiling {
+  __u32 handle;
+  __u32 mode;
+  __u32 value;
+  __u32 pad;
+};
+struct drm_tegra_gem_get_tiling {
+  __u32 handle;
+  __u32 mode;
+  __u32 value;
+  __u32 pad;
+};
+#define DRM_TEGRA_GEM_BOTTOM_UP (1 << 0)
+#define DRM_TEGRA_GEM_FLAGS (DRM_TEGRA_GEM_BOTTOM_UP)
+struct drm_tegra_gem_set_flags {
+  __u32 handle;
+  __u32 flags;
+};
+struct drm_tegra_gem_get_flags {
+  __u32 handle;
+  __u32 flags;
+};
+#define DRM_TEGRA_GEM_CREATE 0x00
+#define DRM_TEGRA_GEM_MMAP 0x01
+#define DRM_TEGRA_SYNCPT_READ 0x02
+#define DRM_TEGRA_SYNCPT_INCR 0x03
+#define DRM_TEGRA_SYNCPT_WAIT 0x04
+#define DRM_TEGRA_OPEN_CHANNEL 0x05
+#define DRM_TEGRA_CLOSE_CHANNEL 0x06
+#define DRM_TEGRA_GET_SYNCPT 0x07
+#define DRM_TEGRA_SUBMIT 0x08
+#define DRM_TEGRA_GET_SYNCPT_BASE 0x09
+#define DRM_TEGRA_GEM_SET_TILING 0x0a
+#define DRM_TEGRA_GEM_GET_TILING 0x0b
+#define DRM_TEGRA_GEM_SET_FLAGS 0x0c
+#define DRM_TEGRA_GEM_GET_FLAGS 0x0d
+#define DRM_IOCTL_TEGRA_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_CREATE, struct drm_tegra_gem_create)
+#define DRM_IOCTL_TEGRA_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_MMAP, struct drm_tegra_gem_mmap)
+#define DRM_IOCTL_TEGRA_SYNCPT_READ DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_READ, struct drm_tegra_syncpt_read)
+#define DRM_IOCTL_TEGRA_SYNCPT_INCR DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_INCR, struct drm_tegra_syncpt_incr)
+#define DRM_IOCTL_TEGRA_SYNCPT_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_WAIT, struct drm_tegra_syncpt_wait)
+#define DRM_IOCTL_TEGRA_OPEN_CHANNEL DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_OPEN_CHANNEL, struct drm_tegra_open_channel)
+#define DRM_IOCTL_TEGRA_CLOSE_CHANNEL DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_CLOSE_CHANNEL, struct drm_tegra_close_channel)
+#define DRM_IOCTL_TEGRA_GET_SYNCPT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GET_SYNCPT, struct drm_tegra_get_syncpt)
+#define DRM_IOCTL_TEGRA_SUBMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SUBMIT, struct drm_tegra_submit)
+#define DRM_IOCTL_TEGRA_GET_SYNCPT_BASE DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GET_SYNCPT_BASE, struct drm_tegra_get_syncpt_base)
+#define DRM_IOCTL_TEGRA_GEM_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_SET_TILING, struct drm_tegra_gem_set_tiling)
+#define DRM_IOCTL_TEGRA_GEM_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_GET_TILING, struct drm_tegra_gem_get_tiling)
+#define DRM_IOCTL_TEGRA_GEM_SET_FLAGS DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_SET_FLAGS, struct drm_tegra_gem_set_flags)
+#define DRM_IOCTL_TEGRA_GEM_GET_FLAGS DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_GET_FLAGS, struct drm_tegra_gem_get_flags)
+#define DRM_TEGRA_CHANNEL_CAP_CACHE_COHERENT (1 << 0)
+struct drm_tegra_channel_open {
+  __u32 host1x_class;
+  __u32 flags;
+  __u32 context;
+  __u32 version;
+  __u32 capabilities;
+  __u32 padding;
+};
+struct drm_tegra_channel_close {
+  __u32 context;
+  __u32 padding;
+};
+#define DRM_TEGRA_CHANNEL_MAP_READ (1 << 0)
+#define DRM_TEGRA_CHANNEL_MAP_WRITE (1 << 1)
+#define DRM_TEGRA_CHANNEL_MAP_READ_WRITE (DRM_TEGRA_CHANNEL_MAP_READ | DRM_TEGRA_CHANNEL_MAP_WRITE)
+struct drm_tegra_channel_map {
+  __u32 context;
+  __u32 handle;
+  __u32 flags;
+  __u32 mapping;
+};
+struct drm_tegra_channel_unmap {
+  __u32 context;
+  __u32 mapping;
+};
+#define DRM_TEGRA_SUBMIT_RELOC_SECTOR_LAYOUT (1 << 0)
+struct drm_tegra_submit_buf {
+  __u32 mapping;
+  __u32 flags;
+  struct {
+    __u64 target_offset;
+    __u32 gather_offset_words;
+    __u32 shift;
+  } reloc;
+};
+#define DRM_TEGRA_SUBMIT_CMD_GATHER_UPTR 0
+#define DRM_TEGRA_SUBMIT_CMD_WAIT_SYNCPT 1
+#define DRM_TEGRA_SUBMIT_CMD_WAIT_SYNCPT_RELATIVE 2
+struct drm_tegra_submit_cmd_gather_uptr {
+  __u32 words;
+  __u32 reserved[3];
+};
+struct drm_tegra_submit_cmd_wait_syncpt {
+  __u32 id;
+  __u32 value;
+  __u32 reserved[2];
+};
+struct drm_tegra_submit_cmd {
+  __u32 type;
+  __u32 flags;
+  union {
+    struct drm_tegra_submit_cmd_gather_uptr gather_uptr;
+    struct drm_tegra_submit_cmd_wait_syncpt wait_syncpt;
+    __u32 reserved[4];
+  };
+};
+struct drm_tegra_submit_syncpt {
+  __u32 id;
+  __u32 flags;
+  __u32 increments;
+  __u32 value;
+};
+struct drm_tegra_channel_submit {
+  __u32 context;
+  __u32 num_bufs;
+  __u32 num_cmds;
+  __u32 gather_data_words;
+  __u64 bufs_ptr;
+  __u64 cmds_ptr;
+  __u64 gather_data_ptr;
+  __u32 syncobj_in;
+  __u32 syncobj_out;
+  struct drm_tegra_submit_syncpt syncpt;
+};
+struct drm_tegra_syncpoint_allocate {
+  __u32 id;
+  __u32 padding;
+};
+struct drm_tegra_syncpoint_free {
+  __u32 id;
+  __u32 padding;
+};
+struct drm_tegra_syncpoint_wait {
+  __s64 timeout_ns;
+  __u32 id;
+  __u32 threshold;
+  __u32 value;
+  __u32 padding;
+};
+#define DRM_IOCTL_TEGRA_CHANNEL_OPEN DRM_IOWR(DRM_COMMAND_BASE + 0x10, struct drm_tegra_channel_open)
+#define DRM_IOCTL_TEGRA_CHANNEL_CLOSE DRM_IOWR(DRM_COMMAND_BASE + 0x11, struct drm_tegra_channel_close)
+#define DRM_IOCTL_TEGRA_CHANNEL_MAP DRM_IOWR(DRM_COMMAND_BASE + 0x12, struct drm_tegra_channel_map)
+#define DRM_IOCTL_TEGRA_CHANNEL_UNMAP DRM_IOWR(DRM_COMMAND_BASE + 0x13, struct drm_tegra_channel_unmap)
+#define DRM_IOCTL_TEGRA_CHANNEL_SUBMIT DRM_IOWR(DRM_COMMAND_BASE + 0x14, struct drm_tegra_channel_submit)
+#define DRM_IOCTL_TEGRA_SYNCPOINT_ALLOCATE DRM_IOWR(DRM_COMMAND_BASE + 0x20, struct drm_tegra_syncpoint_allocate)
+#define DRM_IOCTL_TEGRA_SYNCPOINT_FREE DRM_IOWR(DRM_COMMAND_BASE + 0x21, struct drm_tegra_syncpoint_free)
+#define DRM_IOCTL_TEGRA_SYNCPOINT_WAIT DRM_IOWR(DRM_COMMAND_BASE + 0x22, struct drm_tegra_syncpoint_wait)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/v3d_drm.h b/i686-linux-musl/include/drm/v3d_drm.h
new file mode 100644
index 0000000..5887678
--- /dev/null
+++ b/i686-linux-musl/include/drm/v3d_drm.h
@@ -0,0 +1,268 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _V3D_DRM_H_
+#define _V3D_DRM_H_
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_V3D_SUBMIT_CL 0x00
+#define DRM_V3D_WAIT_BO 0x01
+#define DRM_V3D_CREATE_BO 0x02
+#define DRM_V3D_MMAP_BO 0x03
+#define DRM_V3D_GET_PARAM 0x04
+#define DRM_V3D_GET_BO_OFFSET 0x05
+#define DRM_V3D_SUBMIT_TFU 0x06
+#define DRM_V3D_SUBMIT_CSD 0x07
+#define DRM_V3D_PERFMON_CREATE 0x08
+#define DRM_V3D_PERFMON_DESTROY 0x09
+#define DRM_V3D_PERFMON_GET_VALUES 0x0a
+#define DRM_IOCTL_V3D_SUBMIT_CL DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_SUBMIT_CL, struct drm_v3d_submit_cl)
+#define DRM_IOCTL_V3D_WAIT_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_WAIT_BO, struct drm_v3d_wait_bo)
+#define DRM_IOCTL_V3D_CREATE_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_CREATE_BO, struct drm_v3d_create_bo)
+#define DRM_IOCTL_V3D_MMAP_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_MMAP_BO, struct drm_v3d_mmap_bo)
+#define DRM_IOCTL_V3D_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_GET_PARAM, struct drm_v3d_get_param)
+#define DRM_IOCTL_V3D_GET_BO_OFFSET DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_GET_BO_OFFSET, struct drm_v3d_get_bo_offset)
+#define DRM_IOCTL_V3D_SUBMIT_TFU DRM_IOW(DRM_COMMAND_BASE + DRM_V3D_SUBMIT_TFU, struct drm_v3d_submit_tfu)
+#define DRM_IOCTL_V3D_SUBMIT_CSD DRM_IOW(DRM_COMMAND_BASE + DRM_V3D_SUBMIT_CSD, struct drm_v3d_submit_csd)
+#define DRM_IOCTL_V3D_PERFMON_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_PERFMON_CREATE, struct drm_v3d_perfmon_create)
+#define DRM_IOCTL_V3D_PERFMON_DESTROY DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_PERFMON_DESTROY, struct drm_v3d_perfmon_destroy)
+#define DRM_IOCTL_V3D_PERFMON_GET_VALUES DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_PERFMON_GET_VALUES, struct drm_v3d_perfmon_get_values)
+#define DRM_V3D_SUBMIT_CL_FLUSH_CACHE 0x01
+#define DRM_V3D_SUBMIT_EXTENSION 0x02
+struct drm_v3d_extension {
+  __u64 next;
+  __u32 id;
+#define DRM_V3D_EXT_ID_MULTI_SYNC 0x01
+  __u32 flags;
+};
+struct drm_v3d_sem {
+  __u32 handle;
+  __u32 flags;
+  __u64 point;
+  __u64 mbz[2];
+};
+enum v3d_queue {
+  V3D_BIN,
+  V3D_RENDER,
+  V3D_TFU,
+  V3D_CSD,
+  V3D_CACHE_CLEAN,
+};
+struct drm_v3d_multi_sync {
+  struct drm_v3d_extension base;
+  __u64 in_syncs;
+  __u64 out_syncs;
+  __u32 in_sync_count;
+  __u32 out_sync_count;
+  __u32 wait_stage;
+  __u32 pad;
+};
+struct drm_v3d_submit_cl {
+  __u32 bcl_start;
+  __u32 bcl_end;
+  __u32 rcl_start;
+  __u32 rcl_end;
+  __u32 in_sync_bcl;
+  __u32 in_sync_rcl;
+  __u32 out_sync;
+  __u32 qma;
+  __u32 qms;
+  __u32 qts;
+  __u64 bo_handles;
+  __u32 bo_handle_count;
+  __u32 flags;
+  __u32 perfmon_id;
+  __u32 pad;
+  __u64 extensions;
+};
+struct drm_v3d_wait_bo {
+  __u32 handle;
+  __u32 pad;
+  __u64 timeout_ns;
+};
+struct drm_v3d_create_bo {
+  __u32 size;
+  __u32 flags;
+  __u32 handle;
+  __u32 offset;
+};
+struct drm_v3d_mmap_bo {
+  __u32 handle;
+  __u32 flags;
+  __u64 offset;
+};
+enum drm_v3d_param {
+  DRM_V3D_PARAM_V3D_UIFCFG,
+  DRM_V3D_PARAM_V3D_HUB_IDENT1,
+  DRM_V3D_PARAM_V3D_HUB_IDENT2,
+  DRM_V3D_PARAM_V3D_HUB_IDENT3,
+  DRM_V3D_PARAM_V3D_CORE0_IDENT0,
+  DRM_V3D_PARAM_V3D_CORE0_IDENT1,
+  DRM_V3D_PARAM_V3D_CORE0_IDENT2,
+  DRM_V3D_PARAM_SUPPORTS_TFU,
+  DRM_V3D_PARAM_SUPPORTS_CSD,
+  DRM_V3D_PARAM_SUPPORTS_CACHE_FLUSH,
+  DRM_V3D_PARAM_SUPPORTS_PERFMON,
+  DRM_V3D_PARAM_SUPPORTS_MULTISYNC_EXT,
+};
+struct drm_v3d_get_param {
+  __u32 param;
+  __u32 pad;
+  __u64 value;
+};
+struct drm_v3d_get_bo_offset {
+  __u32 handle;
+  __u32 offset;
+};
+struct drm_v3d_submit_tfu {
+  __u32 icfg;
+  __u32 iia;
+  __u32 iis;
+  __u32 ica;
+  __u32 iua;
+  __u32 ioa;
+  __u32 ios;
+  __u32 coef[4];
+  __u32 bo_handles[4];
+  __u32 in_sync;
+  __u32 out_sync;
+  __u32 flags;
+  __u64 extensions;
+};
+struct drm_v3d_submit_csd {
+  __u32 cfg[7];
+  __u32 coef[4];
+  __u64 bo_handles;
+  __u32 bo_handle_count;
+  __u32 in_sync;
+  __u32 out_sync;
+  __u32 perfmon_id;
+  __u64 extensions;
+  __u32 flags;
+  __u32 pad;
+};
+enum {
+  V3D_PERFCNT_FEP_VALID_PRIMTS_NO_PIXELS,
+  V3D_PERFCNT_FEP_VALID_PRIMS,
+  V3D_PERFCNT_FEP_EZ_NFCLIP_QUADS,
+  V3D_PERFCNT_FEP_VALID_QUADS,
+  V3D_PERFCNT_TLB_QUADS_STENCIL_FAIL,
+  V3D_PERFCNT_TLB_QUADS_STENCILZ_FAIL,
+  V3D_PERFCNT_TLB_QUADS_STENCILZ_PASS,
+  V3D_PERFCNT_TLB_QUADS_ZERO_COV,
+  V3D_PERFCNT_TLB_QUADS_NONZERO_COV,
+  V3D_PERFCNT_TLB_QUADS_WRITTEN,
+  V3D_PERFCNT_PTB_PRIM_VIEWPOINT_DISCARD,
+  V3D_PERFCNT_PTB_PRIM_CLIP,
+  V3D_PERFCNT_PTB_PRIM_REV,
+  V3D_PERFCNT_QPU_IDLE_CYCLES,
+  V3D_PERFCNT_QPU_ACTIVE_CYCLES_VERTEX_COORD_USER,
+  V3D_PERFCNT_QPU_ACTIVE_CYCLES_FRAG,
+  V3D_PERFCNT_QPU_CYCLES_VALID_INSTR,
+  V3D_PERFCNT_QPU_CYCLES_TMU_STALL,
+  V3D_PERFCNT_QPU_CYCLES_SCOREBOARD_STALL,
+  V3D_PERFCNT_QPU_CYCLES_VARYINGS_STALL,
+  V3D_PERFCNT_QPU_IC_HIT,
+  V3D_PERFCNT_QPU_IC_MISS,
+  V3D_PERFCNT_QPU_UC_HIT,
+  V3D_PERFCNT_QPU_UC_MISS,
+  V3D_PERFCNT_TMU_TCACHE_ACCESS,
+  V3D_PERFCNT_TMU_TCACHE_MISS,
+  V3D_PERFCNT_VPM_VDW_STALL,
+  V3D_PERFCNT_VPM_VCD_STALL,
+  V3D_PERFCNT_BIN_ACTIVE,
+  V3D_PERFCNT_RDR_ACTIVE,
+  V3D_PERFCNT_L2T_HITS,
+  V3D_PERFCNT_L2T_MISSES,
+  V3D_PERFCNT_CYCLE_COUNT,
+  V3D_PERFCNT_QPU_CYCLES_STALLED_VERTEX_COORD_USER,
+  V3D_PERFCNT_QPU_CYCLES_STALLED_FRAGMENT,
+  V3D_PERFCNT_PTB_PRIMS_BINNED,
+  V3D_PERFCNT_AXI_WRITES_WATCH_0,
+  V3D_PERFCNT_AXI_READS_WATCH_0,
+  V3D_PERFCNT_AXI_WRITE_STALLS_WATCH_0,
+  V3D_PERFCNT_AXI_READ_STALLS_WATCH_0,
+  V3D_PERFCNT_AXI_WRITE_BYTES_WATCH_0,
+  V3D_PERFCNT_AXI_READ_BYTES_WATCH_0,
+  V3D_PERFCNT_AXI_WRITES_WATCH_1,
+  V3D_PERFCNT_AXI_READS_WATCH_1,
+  V3D_PERFCNT_AXI_WRITE_STALLS_WATCH_1,
+  V3D_PERFCNT_AXI_READ_STALLS_WATCH_1,
+  V3D_PERFCNT_AXI_WRITE_BYTES_WATCH_1,
+  V3D_PERFCNT_AXI_READ_BYTES_WATCH_1,
+  V3D_PERFCNT_TLB_PARTIAL_QUADS,
+  V3D_PERFCNT_TMU_CONFIG_ACCESSES,
+  V3D_PERFCNT_L2T_NO_ID_STALL,
+  V3D_PERFCNT_L2T_COM_QUE_STALL,
+  V3D_PERFCNT_L2T_TMU_WRITES,
+  V3D_PERFCNT_TMU_ACTIVE_CYCLES,
+  V3D_PERFCNT_TMU_STALLED_CYCLES,
+  V3D_PERFCNT_CLE_ACTIVE,
+  V3D_PERFCNT_L2T_TMU_READS,
+  V3D_PERFCNT_L2T_CLE_READS,
+  V3D_PERFCNT_L2T_VCD_READS,
+  V3D_PERFCNT_L2T_TMUCFG_READS,
+  V3D_PERFCNT_L2T_SLC0_READS,
+  V3D_PERFCNT_L2T_SLC1_READS,
+  V3D_PERFCNT_L2T_SLC2_READS,
+  V3D_PERFCNT_L2T_TMU_W_MISSES,
+  V3D_PERFCNT_L2T_TMU_R_MISSES,
+  V3D_PERFCNT_L2T_CLE_MISSES,
+  V3D_PERFCNT_L2T_VCD_MISSES,
+  V3D_PERFCNT_L2T_TMUCFG_MISSES,
+  V3D_PERFCNT_L2T_SLC0_MISSES,
+  V3D_PERFCNT_L2T_SLC1_MISSES,
+  V3D_PERFCNT_L2T_SLC2_MISSES,
+  V3D_PERFCNT_CORE_MEM_WRITES,
+  V3D_PERFCNT_L2T_MEM_WRITES,
+  V3D_PERFCNT_PTB_MEM_WRITES,
+  V3D_PERFCNT_TLB_MEM_WRITES,
+  V3D_PERFCNT_CORE_MEM_READS,
+  V3D_PERFCNT_L2T_MEM_READS,
+  V3D_PERFCNT_PTB_MEM_READS,
+  V3D_PERFCNT_PSE_MEM_READS,
+  V3D_PERFCNT_TLB_MEM_READS,
+  V3D_PERFCNT_GMP_MEM_READS,
+  V3D_PERFCNT_PTB_W_MEM_WORDS,
+  V3D_PERFCNT_TLB_W_MEM_WORDS,
+  V3D_PERFCNT_PSE_R_MEM_WORDS,
+  V3D_PERFCNT_TLB_R_MEM_WORDS,
+  V3D_PERFCNT_TMU_MRU_HITS,
+  V3D_PERFCNT_COMPUTE_ACTIVE,
+  V3D_PERFCNT_NUM,
+};
+#define DRM_V3D_MAX_PERF_COUNTERS 32
+struct drm_v3d_perfmon_create {
+  __u32 id;
+  __u32 ncounters;
+  __u8 counters[DRM_V3D_MAX_PERF_COUNTERS];
+};
+struct drm_v3d_perfmon_destroy {
+  __u32 id;
+};
+struct drm_v3d_perfmon_get_values {
+  __u32 id;
+  __u32 pad;
+  __u64 values_ptr;
+};
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/vc4_drm.h b/i686-linux-musl/include/drm/vc4_drm.h
new file mode 100644
index 0000000..fde443f
--- /dev/null
+++ b/i686-linux-musl/include/drm/vc4_drm.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_VC4_DRM_H_
+#define _UAPI_VC4_DRM_H_
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_VC4_SUBMIT_CL 0x00
+#define DRM_VC4_WAIT_SEQNO 0x01
+#define DRM_VC4_WAIT_BO 0x02
+#define DRM_VC4_CREATE_BO 0x03
+#define DRM_VC4_MMAP_BO 0x04
+#define DRM_VC4_CREATE_SHADER_BO 0x05
+#define DRM_VC4_GET_HANG_STATE 0x06
+#define DRM_VC4_GET_PARAM 0x07
+#define DRM_VC4_SET_TILING 0x08
+#define DRM_VC4_GET_TILING 0x09
+#define DRM_VC4_LABEL_BO 0x0a
+#define DRM_VC4_GEM_MADVISE 0x0b
+#define DRM_VC4_PERFMON_CREATE 0x0c
+#define DRM_VC4_PERFMON_DESTROY 0x0d
+#define DRM_VC4_PERFMON_GET_VALUES 0x0e
+#define DRM_IOCTL_VC4_SUBMIT_CL DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_SUBMIT_CL, struct drm_vc4_submit_cl)
+#define DRM_IOCTL_VC4_WAIT_SEQNO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_WAIT_SEQNO, struct drm_vc4_wait_seqno)
+#define DRM_IOCTL_VC4_WAIT_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_WAIT_BO, struct drm_vc4_wait_bo)
+#define DRM_IOCTL_VC4_CREATE_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_CREATE_BO, struct drm_vc4_create_bo)
+#define DRM_IOCTL_VC4_MMAP_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_MMAP_BO, struct drm_vc4_mmap_bo)
+#define DRM_IOCTL_VC4_CREATE_SHADER_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_CREATE_SHADER_BO, struct drm_vc4_create_shader_bo)
+#define DRM_IOCTL_VC4_GET_HANG_STATE DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GET_HANG_STATE, struct drm_vc4_get_hang_state)
+#define DRM_IOCTL_VC4_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GET_PARAM, struct drm_vc4_get_param)
+#define DRM_IOCTL_VC4_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_SET_TILING, struct drm_vc4_set_tiling)
+#define DRM_IOCTL_VC4_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GET_TILING, struct drm_vc4_get_tiling)
+#define DRM_IOCTL_VC4_LABEL_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_LABEL_BO, struct drm_vc4_label_bo)
+#define DRM_IOCTL_VC4_GEM_MADVISE DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GEM_MADVISE, struct drm_vc4_gem_madvise)
+#define DRM_IOCTL_VC4_PERFMON_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_PERFMON_CREATE, struct drm_vc4_perfmon_create)
+#define DRM_IOCTL_VC4_PERFMON_DESTROY DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_PERFMON_DESTROY, struct drm_vc4_perfmon_destroy)
+#define DRM_IOCTL_VC4_PERFMON_GET_VALUES DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_PERFMON_GET_VALUES, struct drm_vc4_perfmon_get_values)
+struct drm_vc4_submit_rcl_surface {
+  __u32 hindex;
+  __u32 offset;
+  __u16 bits;
+#define VC4_SUBMIT_RCL_SURFACE_READ_IS_FULL_RES (1 << 0)
+  __u16 flags;
+};
+struct drm_vc4_submit_cl {
+  __u64 bin_cl;
+  __u64 shader_rec;
+  __u64 uniforms;
+  __u64 bo_handles;
+  __u32 bin_cl_size;
+  __u32 shader_rec_size;
+  __u32 shader_rec_count;
+  __u32 uniforms_size;
+  __u32 bo_handle_count;
+  __u16 width;
+  __u16 height;
+  __u8 min_x_tile;
+  __u8 min_y_tile;
+  __u8 max_x_tile;
+  __u8 max_y_tile;
+  struct drm_vc4_submit_rcl_surface color_read;
+  struct drm_vc4_submit_rcl_surface color_write;
+  struct drm_vc4_submit_rcl_surface zs_read;
+  struct drm_vc4_submit_rcl_surface zs_write;
+  struct drm_vc4_submit_rcl_surface msaa_color_write;
+  struct drm_vc4_submit_rcl_surface msaa_zs_write;
+  __u32 clear_color[2];
+  __u32 clear_z;
+  __u8 clear_s;
+  __u32 pad : 24;
+#define VC4_SUBMIT_CL_USE_CLEAR_COLOR (1 << 0)
+#define VC4_SUBMIT_CL_FIXED_RCL_ORDER (1 << 1)
+#define VC4_SUBMIT_CL_RCL_ORDER_INCREASING_X (1 << 2)
+#define VC4_SUBMIT_CL_RCL_ORDER_INCREASING_Y (1 << 3)
+  __u32 flags;
+  __u64 seqno;
+  __u32 perfmonid;
+  __u32 in_sync;
+  __u32 out_sync;
+  __u32 pad2;
+};
+struct drm_vc4_wait_seqno {
+  __u64 seqno;
+  __u64 timeout_ns;
+};
+struct drm_vc4_wait_bo {
+  __u32 handle;
+  __u32 pad;
+  __u64 timeout_ns;
+};
+struct drm_vc4_create_bo {
+  __u32 size;
+  __u32 flags;
+  __u32 handle;
+  __u32 pad;
+};
+struct drm_vc4_mmap_bo {
+  __u32 handle;
+  __u32 flags;
+  __u64 offset;
+};
+struct drm_vc4_create_shader_bo {
+  __u32 size;
+  __u32 flags;
+  __u64 data;
+  __u32 handle;
+  __u32 pad;
+};
+struct drm_vc4_get_hang_state_bo {
+  __u32 handle;
+  __u32 paddr;
+  __u32 size;
+  __u32 pad;
+};
+struct drm_vc4_get_hang_state {
+  __u64 bo;
+  __u32 bo_count;
+  __u32 start_bin, start_render;
+  __u32 ct0ca, ct0ea;
+  __u32 ct1ca, ct1ea;
+  __u32 ct0cs, ct1cs;
+  __u32 ct0ra0, ct1ra0;
+  __u32 bpca, bpcs;
+  __u32 bpoa, bpos;
+  __u32 vpmbase;
+  __u32 dbge;
+  __u32 fdbgo;
+  __u32 fdbgb;
+  __u32 fdbgr;
+  __u32 fdbgs;
+  __u32 errstat;
+  __u32 pad[16];
+};
+#define DRM_VC4_PARAM_V3D_IDENT0 0
+#define DRM_VC4_PARAM_V3D_IDENT1 1
+#define DRM_VC4_PARAM_V3D_IDENT2 2
+#define DRM_VC4_PARAM_SUPPORTS_BRANCHES 3
+#define DRM_VC4_PARAM_SUPPORTS_ETC1 4
+#define DRM_VC4_PARAM_SUPPORTS_THREADED_FS 5
+#define DRM_VC4_PARAM_SUPPORTS_FIXED_RCL_ORDER 6
+#define DRM_VC4_PARAM_SUPPORTS_MADVISE 7
+#define DRM_VC4_PARAM_SUPPORTS_PERFMON 8
+struct drm_vc4_get_param {
+  __u32 param;
+  __u32 pad;
+  __u64 value;
+};
+struct drm_vc4_get_tiling {
+  __u32 handle;
+  __u32 flags;
+  __u64 modifier;
+};
+struct drm_vc4_set_tiling {
+  __u32 handle;
+  __u32 flags;
+  __u64 modifier;
+};
+struct drm_vc4_label_bo {
+  __u32 handle;
+  __u32 len;
+  __u64 name;
+};
+#define VC4_MADV_WILLNEED 0
+#define VC4_MADV_DONTNEED 1
+#define __VC4_MADV_PURGED 2
+#define __VC4_MADV_NOTSUPP 3
+struct drm_vc4_gem_madvise {
+  __u32 handle;
+  __u32 madv;
+  __u32 retained;
+  __u32 pad;
+};
+enum {
+  VC4_PERFCNT_FEP_VALID_PRIMS_NO_RENDER,
+  VC4_PERFCNT_FEP_VALID_PRIMS_RENDER,
+  VC4_PERFCNT_FEP_CLIPPED_QUADS,
+  VC4_PERFCNT_FEP_VALID_QUADS,
+  VC4_PERFCNT_TLB_QUADS_NOT_PASSING_STENCIL,
+  VC4_PERFCNT_TLB_QUADS_NOT_PASSING_Z_AND_STENCIL,
+  VC4_PERFCNT_TLB_QUADS_PASSING_Z_AND_STENCIL,
+  VC4_PERFCNT_TLB_QUADS_ZERO_COVERAGE,
+  VC4_PERFCNT_TLB_QUADS_NON_ZERO_COVERAGE,
+  VC4_PERFCNT_TLB_QUADS_WRITTEN_TO_COLOR_BUF,
+  VC4_PERFCNT_PLB_PRIMS_OUTSIDE_VIEWPORT,
+  VC4_PERFCNT_PLB_PRIMS_NEED_CLIPPING,
+  VC4_PERFCNT_PSE_PRIMS_REVERSED,
+  VC4_PERFCNT_QPU_TOTAL_IDLE_CYCLES,
+  VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_VERTEX_COORD_SHADING,
+  VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_FRAGMENT_SHADING,
+  VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_EXEC_VALID_INST,
+  VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_WAITING_TMUS,
+  VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_WAITING_SCOREBOARD,
+  VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_WAITING_VARYINGS,
+  VC4_PERFCNT_QPU_TOTAL_INST_CACHE_HIT,
+  VC4_PERFCNT_QPU_TOTAL_INST_CACHE_MISS,
+  VC4_PERFCNT_QPU_TOTAL_UNIFORM_CACHE_HIT,
+  VC4_PERFCNT_QPU_TOTAL_UNIFORM_CACHE_MISS,
+  VC4_PERFCNT_TMU_TOTAL_TEXT_QUADS_PROCESSED,
+  VC4_PERFCNT_TMU_TOTAL_TEXT_CACHE_MISS,
+  VC4_PERFCNT_VPM_TOTAL_CLK_CYCLES_VDW_STALLED,
+  VC4_PERFCNT_VPM_TOTAL_CLK_CYCLES_VCD_STALLED,
+  VC4_PERFCNT_L2C_TOTAL_L2_CACHE_HIT,
+  VC4_PERFCNT_L2C_TOTAL_L2_CACHE_MISS,
+  VC4_PERFCNT_NUM_EVENTS,
+};
+#define DRM_VC4_MAX_PERF_COUNTERS 16
+struct drm_vc4_perfmon_create {
+  __u32 id;
+  __u32 ncounters;
+  __u8 events[DRM_VC4_MAX_PERF_COUNTERS];
+};
+struct drm_vc4_perfmon_destroy {
+  __u32 id;
+};
+struct drm_vc4_perfmon_get_values {
+  __u32 id;
+  __u64 values_ptr;
+};
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/vgem_drm.h b/i686-linux-musl/include/drm/vgem_drm.h
new file mode 100644
index 0000000..b33452b
--- /dev/null
+++ b/i686-linux-musl/include/drm/vgem_drm.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_VGEM_DRM_H_
+#define _UAPI_VGEM_DRM_H_
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_VGEM_FENCE_ATTACH 0x1
+#define DRM_VGEM_FENCE_SIGNAL 0x2
+#define DRM_IOCTL_VGEM_FENCE_ATTACH DRM_IOWR(DRM_COMMAND_BASE + DRM_VGEM_FENCE_ATTACH, struct drm_vgem_fence_attach)
+#define DRM_IOCTL_VGEM_FENCE_SIGNAL DRM_IOW(DRM_COMMAND_BASE + DRM_VGEM_FENCE_SIGNAL, struct drm_vgem_fence_signal)
+struct drm_vgem_fence_attach {
+  __u32 handle;
+  __u32 flags;
+#define VGEM_FENCE_WRITE 0x1
+  __u32 out_fence;
+  __u32 pad;
+};
+struct drm_vgem_fence_signal {
+  __u32 fence;
+  __u32 flags;
+};
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/via_drm.h b/i686-linux-musl/include/drm/via_drm.h
new file mode 100644
index 0000000..9ef645a
--- /dev/null
+++ b/i686-linux-musl/include/drm/via_drm.h
@@ -0,0 +1,202 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _VIA_DRM_H_
+#define _VIA_DRM_H_
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef _VIA_DEFINES_
+#define _VIA_DEFINES_
+#define VIA_NR_SAREA_CLIPRECTS 8
+#define VIA_NR_XVMC_PORTS 10
+#define VIA_NR_XVMC_LOCKS 5
+#define VIA_MAX_CACHELINE_SIZE 64
+#define XVMCLOCKPTR(saPriv,lockNo) ((volatile struct drm_hw_lock *) (((((unsigned long) (saPriv)->XvMCLockArea) + (VIA_MAX_CACHELINE_SIZE - 1)) & ~(VIA_MAX_CACHELINE_SIZE - 1)) + VIA_MAX_CACHELINE_SIZE * (lockNo)))
+#define VIA_NR_TEX_REGIONS 64
+#define VIA_LOG_MIN_TEX_REGION_SIZE 16
+#endif
+#define VIA_UPLOAD_TEX0IMAGE 0x1
+#define VIA_UPLOAD_TEX1IMAGE 0x2
+#define VIA_UPLOAD_CTX 0x4
+#define VIA_UPLOAD_BUFFERS 0x8
+#define VIA_UPLOAD_TEX0 0x10
+#define VIA_UPLOAD_TEX1 0x20
+#define VIA_UPLOAD_CLIPRECTS 0x40
+#define VIA_UPLOAD_ALL 0xff
+#define DRM_VIA_ALLOCMEM 0x00
+#define DRM_VIA_FREEMEM 0x01
+#define DRM_VIA_AGP_INIT 0x02
+#define DRM_VIA_FB_INIT 0x03
+#define DRM_VIA_MAP_INIT 0x04
+#define DRM_VIA_DEC_FUTEX 0x05
+#define NOT_USED
+#define DRM_VIA_DMA_INIT 0x07
+#define DRM_VIA_CMDBUFFER 0x08
+#define DRM_VIA_FLUSH 0x09
+#define DRM_VIA_PCICMD 0x0a
+#define DRM_VIA_CMDBUF_SIZE 0x0b
+#define NOT_USED
+#define DRM_VIA_WAIT_IRQ 0x0d
+#define DRM_VIA_DMA_BLIT 0x0e
+#define DRM_VIA_BLIT_SYNC 0x0f
+#define DRM_IOCTL_VIA_ALLOCMEM DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_ALLOCMEM, drm_via_mem_t)
+#define DRM_IOCTL_VIA_FREEMEM DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_FREEMEM, drm_via_mem_t)
+#define DRM_IOCTL_VIA_AGP_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_AGP_INIT, drm_via_agp_t)
+#define DRM_IOCTL_VIA_FB_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_FB_INIT, drm_via_fb_t)
+#define DRM_IOCTL_VIA_MAP_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_MAP_INIT, drm_via_init_t)
+#define DRM_IOCTL_VIA_DEC_FUTEX DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_DEC_FUTEX, drm_via_futex_t)
+#define DRM_IOCTL_VIA_DMA_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_DMA_INIT, drm_via_dma_init_t)
+#define DRM_IOCTL_VIA_CMDBUFFER DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_CMDBUFFER, drm_via_cmdbuffer_t)
+#define DRM_IOCTL_VIA_FLUSH DRM_IO(DRM_COMMAND_BASE + DRM_VIA_FLUSH)
+#define DRM_IOCTL_VIA_PCICMD DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_PCICMD, drm_via_cmdbuffer_t)
+#define DRM_IOCTL_VIA_CMDBUF_SIZE DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_CMDBUF_SIZE, drm_via_cmdbuf_size_t)
+#define DRM_IOCTL_VIA_WAIT_IRQ DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_WAIT_IRQ, drm_via_irqwait_t)
+#define DRM_IOCTL_VIA_DMA_BLIT DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_DMA_BLIT, drm_via_dmablit_t)
+#define DRM_IOCTL_VIA_BLIT_SYNC DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_BLIT_SYNC, drm_via_blitsync_t)
+#define VIA_TEX_SETUP_SIZE 8
+#define VIA_FRONT 0x1
+#define VIA_BACK 0x2
+#define VIA_DEPTH 0x4
+#define VIA_STENCIL 0x8
+#define VIA_MEM_VIDEO 0
+#define VIA_MEM_AGP 1
+#define VIA_MEM_SYSTEM 2
+#define VIA_MEM_MIXED 3
+#define VIA_MEM_UNKNOWN 4
+typedef struct {
+  __u32 offset;
+  __u32 size;
+} drm_via_agp_t;
+typedef struct {
+  __u32 offset;
+  __u32 size;
+} drm_via_fb_t;
+typedef struct {
+  __u32 context;
+  __u32 type;
+  __u32 size;
+  unsigned long index;
+  unsigned long offset;
+} drm_via_mem_t;
+typedef struct _drm_via_init {
+  enum {
+    VIA_INIT_MAP = 0x01,
+    VIA_CLEANUP_MAP = 0x02
+  } func;
+  unsigned long sarea_priv_offset;
+  unsigned long fb_offset;
+  unsigned long mmio_offset;
+  unsigned long agpAddr;
+} drm_via_init_t;
+typedef struct _drm_via_futex {
+  enum {
+    VIA_FUTEX_WAIT = 0x00,
+    VIA_FUTEX_WAKE = 0X01
+  } func;
+  __u32 ms;
+  __u32 lock;
+  __u32 val;
+} drm_via_futex_t;
+typedef struct _drm_via_dma_init {
+  enum {
+    VIA_INIT_DMA = 0x01,
+    VIA_CLEANUP_DMA = 0x02,
+    VIA_DMA_INITIALIZED = 0x03
+  } func;
+  unsigned long offset;
+  unsigned long size;
+  unsigned long reg_pause_addr;
+} drm_via_dma_init_t;
+typedef struct _drm_via_cmdbuffer {
+  char __user * buf;
+  unsigned long size;
+} drm_via_cmdbuffer_t;
+typedef struct _drm_via_tex_region {
+  unsigned char next, prev;
+  unsigned char inUse;
+  int age;
+} drm_via_tex_region_t;
+typedef struct _drm_via_sarea {
+  unsigned int dirty;
+  unsigned int nbox;
+  struct drm_clip_rect boxes[VIA_NR_SAREA_CLIPRECTS];
+  drm_via_tex_region_t texList[VIA_NR_TEX_REGIONS + 1];
+  int texAge;
+  int ctxOwner;
+  int vertexPrim;
+  char XvMCLockArea[VIA_MAX_CACHELINE_SIZE * (VIA_NR_XVMC_LOCKS + 1)];
+  unsigned int XvMCDisplaying[VIA_NR_XVMC_PORTS];
+  unsigned int XvMCSubPicOn[VIA_NR_XVMC_PORTS];
+  unsigned int XvMCCtxNoGrabbed;
+  unsigned int pfCurrentOffset;
+} drm_via_sarea_t;
+typedef struct _drm_via_cmdbuf_size {
+  enum {
+    VIA_CMDBUF_SPACE = 0x01,
+    VIA_CMDBUF_LAG = 0x02
+  } func;
+  int wait;
+  __u32 size;
+} drm_via_cmdbuf_size_t;
+typedef enum {
+  VIA_IRQ_ABSOLUTE = 0x0,
+  VIA_IRQ_RELATIVE = 0x1,
+  VIA_IRQ_SIGNAL = 0x10000000,
+  VIA_IRQ_FORCE_SEQUENCE = 0x20000000
+} via_irq_seq_type_t;
+#define VIA_IRQ_FLAGS_MASK 0xF0000000
+enum drm_via_irqs {
+  drm_via_irq_hqv0 = 0,
+  drm_via_irq_hqv1,
+  drm_via_irq_dma0_dd,
+  drm_via_irq_dma0_td,
+  drm_via_irq_dma1_dd,
+  drm_via_irq_dma1_td,
+  drm_via_irq_num
+};
+struct drm_via_wait_irq_request {
+  unsigned irq;
+  via_irq_seq_type_t type;
+  __u32 sequence;
+  __u32 signal;
+};
+typedef union drm_via_irqwait {
+  struct drm_via_wait_irq_request request;
+  struct drm_wait_vblank_reply reply;
+} drm_via_irqwait_t;
+typedef struct drm_via_blitsync {
+  __u32 sync_handle;
+  unsigned engine;
+} drm_via_blitsync_t;
+typedef struct drm_via_dmablit {
+  __u32 num_lines;
+  __u32 line_length;
+  __u32 fb_addr;
+  __u32 fb_stride;
+  unsigned char * mem_addr;
+  __u32 mem_stride;
+  __u32 flags;
+  int to_fb;
+  drm_via_blitsync_t sync;
+} drm_via_dmablit_t;
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/virtgpu_drm.h b/i686-linux-musl/include/drm/virtgpu_drm.h
new file mode 100644
index 0000000..342282d
--- /dev/null
+++ b/i686-linux-musl/include/drm/virtgpu_drm.h
@@ -0,0 +1,168 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef VIRTGPU_DRM_H
+#define VIRTGPU_DRM_H
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_VIRTGPU_MAP 0x01
+#define DRM_VIRTGPU_EXECBUFFER 0x02
+#define DRM_VIRTGPU_GETPARAM 0x03
+#define DRM_VIRTGPU_RESOURCE_CREATE 0x04
+#define DRM_VIRTGPU_RESOURCE_INFO 0x05
+#define DRM_VIRTGPU_TRANSFER_FROM_HOST 0x06
+#define DRM_VIRTGPU_TRANSFER_TO_HOST 0x07
+#define DRM_VIRTGPU_WAIT 0x08
+#define DRM_VIRTGPU_GET_CAPS 0x09
+#define DRM_VIRTGPU_RESOURCE_CREATE_BLOB 0x0a
+#define DRM_VIRTGPU_CONTEXT_INIT 0x0b
+#define VIRTGPU_EXECBUF_FENCE_FD_IN 0x01
+#define VIRTGPU_EXECBUF_FENCE_FD_OUT 0x02
+#define VIRTGPU_EXECBUF_RING_IDX 0x04
+#define VIRTGPU_EXECBUF_FLAGS (VIRTGPU_EXECBUF_FENCE_FD_IN | VIRTGPU_EXECBUF_FENCE_FD_OUT | VIRTGPU_EXECBUF_RING_IDX | 0)
+struct drm_virtgpu_map {
+  __u64 offset;
+  __u32 handle;
+  __u32 pad;
+};
+struct drm_virtgpu_execbuffer {
+  __u32 flags;
+  __u32 size;
+  __u64 command;
+  __u64 bo_handles;
+  __u32 num_bo_handles;
+  __s32 fence_fd;
+  __u32 ring_idx;
+  __u32 pad;
+};
+#define VIRTGPU_PARAM_3D_FEATURES 1
+#define VIRTGPU_PARAM_CAPSET_QUERY_FIX 2
+#define VIRTGPU_PARAM_RESOURCE_BLOB 3
+#define VIRTGPU_PARAM_HOST_VISIBLE 4
+#define VIRTGPU_PARAM_CROSS_DEVICE 5
+#define VIRTGPU_PARAM_CONTEXT_INIT 6
+#define VIRTGPU_PARAM_SUPPORTED_CAPSET_IDs 7
+struct drm_virtgpu_getparam {
+  __u64 param;
+  __u64 value;
+};
+struct drm_virtgpu_resource_create {
+  __u32 target;
+  __u32 format;
+  __u32 bind;
+  __u32 width;
+  __u32 height;
+  __u32 depth;
+  __u32 array_size;
+  __u32 last_level;
+  __u32 nr_samples;
+  __u32 flags;
+  __u32 bo_handle;
+  __u32 res_handle;
+  __u32 size;
+  __u32 stride;
+};
+struct drm_virtgpu_resource_info {
+  __u32 bo_handle;
+  __u32 res_handle;
+  __u32 size;
+  __u32 blob_mem;
+};
+struct drm_virtgpu_3d_box {
+  __u32 x;
+  __u32 y;
+  __u32 z;
+  __u32 w;
+  __u32 h;
+  __u32 d;
+};
+struct drm_virtgpu_3d_transfer_to_host {
+  __u32 bo_handle;
+  struct drm_virtgpu_3d_box box;
+  __u32 level;
+  __u32 offset;
+  __u32 stride;
+  __u32 layer_stride;
+};
+struct drm_virtgpu_3d_transfer_from_host {
+  __u32 bo_handle;
+  struct drm_virtgpu_3d_box box;
+  __u32 level;
+  __u32 offset;
+  __u32 stride;
+  __u32 layer_stride;
+};
+#define VIRTGPU_WAIT_NOWAIT 1
+struct drm_virtgpu_3d_wait {
+  __u32 handle;
+  __u32 flags;
+};
+struct drm_virtgpu_get_caps {
+  __u32 cap_set_id;
+  __u32 cap_set_ver;
+  __u64 addr;
+  __u32 size;
+  __u32 pad;
+};
+struct drm_virtgpu_resource_create_blob {
+#define VIRTGPU_BLOB_MEM_GUEST 0x0001
+#define VIRTGPU_BLOB_MEM_HOST3D 0x0002
+#define VIRTGPU_BLOB_MEM_HOST3D_GUEST 0x0003
+#define VIRTGPU_BLOB_FLAG_USE_MAPPABLE 0x0001
+#define VIRTGPU_BLOB_FLAG_USE_SHAREABLE 0x0002
+#define VIRTGPU_BLOB_FLAG_USE_CROSS_DEVICE 0x0004
+  __u32 blob_mem;
+  __u32 blob_flags;
+  __u32 bo_handle;
+  __u32 res_handle;
+  __u64 size;
+  __u32 pad;
+  __u32 cmd_size;
+  __u64 cmd;
+  __u64 blob_id;
+};
+#define VIRTGPU_CONTEXT_PARAM_CAPSET_ID 0x0001
+#define VIRTGPU_CONTEXT_PARAM_NUM_RINGS 0x0002
+#define VIRTGPU_CONTEXT_PARAM_POLL_RINGS_MASK 0x0003
+struct drm_virtgpu_context_set_param {
+  __u64 param;
+  __u64 value;
+};
+struct drm_virtgpu_context_init {
+  __u32 num_params;
+  __u32 pad;
+  __u64 ctx_set_params;
+};
+#define VIRTGPU_EVENT_FENCE_SIGNALED 0x90000000
+#define DRM_IOCTL_VIRTGPU_MAP DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_MAP, struct drm_virtgpu_map)
+#define DRM_IOCTL_VIRTGPU_EXECBUFFER DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_EXECBUFFER, struct drm_virtgpu_execbuffer)
+#define DRM_IOCTL_VIRTGPU_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_GETPARAM, struct drm_virtgpu_getparam)
+#define DRM_IOCTL_VIRTGPU_RESOURCE_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_RESOURCE_CREATE, struct drm_virtgpu_resource_create)
+#define DRM_IOCTL_VIRTGPU_RESOURCE_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_RESOURCE_INFO, struct drm_virtgpu_resource_info)
+#define DRM_IOCTL_VIRTGPU_TRANSFER_FROM_HOST DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_TRANSFER_FROM_HOST, struct drm_virtgpu_3d_transfer_from_host)
+#define DRM_IOCTL_VIRTGPU_TRANSFER_TO_HOST DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_TRANSFER_TO_HOST, struct drm_virtgpu_3d_transfer_to_host)
+#define DRM_IOCTL_VIRTGPU_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_WAIT, struct drm_virtgpu_3d_wait)
+#define DRM_IOCTL_VIRTGPU_GET_CAPS DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_GET_CAPS, struct drm_virtgpu_get_caps)
+#define DRM_IOCTL_VIRTGPU_RESOURCE_CREATE_BLOB DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_RESOURCE_CREATE_BLOB, struct drm_virtgpu_resource_create_blob)
+#define DRM_IOCTL_VIRTGPU_CONTEXT_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_CONTEXT_INIT, struct drm_virtgpu_context_init)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/drm/vmwgfx_drm.h b/i686-linux-musl/include/drm/vmwgfx_drm.h
new file mode 100644
index 0000000..f3a67e1
--- /dev/null
+++ b/i686-linux-musl/include/drm/vmwgfx_drm.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 __VMWGFX_DRM_H__
+#define __VMWGFX_DRM_H__
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_VMW_MAX_SURFACE_FACES 6
+#define DRM_VMW_MAX_MIP_LEVELS 24
+#define DRM_VMW_GET_PARAM 0
+#define DRM_VMW_ALLOC_DMABUF 1
+#define DRM_VMW_ALLOC_BO 1
+#define DRM_VMW_UNREF_DMABUF 2
+#define DRM_VMW_HANDLE_CLOSE 2
+#define DRM_VMW_CURSOR_BYPASS 3
+#define DRM_VMW_CONTROL_STREAM 4
+#define DRM_VMW_CLAIM_STREAM 5
+#define DRM_VMW_UNREF_STREAM 6
+#define DRM_VMW_CREATE_CONTEXT 7
+#define DRM_VMW_UNREF_CONTEXT 8
+#define DRM_VMW_CREATE_SURFACE 9
+#define DRM_VMW_UNREF_SURFACE 10
+#define DRM_VMW_REF_SURFACE 11
+#define DRM_VMW_EXECBUF 12
+#define DRM_VMW_GET_3D_CAP 13
+#define DRM_VMW_FENCE_WAIT 14
+#define DRM_VMW_FENCE_SIGNALED 15
+#define DRM_VMW_FENCE_UNREF 16
+#define DRM_VMW_FENCE_EVENT 17
+#define DRM_VMW_PRESENT 18
+#define DRM_VMW_PRESENT_READBACK 19
+#define DRM_VMW_UPDATE_LAYOUT 20
+#define DRM_VMW_CREATE_SHADER 21
+#define DRM_VMW_UNREF_SHADER 22
+#define DRM_VMW_GB_SURFACE_CREATE 23
+#define DRM_VMW_GB_SURFACE_REF 24
+#define DRM_VMW_SYNCCPU 25
+#define DRM_VMW_CREATE_EXTENDED_CONTEXT 26
+#define DRM_VMW_GB_SURFACE_CREATE_EXT 27
+#define DRM_VMW_GB_SURFACE_REF_EXT 28
+#define DRM_VMW_MSG 29
+#define DRM_VMW_MKSSTAT_RESET 30
+#define DRM_VMW_MKSSTAT_ADD 31
+#define DRM_VMW_MKSSTAT_REMOVE 32
+#define DRM_VMW_PARAM_NUM_STREAMS 0
+#define DRM_VMW_PARAM_NUM_FREE_STREAMS 1
+#define DRM_VMW_PARAM_3D 2
+#define DRM_VMW_PARAM_HW_CAPS 3
+#define DRM_VMW_PARAM_FIFO_CAPS 4
+#define DRM_VMW_PARAM_MAX_FB_SIZE 5
+#define DRM_VMW_PARAM_FIFO_HW_VERSION 6
+#define DRM_VMW_PARAM_MAX_SURF_MEMORY 7
+#define DRM_VMW_PARAM_3D_CAPS_SIZE 8
+#define DRM_VMW_PARAM_MAX_MOB_MEMORY 9
+#define DRM_VMW_PARAM_MAX_MOB_SIZE 10
+#define DRM_VMW_PARAM_SCREEN_TARGET 11
+#define DRM_VMW_PARAM_DX 12
+#define DRM_VMW_PARAM_HW_CAPS2 13
+#define DRM_VMW_PARAM_SM4_1 14
+#define DRM_VMW_PARAM_SM5 15
+enum drm_vmw_handle_type {
+  DRM_VMW_HANDLE_LEGACY = 0,
+  DRM_VMW_HANDLE_PRIME = 1
+};
+struct drm_vmw_getparam_arg {
+  __u64 value;
+  __u32 param;
+  __u32 pad64;
+};
+struct drm_vmw_context_arg {
+  __s32 cid;
+  __u32 pad64;
+};
+struct drm_vmw_surface_create_req {
+  __u32 flags;
+  __u32 format;
+  __u32 mip_levels[DRM_VMW_MAX_SURFACE_FACES];
+  __u64 size_addr;
+  __s32 shareable;
+  __s32 scanout;
+};
+struct drm_vmw_surface_arg {
+  __s32 sid;
+  enum drm_vmw_handle_type handle_type;
+};
+struct drm_vmw_size {
+  __u32 width;
+  __u32 height;
+  __u32 depth;
+  __u32 pad64;
+};
+union drm_vmw_surface_create_arg {
+  struct drm_vmw_surface_arg rep;
+  struct drm_vmw_surface_create_req req;
+};
+union drm_vmw_surface_reference_arg {
+  struct drm_vmw_surface_create_req rep;
+  struct drm_vmw_surface_arg req;
+};
+#define DRM_VMW_EXECBUF_VERSION 2
+#define DRM_VMW_EXECBUF_FLAG_IMPORT_FENCE_FD (1 << 0)
+#define DRM_VMW_EXECBUF_FLAG_EXPORT_FENCE_FD (1 << 1)
+struct drm_vmw_execbuf_arg {
+  __u64 commands;
+  __u32 command_size;
+  __u32 throttle_us;
+  __u64 fence_rep;
+  __u32 version;
+  __u32 flags;
+  __u32 context_handle;
+  __s32 imported_fence_fd;
+};
+struct drm_vmw_fence_rep {
+  __u32 handle;
+  __u32 mask;
+  __u32 seqno;
+  __u32 passed_seqno;
+  __s32 fd;
+  __s32 error;
+};
+struct drm_vmw_alloc_bo_req {
+  __u32 size;
+  __u32 pad64;
+};
+#define drm_vmw_alloc_dmabuf_req drm_vmw_alloc_bo_req
+struct drm_vmw_bo_rep {
+  __u64 map_handle;
+  __u32 handle;
+  __u32 cur_gmr_id;
+  __u32 cur_gmr_offset;
+  __u32 pad64;
+};
+#define drm_vmw_dmabuf_rep drm_vmw_bo_rep
+union drm_vmw_alloc_bo_arg {
+  struct drm_vmw_alloc_bo_req req;
+  struct drm_vmw_bo_rep rep;
+};
+#define drm_vmw_alloc_dmabuf_arg drm_vmw_alloc_bo_arg
+struct drm_vmw_rect {
+  __s32 x;
+  __s32 y;
+  __u32 w;
+  __u32 h;
+};
+struct drm_vmw_control_stream_arg {
+  __u32 stream_id;
+  __u32 enabled;
+  __u32 flags;
+  __u32 color_key;
+  __u32 handle;
+  __u32 offset;
+  __s32 format;
+  __u32 size;
+  __u32 width;
+  __u32 height;
+  __u32 pitch[3];
+  __u32 pad64;
+  struct drm_vmw_rect src;
+  struct drm_vmw_rect dst;
+};
+#define DRM_VMW_CURSOR_BYPASS_ALL (1 << 0)
+#define DRM_VMW_CURSOR_BYPASS_FLAGS (1)
+struct drm_vmw_cursor_bypass_arg {
+  __u32 flags;
+  __u32 crtc_id;
+  __s32 xpos;
+  __s32 ypos;
+  __s32 xhot;
+  __s32 yhot;
+};
+struct drm_vmw_stream_arg {
+  __u32 stream_id;
+  __u32 pad64;
+};
+struct drm_vmw_get_3d_cap_arg {
+  __u64 buffer;
+  __u32 max_size;
+  __u32 pad64;
+};
+#define DRM_VMW_FENCE_FLAG_EXEC (1 << 0)
+#define DRM_VMW_FENCE_FLAG_QUERY (1 << 1)
+#define DRM_VMW_WAIT_OPTION_UNREF (1 << 0)
+struct drm_vmw_fence_wait_arg {
+  __u32 handle;
+  __s32 cookie_valid;
+  __u64 kernel_cookie;
+  __u64 timeout_us;
+  __s32 lazy;
+  __s32 flags;
+  __s32 wait_options;
+  __s32 pad64;
+};
+struct drm_vmw_fence_signaled_arg {
+  __u32 handle;
+  __u32 flags;
+  __s32 signaled;
+  __u32 passed_seqno;
+  __u32 signaled_flags;
+  __u32 pad64;
+};
+struct drm_vmw_fence_arg {
+  __u32 handle;
+  __u32 pad64;
+};
+#define DRM_VMW_EVENT_FENCE_SIGNALED 0x80000000
+struct drm_vmw_event_fence {
+  struct drm_event base;
+  __u64 user_data;
+  __u32 tv_sec;
+  __u32 tv_usec;
+};
+#define DRM_VMW_FE_FLAG_REQ_TIME (1 << 0)
+struct drm_vmw_fence_event_arg {
+  __u64 fence_rep;
+  __u64 user_data;
+  __u32 handle;
+  __u32 flags;
+};
+struct drm_vmw_present_arg {
+  __u32 fb_id;
+  __u32 sid;
+  __s32 dest_x;
+  __s32 dest_y;
+  __u64 clips_ptr;
+  __u32 num_clips;
+  __u32 pad64;
+};
+struct drm_vmw_present_readback_arg {
+  __u32 fb_id;
+  __u32 num_clips;
+  __u64 clips_ptr;
+  __u64 fence_rep;
+};
+struct drm_vmw_update_layout_arg {
+  __u32 num_outputs;
+  __u32 pad64;
+  __u64 rects;
+};
+enum drm_vmw_shader_type {
+  drm_vmw_shader_type_vs = 0,
+  drm_vmw_shader_type_ps,
+};
+struct drm_vmw_shader_create_arg {
+  enum drm_vmw_shader_type shader_type;
+  __u32 size;
+  __u32 buffer_handle;
+  __u32 shader_handle;
+  __u64 offset;
+};
+struct drm_vmw_shader_arg {
+  __u32 handle;
+  __u32 pad64;
+};
+enum drm_vmw_surface_flags {
+  drm_vmw_surface_flag_shareable = (1 << 0),
+  drm_vmw_surface_flag_scanout = (1 << 1),
+  drm_vmw_surface_flag_create_buffer = (1 << 2),
+  drm_vmw_surface_flag_coherent = (1 << 3),
+};
+struct drm_vmw_gb_surface_create_req {
+  __u32 svga3d_flags;
+  __u32 format;
+  __u32 mip_levels;
+  enum drm_vmw_surface_flags drm_surface_flags;
+  __u32 multisample_count;
+  __u32 autogen_filter;
+  __u32 buffer_handle;
+  __u32 array_size;
+  struct drm_vmw_size base_size;
+};
+struct drm_vmw_gb_surface_create_rep {
+  __u32 handle;
+  __u32 backup_size;
+  __u32 buffer_handle;
+  __u32 buffer_size;
+  __u64 buffer_map_handle;
+};
+union drm_vmw_gb_surface_create_arg {
+  struct drm_vmw_gb_surface_create_rep rep;
+  struct drm_vmw_gb_surface_create_req req;
+};
+struct drm_vmw_gb_surface_ref_rep {
+  struct drm_vmw_gb_surface_create_req creq;
+  struct drm_vmw_gb_surface_create_rep crep;
+};
+union drm_vmw_gb_surface_reference_arg {
+  struct drm_vmw_gb_surface_ref_rep rep;
+  struct drm_vmw_surface_arg req;
+};
+enum drm_vmw_synccpu_flags {
+  drm_vmw_synccpu_read = (1 << 0),
+  drm_vmw_synccpu_write = (1 << 1),
+  drm_vmw_synccpu_dontblock = (1 << 2),
+  drm_vmw_synccpu_allow_cs = (1 << 3)
+};
+enum drm_vmw_synccpu_op {
+  drm_vmw_synccpu_grab,
+  drm_vmw_synccpu_release
+};
+struct drm_vmw_synccpu_arg {
+  enum drm_vmw_synccpu_op op;
+  enum drm_vmw_synccpu_flags flags;
+  __u32 handle;
+  __u32 pad64;
+};
+enum drm_vmw_extended_context {
+  drm_vmw_context_legacy,
+  drm_vmw_context_dx
+};
+union drm_vmw_extended_context_arg {
+  enum drm_vmw_extended_context req;
+  struct drm_vmw_context_arg rep;
+};
+struct drm_vmw_handle_close_arg {
+  __u32 handle;
+  __u32 pad64;
+};
+#define drm_vmw_unref_dmabuf_arg drm_vmw_handle_close_arg
+enum drm_vmw_surface_version {
+  drm_vmw_gb_surface_v1,
+};
+struct drm_vmw_gb_surface_create_ext_req {
+  struct drm_vmw_gb_surface_create_req base;
+  enum drm_vmw_surface_version version;
+  __u32 svga3d_flags_upper_32_bits;
+  __u32 multisample_pattern;
+  __u32 quality_level;
+  __u32 buffer_byte_stride;
+  __u32 must_be_zero;
+};
+union drm_vmw_gb_surface_create_ext_arg {
+  struct drm_vmw_gb_surface_create_rep rep;
+  struct drm_vmw_gb_surface_create_ext_req req;
+};
+struct drm_vmw_gb_surface_ref_ext_rep {
+  struct drm_vmw_gb_surface_create_ext_req creq;
+  struct drm_vmw_gb_surface_create_rep crep;
+};
+union drm_vmw_gb_surface_reference_ext_arg {
+  struct drm_vmw_gb_surface_ref_ext_rep rep;
+  struct drm_vmw_surface_arg req;
+};
+struct drm_vmw_msg_arg {
+  __u64 send;
+  __u64 receive;
+  __s32 send_only;
+  __u32 receive_len;
+};
+struct drm_vmw_mksstat_add_arg {
+  __u64 stat;
+  __u64 info;
+  __u64 strs;
+  __u64 stat_len;
+  __u64 info_len;
+  __u64 strs_len;
+  __u64 description;
+  __u64 id;
+};
+struct drm_vmw_mksstat_remove_arg {
+  __u64 id;
+};
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/elf.h b/i686-linux-musl/include/elf.h
new file mode 100644
index 0000000..5170f3e
--- /dev/null
+++ b/i686-linux-musl/include/elf.h
@@ -0,0 +1,3295 @@
+#ifndef _ELF_H
+#define _ELF_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+
+typedef uint16_t Elf32_Half;
+typedef uint16_t Elf64_Half;
+
+typedef uint32_t Elf32_Word;
+typedef	int32_t  Elf32_Sword;
+typedef uint32_t Elf64_Word;
+typedef	int32_t  Elf64_Sword;
+
+typedef uint64_t Elf32_Xword;
+typedef	int64_t  Elf32_Sxword;
+typedef uint64_t Elf64_Xword;
+typedef	int64_t  Elf64_Sxword;
+
+typedef uint32_t Elf32_Addr;
+typedef uint64_t Elf64_Addr;
+
+typedef uint32_t Elf32_Off;
+typedef uint64_t Elf64_Off;
+
+typedef uint16_t Elf32_Section;
+typedef uint16_t Elf64_Section;
+
+typedef Elf32_Half Elf32_Versym;
+typedef Elf64_Half Elf64_Versym;
+
+#define EI_NIDENT (16)
+
+typedef struct {
+  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 {
+  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 EI_MAG0		0
+#define ELFMAG0		0x7f
+
+#define EI_MAG1		1
+#define ELFMAG1		'E'
+
+#define EI_MAG2		2
+#define ELFMAG2		'L'
+
+#define EI_MAG3		3
+#define ELFMAG3		'F'
+
+
+#define	ELFMAG		"\177ELF"
+#define	SELFMAG		4
+
+#define EI_CLASS	4
+#define ELFCLASSNONE	0
+#define ELFCLASS32	1
+#define ELFCLASS64	2
+#define ELFCLASSNUM	3
+
+#define EI_DATA		5
+#define ELFDATANONE	0
+#define ELFDATA2LSB	1
+#define ELFDATA2MSB	2
+#define ELFDATANUM	3
+
+#define EI_VERSION	6
+
+
+#define EI_OSABI	7
+#define ELFOSABI_NONE		0
+#define ELFOSABI_SYSV		0
+#define ELFOSABI_HPUX		1
+#define ELFOSABI_NETBSD		2
+#define ELFOSABI_LINUX		3
+#define ELFOSABI_GNU		3
+#define ELFOSABI_SOLARIS	6
+#define ELFOSABI_AIX		7
+#define ELFOSABI_IRIX		8
+#define ELFOSABI_FREEBSD	9
+#define ELFOSABI_TRU64		10
+#define ELFOSABI_MODESTO	11
+#define ELFOSABI_OPENBSD	12
+#define ELFOSABI_ARM		97
+#define ELFOSABI_STANDALONE	255
+
+#define EI_ABIVERSION	8
+
+#define EI_PAD		9
+
+
+
+#define ET_NONE		0
+#define ET_REL		1
+#define ET_EXEC		2
+#define ET_DYN		3
+#define ET_CORE		4
+#define	ET_NUM		5
+#define ET_LOOS		0xfe00
+#define ET_HIOS		0xfeff
+#define ET_LOPROC	0xff00
+#define ET_HIPROC	0xffff
+
+
+
+#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_860		 7
+#define EM_MIPS		 8
+#define EM_S370		 9
+#define EM_MIPS_RS3_LE	10
+
+#define EM_PARISC	15
+#define EM_VPP500	17
+#define EM_SPARC32PLUS	18
+#define EM_960		19
+#define EM_PPC		20
+#define EM_PPC64	21
+#define EM_S390		22
+
+#define EM_V800		36
+#define EM_FR20		37
+#define EM_RH32		38
+#define EM_RCE		39
+#define EM_ARM		40
+#define EM_FAKE_ALPHA	41
+#define EM_SH		42
+#define EM_SPARCV9	43
+#define EM_TRICORE	44
+#define EM_ARC		45
+#define EM_H8_300	46
+#define EM_H8_300H	47
+#define EM_H8S		48
+#define EM_H8_500	49
+#define EM_IA_64	50
+#define EM_MIPS_X	51
+#define EM_COLDFIRE	52
+#define EM_68HC12	53
+#define EM_MMA		54
+#define EM_PCP		55
+#define EM_NCPU		56
+#define EM_NDR1		57
+#define EM_STARCORE	58
+#define EM_ME16		59
+#define EM_ST100	60
+#define EM_TINYJ	61
+#define EM_X86_64	62
+#define EM_PDSP		63
+
+#define EM_FX66		66
+#define EM_ST9PLUS	67
+#define EM_ST7		68
+#define EM_68HC16	69
+#define EM_68HC11	70
+#define EM_68HC08	71
+#define EM_68HC05	72
+#define EM_SVX		73
+#define EM_ST19		74
+#define EM_VAX		75
+#define EM_CRIS		76
+#define EM_JAVELIN	77
+#define EM_FIREPATH	78
+#define EM_ZSP		79
+#define EM_MMIX		80
+#define EM_HUANY	81
+#define EM_PRISM	82
+#define EM_AVR		83
+#define EM_FR30		84
+#define EM_D10V		85
+#define EM_D30V		86
+#define EM_V850		87
+#define EM_M32R		88
+#define EM_MN10300	89
+#define EM_MN10200	90
+#define EM_PJ		91
+#define EM_OR1K		92
+#define EM_OPENRISC	92
+#define EM_ARC_A5	93
+#define EM_ARC_COMPACT	93
+#define EM_XTENSA	94
+#define EM_VIDEOCORE	95
+#define EM_TMM_GPP	96
+#define EM_NS32K	97
+#define EM_TPC		98
+#define EM_SNP1K	99
+#define EM_ST200	100
+#define EM_IP2K		101
+#define EM_MAX		102
+#define EM_CR		103
+#define EM_F2MC16	104
+#define EM_MSP430	105
+#define EM_BLACKFIN	106
+#define EM_SE_C33	107
+#define EM_SEP		108
+#define EM_ARCA		109
+#define EM_UNICORE	110
+#define EM_EXCESS	111
+#define EM_DXP		112
+#define EM_ALTERA_NIOS2 113
+#define EM_CRX		114
+#define EM_XGATE	115
+#define EM_C166		116
+#define EM_M16C		117
+#define EM_DSPIC30F	118
+#define EM_CE		119
+#define EM_M32C		120
+#define EM_TSK3000	131
+#define EM_RS08		132
+#define EM_SHARC	133
+#define EM_ECOG2	134
+#define EM_SCORE7	135
+#define EM_DSP24	136
+#define EM_VIDEOCORE3	137
+#define EM_LATTICEMICO32 138
+#define EM_SE_C17	139
+#define EM_TI_C6000	140
+#define EM_TI_C2000	141
+#define EM_TI_C5500	142
+#define EM_TI_ARP32	143
+#define EM_TI_PRU	144
+#define EM_MMDSP_PLUS	160
+#define EM_CYPRESS_M8C	161
+#define EM_R32C		162
+#define EM_TRIMEDIA	163
+#define EM_QDSP6	164
+#define EM_8051		165
+#define EM_STXP7X	166
+#define EM_NDS32	167
+#define EM_ECOG1X	168
+#define EM_MAXQ30	169
+#define EM_XIMO16	170
+#define EM_MANIK	171
+#define EM_CRAYNV2	172
+#define EM_RX		173
+#define EM_METAG	174
+#define EM_MCST_ELBRUS	175
+#define EM_ECOG16	176
+#define EM_CR16		177
+#define EM_ETPU		178
+#define EM_SLE9X	179
+#define EM_L10M		180
+#define EM_K10M		181
+#define EM_AARCH64	183
+#define EM_AVR32	185
+#define EM_STM8		186
+#define EM_TILE64	187
+#define EM_TILEPRO	188
+#define EM_MICROBLAZE	189
+#define EM_CUDA		190
+#define EM_TILEGX	191
+#define EM_CLOUDSHIELD	192
+#define EM_COREA_1ST	193
+#define EM_COREA_2ND	194
+#define EM_ARC_COMPACT2	195
+#define EM_OPEN8	196
+#define EM_RL78		197
+#define EM_VIDEOCORE5	198
+#define EM_78KOR	199
+#define EM_56800EX	200
+#define EM_BA1		201
+#define EM_BA2		202
+#define EM_XCORE	203
+#define EM_MCHP_PIC	204
+#define EM_KM32		210
+#define EM_KMX32	211
+#define EM_EMX16	212
+#define EM_EMX8		213
+#define EM_KVARC	214
+#define EM_CDP		215
+#define EM_COGE		216
+#define EM_COOL		217
+#define EM_NORC		218
+#define EM_CSR_KALIMBA	219
+#define EM_Z80		220
+#define EM_VISIUM	221
+#define EM_FT32		222
+#define EM_MOXIE	223
+#define EM_AMDGPU	224
+#define EM_RISCV	243
+#define EM_BPF		247
+#define EM_CSKY		252
+#define EM_NUM		253
+
+#define EM_ALPHA	0x9026
+
+#define EV_NONE		0
+#define EV_CURRENT	1
+#define EV_NUM		2
+
+typedef struct {
+  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_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 SHN_UNDEF	0
+#define SHN_LORESERVE	0xff00
+#define SHN_LOPROC	0xff00
+#define SHN_BEFORE	0xff00
+
+#define SHN_AFTER	0xff01
+
+#define SHN_HIPROC	0xff1f
+#define SHN_LOOS	0xff20
+#define SHN_HIOS	0xff3f
+#define SHN_ABS		0xfff1
+#define SHN_COMMON	0xfff2
+#define SHN_XINDEX	0xffff
+#define SHN_HIRESERVE	0xffff
+
+
+
+#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_INIT_ARRAY	  14
+#define SHT_FINI_ARRAY	  15
+#define SHT_PREINIT_ARRAY 16
+#define SHT_GROUP	  17
+#define SHT_SYMTAB_SHNDX  18
+#define	SHT_NUM		  19
+#define SHT_LOOS	  0x60000000
+#define SHT_GNU_ATTRIBUTES 0x6ffffff5
+#define SHT_GNU_HASH	  0x6ffffff6
+#define SHT_GNU_LIBLIST	  0x6ffffff7
+#define SHT_CHECKSUM	  0x6ffffff8
+#define SHT_LOSUNW	  0x6ffffffa
+#define SHT_SUNW_move	  0x6ffffffa
+#define SHT_SUNW_COMDAT   0x6ffffffb
+#define SHT_SUNW_syminfo  0x6ffffffc
+#define SHT_GNU_verdef	  0x6ffffffd
+#define SHT_GNU_verneed	  0x6ffffffe
+#define SHT_GNU_versym	  0x6fffffff
+#define SHT_HISUNW	  0x6fffffff
+#define SHT_HIOS	  0x6fffffff
+#define SHT_LOPROC	  0x70000000
+#define SHT_HIPROC	  0x7fffffff
+#define SHT_LOUSER	  0x80000000
+#define SHT_HIUSER	  0x8fffffff
+
+#define SHF_WRITE	     (1 << 0)
+#define SHF_ALLOC	     (1 << 1)
+#define SHF_EXECINSTR	     (1 << 2)
+#define SHF_MERGE	     (1 << 4)
+#define SHF_STRINGS	     (1 << 5)
+#define SHF_INFO_LINK	     (1 << 6)
+#define SHF_LINK_ORDER	     (1 << 7)
+#define SHF_OS_NONCONFORMING (1 << 8)
+
+#define SHF_GROUP	     (1 << 9)
+#define SHF_TLS		     (1 << 10)
+#define SHF_COMPRESSED	     (1 << 11)
+#define SHF_MASKOS	     0x0ff00000
+#define SHF_MASKPROC	     0xf0000000
+#define SHF_ORDERED	     (1 << 30)
+#define SHF_EXCLUDE	     (1U << 31)
+
+typedef struct {
+  Elf32_Word	ch_type;
+  Elf32_Word	ch_size;
+  Elf32_Word	ch_addralign;
+} Elf32_Chdr;
+
+typedef struct {
+  Elf64_Word	ch_type;
+  Elf64_Word	ch_reserved;
+  Elf64_Xword	ch_size;
+  Elf64_Xword	ch_addralign;
+} Elf64_Chdr;
+
+#define ELFCOMPRESS_ZLIB	1
+#define ELFCOMPRESS_LOOS	0x60000000
+#define ELFCOMPRESS_HIOS	0x6fffffff
+#define ELFCOMPRESS_LOPROC	0x70000000
+#define ELFCOMPRESS_HIPROC	0x7fffffff
+
+
+#define GRP_COMDAT	0x1
+
+typedef struct {
+  Elf32_Word	st_name;
+  Elf32_Addr	st_value;
+  Elf32_Word	st_size;
+  unsigned char	st_info;
+  unsigned char	st_other;
+  Elf32_Section	st_shndx;
+} Elf32_Sym;
+
+typedef struct {
+  Elf64_Word	st_name;
+  unsigned char	st_info;
+  unsigned char st_other;
+  Elf64_Section	st_shndx;
+  Elf64_Addr	st_value;
+  Elf64_Xword	st_size;
+} Elf64_Sym;
+
+typedef struct {
+  Elf32_Half si_boundto;
+  Elf32_Half si_flags;
+} Elf32_Syminfo;
+
+typedef struct {
+  Elf64_Half si_boundto;
+  Elf64_Half si_flags;
+} Elf64_Syminfo;
+
+#define SYMINFO_BT_SELF		0xffff
+#define SYMINFO_BT_PARENT	0xfffe
+#define SYMINFO_BT_LOWRESERVE	0xff00
+
+#define SYMINFO_FLG_DIRECT	0x0001
+#define SYMINFO_FLG_PASSTHRU	0x0002
+#define SYMINFO_FLG_COPY	0x0004
+#define SYMINFO_FLG_LAZYLOAD	0x0008
+
+#define SYMINFO_NONE		0
+#define SYMINFO_CURRENT		1
+#define SYMINFO_NUM		2
+
+#define ELF32_ST_BIND(val)		(((unsigned char) (val)) >> 4)
+#define ELF32_ST_TYPE(val)		((val) & 0xf)
+#define ELF32_ST_INFO(bind, type)	(((bind) << 4) + ((type) & 0xf))
+
+#define ELF64_ST_BIND(val)		ELF32_ST_BIND (val)
+#define ELF64_ST_TYPE(val)		ELF32_ST_TYPE (val)
+#define ELF64_ST_INFO(bind, type)	ELF32_ST_INFO ((bind), (type))
+
+#define STB_LOCAL	0
+#define STB_GLOBAL	1
+#define STB_WEAK	2
+#define	STB_NUM		3
+#define STB_LOOS	10
+#define STB_GNU_UNIQUE	10
+#define STB_HIOS	12
+#define STB_LOPROC	13
+#define STB_HIPROC	15
+
+#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	STT_NUM		7
+#define STT_LOOS	10
+#define STT_GNU_IFUNC	10
+#define STT_HIOS	12
+#define STT_LOPROC	13
+#define STT_HIPROC	15
+
+#define STN_UNDEF	0
+
+#define ELF32_ST_VISIBILITY(o)	((o) & 0x03)
+#define ELF64_ST_VISIBILITY(o)	ELF32_ST_VISIBILITY (o)
+
+#define STV_DEFAULT	0
+#define STV_INTERNAL	1
+#define STV_HIDDEN	2
+#define STV_PROTECTED	3
+
+
+
+
+typedef struct {
+  Elf32_Addr	r_offset;
+  Elf32_Word	r_info;
+} Elf32_Rel;
+
+typedef struct {
+  Elf64_Addr	r_offset;
+  Elf64_Xword	r_info;
+} Elf64_Rel;
+
+
+
+typedef struct {
+  Elf32_Addr	r_offset;
+  Elf32_Word	r_info;
+  Elf32_Sword	r_addend;
+} Elf32_Rela;
+
+typedef struct {
+  Elf64_Addr	r_offset;
+  Elf64_Xword	r_info;
+  Elf64_Sxword	r_addend;
+} Elf64_Rela;
+
+
+
+#define ELF32_R_SYM(val)		((val) >> 8)
+#define ELF32_R_TYPE(val)		((val) & 0xff)
+#define ELF32_R_INFO(sym, type)		(((sym) << 8) + ((type) & 0xff))
+
+#define ELF64_R_SYM(i)			((i) >> 32)
+#define ELF64_R_TYPE(i)			((i) & 0xffffffff)
+#define ELF64_R_INFO(sym,type)		((((Elf64_Xword) (sym)) << 32) + (type))
+
+
+
+typedef struct {
+  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_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	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_NUM		8
+#define PT_LOOS		0x60000000
+#define PT_GNU_EH_FRAME	0x6474e550
+#define PT_GNU_STACK	0x6474e551
+#define PT_GNU_RELRO	0x6474e552
+#define PT_GNU_PROPERTY	0x6474e553
+#define PT_LOSUNW	0x6ffffffa
+#define PT_SUNWBSS	0x6ffffffa
+#define PT_SUNWSTACK	0x6ffffffb
+#define PT_HISUNW	0x6fffffff
+#define PT_HIOS		0x6fffffff
+#define PT_LOPROC	0x70000000
+#define PT_HIPROC	0x7fffffff
+
+
+#define PN_XNUM 0xffff
+
+
+#define PF_X		(1 << 0)
+#define PF_W		(1 << 1)
+#define PF_R		(1 << 2)
+#define PF_MASKOS	0x0ff00000
+#define PF_MASKPROC	0xf0000000
+
+
+
+#define NT_PRSTATUS	1
+#define NT_PRFPREG	2
+#define NT_FPREGSET	2
+#define NT_PRPSINFO	3
+#define NT_PRXREG	4
+#define NT_TASKSTRUCT	4
+#define NT_PLATFORM	5
+#define NT_AUXV		6
+#define NT_GWINDOWS	7
+#define NT_ASRS		8
+#define NT_PSTATUS	10
+#define NT_PSINFO	13
+#define NT_PRCRED	14
+#define NT_UTSNAME	15
+#define NT_LWPSTATUS	16
+#define NT_LWPSINFO	17
+#define NT_PRFPXREG	20
+#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_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_METAG_CBUF	0x500
+#define NT_METAG_RPIPE	0x501
+#define NT_METAG_TLS	0x502
+#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_VERSION	1
+
+
+
+
+typedef struct {
+  Elf32_Sword d_tag;
+  union {
+      Elf32_Word 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 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_BIND_NOW	24
+#define	DT_INIT_ARRAY	25
+#define	DT_FINI_ARRAY	26
+#define	DT_INIT_ARRAYSZ	27
+#define	DT_FINI_ARRAYSZ	28
+#define DT_RUNPATH	29
+#define DT_FLAGS	30
+#define DT_ENCODING	32
+#define DT_PREINIT_ARRAY 32
+#define DT_PREINIT_ARRAYSZ 33
+#define DT_SYMTAB_SHNDX	34
+#define	DT_NUM		35
+#define DT_LOOS		0x6000000d
+#define DT_HIOS		0x6ffff000
+#define DT_LOPROC	0x70000000
+#define DT_HIPROC	0x7fffffff
+#define	DT_PROCNUM	DT_MIPS_NUM
+
+#define DT_VALRNGLO	0x6ffffd00
+#define DT_GNU_PRELINKED 0x6ffffdf5
+#define DT_GNU_CONFLICTSZ 0x6ffffdf6
+#define DT_GNU_LIBLISTSZ 0x6ffffdf7
+#define DT_CHECKSUM	0x6ffffdf8
+#define DT_PLTPADSZ	0x6ffffdf9
+#define DT_MOVEENT	0x6ffffdfa
+#define DT_MOVESZ	0x6ffffdfb
+#define DT_FEATURE_1	0x6ffffdfc
+#define DT_POSFLAG_1	0x6ffffdfd
+
+#define DT_SYMINSZ	0x6ffffdfe
+#define DT_SYMINENT	0x6ffffdff
+#define DT_VALRNGHI	0x6ffffdff
+#define DT_VALTAGIDX(tag)	(DT_VALRNGHI - (tag))
+#define DT_VALNUM 12
+
+#define DT_ADDRRNGLO	0x6ffffe00
+#define DT_GNU_HASH	0x6ffffef5
+#define DT_TLSDESC_PLT	0x6ffffef6
+#define DT_TLSDESC_GOT	0x6ffffef7
+#define DT_GNU_CONFLICT	0x6ffffef8
+#define DT_GNU_LIBLIST	0x6ffffef9
+#define DT_CONFIG	0x6ffffefa
+#define DT_DEPAUDIT	0x6ffffefb
+#define DT_AUDIT	0x6ffffefc
+#define	DT_PLTPAD	0x6ffffefd
+#define	DT_MOVETAB	0x6ffffefe
+#define DT_SYMINFO	0x6ffffeff
+#define DT_ADDRRNGHI	0x6ffffeff
+#define DT_ADDRTAGIDX(tag)	(DT_ADDRRNGHI - (tag))
+#define DT_ADDRNUM 11
+
+
+
+#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 DT_VERSIONTAGIDX(tag)	(DT_VERNEEDNUM - (tag))
+#define DT_VERSIONTAGNUM 16
+
+
+
+#define DT_AUXILIARY    0x7ffffffd
+#define DT_FILTER       0x7fffffff
+#define DT_EXTRATAGIDX(tag)	((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1)
+#define DT_EXTRANUM	3
+
+
+#define DF_ORIGIN	0x00000001
+#define DF_SYMBOLIC	0x00000002
+#define DF_TEXTREL	0x00000004
+#define DF_BIND_NOW	0x00000008
+#define DF_STATIC_TLS	0x00000010
+
+
+
+#define DF_1_NOW	0x00000001
+#define DF_1_GLOBAL	0x00000002
+#define DF_1_GROUP	0x00000004
+#define DF_1_NODELETE	0x00000008
+#define DF_1_LOADFLTR	0x00000010
+#define DF_1_INITFIRST	0x00000020
+#define DF_1_NOOPEN	0x00000040
+#define DF_1_ORIGIN	0x00000080
+#define DF_1_DIRECT	0x00000100
+#define DF_1_TRANS	0x00000200
+#define DF_1_INTERPOSE	0x00000400
+#define DF_1_NODEFLIB	0x00000800
+#define DF_1_NODUMP	0x00001000
+#define DF_1_CONFALT	0x00002000
+#define DF_1_ENDFILTEE	0x00004000
+#define	DF_1_DISPRELDNE	0x00008000
+#define	DF_1_DISPRELPND	0x00010000
+#define	DF_1_NODIRECT	0x00020000
+#define	DF_1_IGNMULDEF	0x00040000
+#define	DF_1_NOKSYMS	0x00080000
+#define	DF_1_NOHDR	0x00100000
+#define	DF_1_EDITED	0x00200000
+#define	DF_1_NORELOC	0x00400000
+#define	DF_1_SYMINTPOSE	0x00800000
+#define	DF_1_GLOBAUDIT	0x01000000
+#define	DF_1_SINGLETON	0x02000000
+#define	DF_1_STUB	0x04000000
+#define	DF_1_PIE	0x08000000
+
+#define DTF_1_PARINIT	0x00000001
+#define DTF_1_CONFEXP	0x00000002
+
+
+#define DF_P1_LAZYLOAD	0x00000001
+#define DF_P1_GROUPPERM	0x00000002
+
+
+
+
+typedef struct {
+  Elf32_Half	vd_version;
+  Elf32_Half	vd_flags;
+  Elf32_Half	vd_ndx;
+  Elf32_Half	vd_cnt;
+  Elf32_Word	vd_hash;
+  Elf32_Word	vd_aux;
+  Elf32_Word	vd_next;
+} Elf32_Verdef;
+
+typedef struct {
+  Elf64_Half	vd_version;
+  Elf64_Half	vd_flags;
+  Elf64_Half	vd_ndx;
+  Elf64_Half	vd_cnt;
+  Elf64_Word	vd_hash;
+  Elf64_Word	vd_aux;
+  Elf64_Word	vd_next;
+} Elf64_Verdef;
+
+
+
+#define VER_DEF_NONE	0
+#define VER_DEF_CURRENT	1
+#define VER_DEF_NUM	2
+
+
+#define VER_FLG_BASE	0x1
+#define VER_FLG_WEAK	0x2
+
+
+#define	VER_NDX_LOCAL		0
+#define	VER_NDX_GLOBAL		1
+#define	VER_NDX_LORESERVE	0xff00
+#define	VER_NDX_ELIMINATE	0xff01
+
+
+
+typedef struct {
+  Elf32_Word	vda_name;
+  Elf32_Word	vda_next;
+} Elf32_Verdaux;
+
+typedef struct {
+  Elf64_Word	vda_name;
+  Elf64_Word	vda_next;
+} Elf64_Verdaux;
+
+
+
+
+typedef struct {
+  Elf32_Half	vn_version;
+  Elf32_Half	vn_cnt;
+  Elf32_Word	vn_file;
+  Elf32_Word	vn_aux;
+  Elf32_Word	vn_next;
+} Elf32_Verneed;
+
+typedef struct {
+  Elf64_Half	vn_version;
+  Elf64_Half	vn_cnt;
+  Elf64_Word	vn_file;
+  Elf64_Word	vn_aux;
+  Elf64_Word	vn_next;
+} Elf64_Verneed;
+
+
+
+#define VER_NEED_NONE	 0
+#define VER_NEED_CURRENT 1
+#define VER_NEED_NUM	 2
+
+
+
+typedef struct {
+  Elf32_Word	vna_hash;
+  Elf32_Half	vna_flags;
+  Elf32_Half	vna_other;
+  Elf32_Word	vna_name;
+  Elf32_Word	vna_next;
+} Elf32_Vernaux;
+
+typedef struct {
+  Elf64_Word	vna_hash;
+  Elf64_Half	vna_flags;
+  Elf64_Half	vna_other;
+  Elf64_Word	vna_name;
+  Elf64_Word	vna_next;
+} Elf64_Vernaux;
+
+
+
+#define VER_FLG_WEAK	0x2
+
+
+
+typedef struct {
+  uint32_t a_type;
+  union {
+      uint32_t a_val;
+  } a_un;
+} Elf32_auxv_t;
+
+typedef struct {
+  uint64_t a_type;
+  union {
+      uint64_t a_val;
+  } a_un;
+} Elf64_auxv_t;
+
+
+
+#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_CLKTCK	17
+
+
+#define AT_PLATFORM	15
+#define AT_HWCAP	16
+
+
+
+
+#define AT_FPUCW	18
+
+
+#define AT_DCACHEBSIZE	19
+#define AT_ICACHEBSIZE	20
+#define AT_UCACHEBSIZE	21
+
+
+
+#define AT_IGNOREPPC	22
+
+#define	AT_SECURE	23
+
+#define AT_BASE_PLATFORM 24
+
+#define AT_RANDOM	25
+
+#define AT_HWCAP2	26
+
+#define AT_EXECFN	31
+
+
+
+#define AT_SYSINFO	32
+#define AT_SYSINFO_EHDR	33
+
+
+
+#define AT_L1I_CACHESHAPE	34
+#define AT_L1D_CACHESHAPE	35
+#define AT_L2_CACHESHAPE	36
+#define AT_L3_CACHESHAPE	37
+
+#define AT_L1I_CACHESIZE	40
+#define AT_L1I_CACHEGEOMETRY	41
+#define AT_L1D_CACHESIZE	42
+#define AT_L1D_CACHEGEOMETRY	43
+#define AT_L2_CACHESIZE		44
+#define AT_L2_CACHEGEOMETRY	45
+#define AT_L3_CACHESIZE		46
+#define AT_L3_CACHEGEOMETRY	47
+
+#define AT_MINSIGSTKSZ		51
+
+
+typedef struct {
+  Elf32_Word n_namesz;
+  Elf32_Word n_descsz;
+  Elf32_Word n_type;
+} Elf32_Nhdr;
+
+typedef struct {
+  Elf64_Word n_namesz;
+  Elf64_Word n_descsz;
+  Elf64_Word n_type;
+} Elf64_Nhdr;
+
+
+
+
+#define ELF_NOTE_SOLARIS	"SUNW Solaris"
+
+
+#define ELF_NOTE_GNU		"GNU"
+
+
+
+
+
+#define ELF_NOTE_PAGESIZE_HINT	1
+
+
+#define NT_GNU_ABI_TAG	1
+#define ELF_NOTE_ABI	NT_GNU_ABI_TAG
+
+
+
+#define ELF_NOTE_OS_LINUX	0
+#define ELF_NOTE_OS_GNU		1
+#define ELF_NOTE_OS_SOLARIS2	2
+#define ELF_NOTE_OS_FREEBSD	3
+
+#define NT_GNU_BUILD_ID	3
+#define NT_GNU_GOLD_VERSION	4
+#define NT_GNU_PROPERTY_TYPE_0	5
+
+
+
+typedef struct {
+  Elf32_Xword m_value;
+  Elf32_Word m_info;
+  Elf32_Word m_poffset;
+  Elf32_Half m_repeat;
+  Elf32_Half m_stride;
+} Elf32_Move;
+
+typedef struct {
+  Elf64_Xword m_value;
+  Elf64_Xword m_info;
+  Elf64_Xword m_poffset;
+  Elf64_Half m_repeat;
+  Elf64_Half m_stride;
+} Elf64_Move;
+
+
+#define ELF32_M_SYM(info)	((info) >> 8)
+#define ELF32_M_SIZE(info)	((unsigned char) (info))
+#define ELF32_M_INFO(sym, size)	(((sym) << 8) + (unsigned char) (size))
+
+#define ELF64_M_SYM(info)	ELF32_M_SYM (info)
+#define ELF64_M_SIZE(info)	ELF32_M_SIZE (info)
+#define ELF64_M_INFO(sym, size)	ELF32_M_INFO (sym, size)
+
+#define EF_CPU32	0x00810000
+
+#define R_68K_NONE	0
+#define R_68K_32	1
+#define R_68K_16	2
+#define R_68K_8		3
+#define R_68K_PC32	4
+#define R_68K_PC16	5
+#define R_68K_PC8	6
+#define R_68K_GOT32	7
+#define R_68K_GOT16	8
+#define R_68K_GOT8	9
+#define R_68K_GOT32O	10
+#define R_68K_GOT16O	11
+#define R_68K_GOT8O	12
+#define R_68K_PLT32	13
+#define R_68K_PLT16	14
+#define R_68K_PLT8	15
+#define R_68K_PLT32O	16
+#define R_68K_PLT16O	17
+#define R_68K_PLT8O	18
+#define R_68K_COPY	19
+#define R_68K_GLOB_DAT	20
+#define R_68K_JMP_SLOT	21
+#define R_68K_RELATIVE	22
+#define R_68K_TLS_GD32	25
+#define R_68K_TLS_GD16	26
+#define R_68K_TLS_GD8	27
+#define R_68K_TLS_LDM32	28
+#define R_68K_TLS_LDM16	29
+#define R_68K_TLS_LDM8	30
+#define R_68K_TLS_LDO32	31
+#define R_68K_TLS_LDO16	32
+#define R_68K_TLS_LDO8	33
+#define R_68K_TLS_IE32	34
+#define R_68K_TLS_IE16	35
+#define R_68K_TLS_IE8	36
+#define R_68K_TLS_LE32	37
+#define R_68K_TLS_LE16	38
+#define R_68K_TLS_LE8	39
+#define R_68K_TLS_DTPMOD32	40
+#define R_68K_TLS_DTPREL32	41
+#define R_68K_TLS_TPREL32	42
+#define R_68K_NUM	43
+
+#define R_386_NONE	   0
+#define R_386_32	   1
+#define R_386_PC32	   2
+#define R_386_GOT32	   3
+#define R_386_PLT32	   4
+#define R_386_COPY	   5
+#define R_386_GLOB_DAT	   6
+#define R_386_JMP_SLOT	   7
+#define R_386_RELATIVE	   8
+#define R_386_GOTOFF	   9
+#define R_386_GOTPC	   10
+#define R_386_32PLT	   11
+#define R_386_TLS_TPOFF	   14
+#define R_386_TLS_IE	   15
+#define R_386_TLS_GOTIE	   16
+#define R_386_TLS_LE	   17
+#define R_386_TLS_GD	   18
+#define R_386_TLS_LDM	   19
+#define R_386_16	   20
+#define R_386_PC16	   21
+#define R_386_8		   22
+#define R_386_PC8	   23
+#define R_386_TLS_GD_32	   24
+#define R_386_TLS_GD_PUSH  25
+#define R_386_TLS_GD_CALL  26
+#define R_386_TLS_GD_POP   27
+#define R_386_TLS_LDM_32   28
+#define R_386_TLS_LDM_PUSH 29
+#define R_386_TLS_LDM_CALL 30
+#define R_386_TLS_LDM_POP  31
+#define R_386_TLS_LDO_32   32
+#define R_386_TLS_IE_32	   33
+#define R_386_TLS_LE_32	   34
+#define R_386_TLS_DTPMOD32 35
+#define R_386_TLS_DTPOFF32 36
+#define R_386_TLS_TPOFF32  37
+#define R_386_SIZE32       38
+#define R_386_TLS_GOTDESC  39
+#define R_386_TLS_DESC_CALL 40
+#define R_386_TLS_DESC     41
+#define R_386_IRELATIVE	   42
+#define R_386_GOT32X	   43
+#define R_386_NUM	   44
+
+
+
+
+
+#define STT_SPARC_REGISTER	13
+
+
+
+#define EF_SPARCV9_MM		3
+#define EF_SPARCV9_TSO		0
+#define EF_SPARCV9_PSO		1
+#define EF_SPARCV9_RMO		2
+#define EF_SPARC_LEDATA		0x800000
+#define EF_SPARC_EXT_MASK	0xFFFF00
+#define EF_SPARC_32PLUS		0x000100
+#define EF_SPARC_SUN_US1	0x000200
+#define EF_SPARC_HAL_R1		0x000400
+#define EF_SPARC_SUN_US3	0x000800
+
+
+
+#define R_SPARC_NONE		0
+#define R_SPARC_8		1
+#define R_SPARC_16		2
+#define R_SPARC_32		3
+#define R_SPARC_DISP8		4
+#define R_SPARC_DISP16		5
+#define R_SPARC_DISP32		6
+#define R_SPARC_WDISP30		7
+#define R_SPARC_WDISP22		8
+#define R_SPARC_HI22		9
+#define R_SPARC_22		10
+#define R_SPARC_13		11
+#define R_SPARC_LO10		12
+#define R_SPARC_GOT10		13
+#define R_SPARC_GOT13		14
+#define R_SPARC_GOT22		15
+#define R_SPARC_PC10		16
+#define R_SPARC_PC22		17
+#define R_SPARC_WPLT30		18
+#define R_SPARC_COPY		19
+#define R_SPARC_GLOB_DAT	20
+#define R_SPARC_JMP_SLOT	21
+#define R_SPARC_RELATIVE	22
+#define R_SPARC_UA32		23
+
+
+
+#define R_SPARC_PLT32		24
+#define R_SPARC_HIPLT22		25
+#define R_SPARC_LOPLT10		26
+#define R_SPARC_PCPLT32		27
+#define R_SPARC_PCPLT22		28
+#define R_SPARC_PCPLT10		29
+#define R_SPARC_10		30
+#define R_SPARC_11		31
+#define R_SPARC_64		32
+#define R_SPARC_OLO10		33
+#define R_SPARC_HH22		34
+#define R_SPARC_HM10		35
+#define R_SPARC_LM22		36
+#define R_SPARC_PC_HH22		37
+#define R_SPARC_PC_HM10		38
+#define R_SPARC_PC_LM22		39
+#define R_SPARC_WDISP16		40
+#define R_SPARC_WDISP19		41
+#define R_SPARC_GLOB_JMP	42
+#define R_SPARC_7		43
+#define R_SPARC_5		44
+#define R_SPARC_6		45
+#define R_SPARC_DISP64		46
+#define R_SPARC_PLT64		47
+#define R_SPARC_HIX22		48
+#define R_SPARC_LOX10		49
+#define R_SPARC_H44		50
+#define R_SPARC_M44		51
+#define R_SPARC_L44		52
+#define R_SPARC_REGISTER	53
+#define R_SPARC_UA64		54
+#define R_SPARC_UA16		55
+#define R_SPARC_TLS_GD_HI22	56
+#define R_SPARC_TLS_GD_LO10	57
+#define R_SPARC_TLS_GD_ADD	58
+#define R_SPARC_TLS_GD_CALL	59
+#define R_SPARC_TLS_LDM_HI22	60
+#define R_SPARC_TLS_LDM_LO10	61
+#define R_SPARC_TLS_LDM_ADD	62
+#define R_SPARC_TLS_LDM_CALL	63
+#define R_SPARC_TLS_LDO_HIX22	64
+#define R_SPARC_TLS_LDO_LOX10	65
+#define R_SPARC_TLS_LDO_ADD	66
+#define R_SPARC_TLS_IE_HI22	67
+#define R_SPARC_TLS_IE_LO10	68
+#define R_SPARC_TLS_IE_LD	69
+#define R_SPARC_TLS_IE_LDX	70
+#define R_SPARC_TLS_IE_ADD	71
+#define R_SPARC_TLS_LE_HIX22	72
+#define R_SPARC_TLS_LE_LOX10	73
+#define R_SPARC_TLS_DTPMOD32	74
+#define R_SPARC_TLS_DTPMOD64	75
+#define R_SPARC_TLS_DTPOFF32	76
+#define R_SPARC_TLS_DTPOFF64	77
+#define R_SPARC_TLS_TPOFF32	78
+#define R_SPARC_TLS_TPOFF64	79
+#define R_SPARC_GOTDATA_HIX22	80
+#define R_SPARC_GOTDATA_LOX10	81
+#define R_SPARC_GOTDATA_OP_HIX22	82
+#define R_SPARC_GOTDATA_OP_LOX10	83
+#define R_SPARC_GOTDATA_OP	84
+#define R_SPARC_H34		85
+#define R_SPARC_SIZE32		86
+#define R_SPARC_SIZE64		87
+#define R_SPARC_GNU_VTINHERIT	250
+#define R_SPARC_GNU_VTENTRY	251
+#define R_SPARC_REV32		252
+
+#define R_SPARC_NUM		253
+
+
+
+#define DT_SPARC_REGISTER 0x70000001
+#define DT_SPARC_NUM	2
+
+
+#define EF_MIPS_NOREORDER   1
+#define EF_MIPS_PIC	    2
+#define EF_MIPS_CPIC	    4
+#define EF_MIPS_XGOT	    8
+#define EF_MIPS_64BIT_WHIRL 16
+#define EF_MIPS_ABI2	    32
+#define EF_MIPS_ABI_ON32    64
+#define EF_MIPS_FP64	    512
+#define EF_MIPS_NAN2008     1024
+#define EF_MIPS_ARCH	    0xf0000000
+
+
+
+#define EF_MIPS_ARCH_1	    0x00000000
+#define EF_MIPS_ARCH_2	    0x10000000
+#define EF_MIPS_ARCH_3	    0x20000000
+#define EF_MIPS_ARCH_4	    0x30000000
+#define EF_MIPS_ARCH_5	    0x40000000
+#define EF_MIPS_ARCH_32     0x50000000
+#define EF_MIPS_ARCH_64     0x60000000
+#define EF_MIPS_ARCH_32R2   0x70000000
+#define EF_MIPS_ARCH_64R2   0x80000000
+
+
+#define E_MIPS_ARCH_1	  0x00000000
+#define E_MIPS_ARCH_2	  0x10000000
+#define E_MIPS_ARCH_3	  0x20000000
+#define E_MIPS_ARCH_4	  0x30000000
+#define E_MIPS_ARCH_5	  0x40000000
+#define E_MIPS_ARCH_32	  0x50000000
+#define E_MIPS_ARCH_64	  0x60000000
+
+
+
+#define SHN_MIPS_ACOMMON    0xff00
+#define SHN_MIPS_TEXT	    0xff01
+#define SHN_MIPS_DATA	    0xff02
+#define SHN_MIPS_SCOMMON    0xff03
+#define SHN_MIPS_SUNDEFINED 0xff04
+
+
+
+#define SHT_MIPS_LIBLIST       0x70000000
+#define SHT_MIPS_MSYM	       0x70000001
+#define SHT_MIPS_CONFLICT      0x70000002
+#define SHT_MIPS_GPTAB	       0x70000003
+#define SHT_MIPS_UCODE	       0x70000004
+#define SHT_MIPS_DEBUG	       0x70000005
+#define SHT_MIPS_REGINFO       0x70000006
+#define SHT_MIPS_PACKAGE       0x70000007
+#define SHT_MIPS_PACKSYM       0x70000008
+#define SHT_MIPS_RELD	       0x70000009
+#define SHT_MIPS_IFACE         0x7000000b
+#define SHT_MIPS_CONTENT       0x7000000c
+#define SHT_MIPS_OPTIONS       0x7000000d
+#define SHT_MIPS_SHDR	       0x70000010
+#define SHT_MIPS_FDESC	       0x70000011
+#define SHT_MIPS_EXTSYM	       0x70000012
+#define SHT_MIPS_DENSE	       0x70000013
+#define SHT_MIPS_PDESC	       0x70000014
+#define SHT_MIPS_LOCSYM	       0x70000015
+#define SHT_MIPS_AUXSYM	       0x70000016
+#define SHT_MIPS_OPTSYM	       0x70000017
+#define SHT_MIPS_LOCSTR	       0x70000018
+#define SHT_MIPS_LINE	       0x70000019
+#define SHT_MIPS_RFDESC	       0x7000001a
+#define SHT_MIPS_DELTASYM      0x7000001b
+#define SHT_MIPS_DELTAINST     0x7000001c
+#define SHT_MIPS_DELTACLASS    0x7000001d
+#define SHT_MIPS_DWARF         0x7000001e
+#define SHT_MIPS_DELTADECL     0x7000001f
+#define SHT_MIPS_SYMBOL_LIB    0x70000020
+#define SHT_MIPS_EVENTS	       0x70000021
+#define SHT_MIPS_TRANSLATE     0x70000022
+#define SHT_MIPS_PIXIE	       0x70000023
+#define SHT_MIPS_XLATE	       0x70000024
+#define SHT_MIPS_XLATE_DEBUG   0x70000025
+#define SHT_MIPS_WHIRL	       0x70000026
+#define SHT_MIPS_EH_REGION     0x70000027
+#define SHT_MIPS_XLATE_OLD     0x70000028
+#define SHT_MIPS_PDR_EXCEPTION 0x70000029
+
+
+
+#define SHF_MIPS_GPREL	 0x10000000
+#define SHF_MIPS_MERGE	 0x20000000
+#define SHF_MIPS_ADDR	 0x40000000
+#define SHF_MIPS_STRINGS 0x80000000
+#define SHF_MIPS_NOSTRIP 0x08000000
+#define SHF_MIPS_LOCAL	 0x04000000
+#define SHF_MIPS_NAMES	 0x02000000
+#define SHF_MIPS_NODUPE	 0x01000000
+
+
+
+
+
+#define STO_MIPS_DEFAULT		0x0
+#define STO_MIPS_INTERNAL		0x1
+#define STO_MIPS_HIDDEN			0x2
+#define STO_MIPS_PROTECTED		0x3
+#define STO_MIPS_PLT			0x8
+#define STO_MIPS_SC_ALIGN_UNUSED	0xff
+
+
+#define STB_MIPS_SPLIT_COMMON		13
+
+
+
+typedef union {
+  struct {
+      Elf32_Word gt_current_g_value;
+      Elf32_Word gt_unused;
+  } gt_header;
+  struct {
+      Elf32_Word gt_g_value;
+      Elf32_Word gt_bytes;
+  } gt_entry;
+} Elf32_gptab;
+
+
+
+typedef struct {
+  Elf32_Word	ri_gprmask;
+  Elf32_Word	ri_cprmask[4];
+  Elf32_Sword	ri_gp_value;
+} Elf32_RegInfo;
+
+
+
+typedef struct {
+  unsigned char kind;
+
+  unsigned char size;
+  Elf32_Section section;
+
+  Elf32_Word info;
+} Elf_Options;
+
+
+
+#define ODK_NULL	0
+#define ODK_REGINFO	1
+#define ODK_EXCEPTIONS	2
+#define ODK_PAD		3
+#define ODK_HWPATCH	4
+#define ODK_FILL	5
+#define ODK_TAGS	6
+#define ODK_HWAND	7
+#define ODK_HWOR	8
+
+
+
+#define OEX_FPU_MIN	0x1f
+#define OEX_FPU_MAX	0x1f00
+#define OEX_PAGE0	0x10000
+#define OEX_SMM		0x20000
+#define OEX_FPDBUG	0x40000
+#define OEX_PRECISEFP	OEX_FPDBUG
+#define OEX_DISMISS	0x80000
+
+#define OEX_FPU_INVAL	0x10
+#define OEX_FPU_DIV0	0x08
+#define OEX_FPU_OFLO	0x04
+#define OEX_FPU_UFLO	0x02
+#define OEX_FPU_INEX	0x01
+
+
+
+#define OHW_R4KEOP	0x1
+#define OHW_R8KPFETCH	0x2
+#define OHW_R5KEOP	0x4
+#define OHW_R5KCVTL	0x8
+
+#define OPAD_PREFIX	0x1
+#define OPAD_POSTFIX	0x2
+#define OPAD_SYMBOL	0x4
+
+
+
+typedef struct {
+  Elf32_Word hwp_flags1;
+  Elf32_Word hwp_flags2;
+} Elf_Options_Hw;
+
+
+
+#define OHWA0_R4KEOP_CHECKED	0x00000001
+#define OHWA1_R4KEOP_CLEAN	0x00000002
+
+
+
+#define R_MIPS_NONE		0
+#define R_MIPS_16		1
+#define R_MIPS_32		2
+#define R_MIPS_REL32		3
+#define R_MIPS_26		4
+#define R_MIPS_HI16		5
+#define R_MIPS_LO16		6
+#define R_MIPS_GPREL16		7
+#define R_MIPS_LITERAL		8
+#define R_MIPS_GOT16		9
+#define R_MIPS_PC16		10
+#define R_MIPS_CALL16		11
+#define R_MIPS_GPREL32		12
+
+#define R_MIPS_SHIFT5		16
+#define R_MIPS_SHIFT6		17
+#define R_MIPS_64		18
+#define R_MIPS_GOT_DISP		19
+#define R_MIPS_GOT_PAGE		20
+#define R_MIPS_GOT_OFST		21
+#define R_MIPS_GOT_HI16		22
+#define R_MIPS_GOT_LO16		23
+#define R_MIPS_SUB		24
+#define R_MIPS_INSERT_A		25
+#define R_MIPS_INSERT_B		26
+#define R_MIPS_DELETE		27
+#define R_MIPS_HIGHER		28
+#define R_MIPS_HIGHEST		29
+#define R_MIPS_CALL_HI16	30
+#define R_MIPS_CALL_LO16	31
+#define R_MIPS_SCN_DISP		32
+#define R_MIPS_REL16		33
+#define R_MIPS_ADD_IMMEDIATE	34
+#define R_MIPS_PJUMP		35
+#define R_MIPS_RELGOT		36
+#define R_MIPS_JALR		37
+#define R_MIPS_TLS_DTPMOD32	38
+#define R_MIPS_TLS_DTPREL32	39
+#define R_MIPS_TLS_DTPMOD64	40
+#define R_MIPS_TLS_DTPREL64	41
+#define R_MIPS_TLS_GD		42
+#define R_MIPS_TLS_LDM		43
+#define R_MIPS_TLS_DTPREL_HI16	44
+#define R_MIPS_TLS_DTPREL_LO16	45
+#define R_MIPS_TLS_GOTTPREL	46
+#define R_MIPS_TLS_TPREL32	47
+#define R_MIPS_TLS_TPREL64	48
+#define R_MIPS_TLS_TPREL_HI16	49
+#define R_MIPS_TLS_TPREL_LO16	50
+#define R_MIPS_GLOB_DAT		51
+#define R_MIPS_COPY		126
+#define R_MIPS_JUMP_SLOT        127
+
+#define R_MIPS_NUM		128
+
+
+
+#define PT_MIPS_REGINFO	0x70000000
+#define PT_MIPS_RTPROC  0x70000001
+#define PT_MIPS_OPTIONS 0x70000002
+#define PT_MIPS_ABIFLAGS 0x70000003
+
+
+
+#define PF_MIPS_LOCAL	0x10000000
+
+
+
+#define DT_MIPS_RLD_VERSION  0x70000001
+#define DT_MIPS_TIME_STAMP   0x70000002
+#define DT_MIPS_ICHECKSUM    0x70000003
+#define DT_MIPS_IVERSION     0x70000004
+#define DT_MIPS_FLAGS	     0x70000005
+#define DT_MIPS_BASE_ADDRESS 0x70000006
+#define DT_MIPS_MSYM	     0x70000007
+#define DT_MIPS_CONFLICT     0x70000008
+#define DT_MIPS_LIBLIST	     0x70000009
+#define DT_MIPS_LOCAL_GOTNO  0x7000000a
+#define DT_MIPS_CONFLICTNO   0x7000000b
+#define DT_MIPS_LIBLISTNO    0x70000010
+#define DT_MIPS_SYMTABNO     0x70000011
+#define DT_MIPS_UNREFEXTNO   0x70000012
+#define DT_MIPS_GOTSYM	     0x70000013
+#define DT_MIPS_HIPAGENO     0x70000014
+#define DT_MIPS_RLD_MAP	     0x70000016
+#define DT_MIPS_DELTA_CLASS  0x70000017
+#define DT_MIPS_DELTA_CLASS_NO    0x70000018
+
+#define DT_MIPS_DELTA_INSTANCE    0x70000019
+#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a
+
+#define DT_MIPS_DELTA_RELOC  0x7000001b
+#define DT_MIPS_DELTA_RELOC_NO 0x7000001c
+
+#define DT_MIPS_DELTA_SYM    0x7000001d
+
+#define DT_MIPS_DELTA_SYM_NO 0x7000001e
+
+#define DT_MIPS_DELTA_CLASSSYM 0x70000020
+
+#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021
+
+#define DT_MIPS_CXX_FLAGS    0x70000022
+#define DT_MIPS_PIXIE_INIT   0x70000023
+#define DT_MIPS_SYMBOL_LIB   0x70000024
+#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025
+#define DT_MIPS_LOCAL_GOTIDX 0x70000026
+#define DT_MIPS_HIDDEN_GOTIDX 0x70000027
+#define DT_MIPS_PROTECTED_GOTIDX 0x70000028
+#define DT_MIPS_OPTIONS	     0x70000029
+#define DT_MIPS_INTERFACE    0x7000002a
+#define DT_MIPS_DYNSTR_ALIGN 0x7000002b
+#define DT_MIPS_INTERFACE_SIZE 0x7000002c
+#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d
+
+#define DT_MIPS_PERF_SUFFIX  0x7000002e
+
+#define DT_MIPS_COMPACT_SIZE 0x7000002f
+#define DT_MIPS_GP_VALUE     0x70000030
+#define DT_MIPS_AUX_DYNAMIC  0x70000031
+
+#define DT_MIPS_PLTGOT	     0x70000032
+
+#define DT_MIPS_RWPLT        0x70000034
+#define DT_MIPS_RLD_MAP_REL  0x70000035
+#define DT_MIPS_NUM	     0x36
+
+
+
+#define RHF_NONE		   0
+#define RHF_QUICKSTART		   (1 << 0)
+#define RHF_NOTPOT		   (1 << 1)
+#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2)
+#define RHF_NO_MOVE		   (1 << 3)
+#define RHF_SGI_ONLY		   (1 << 4)
+#define RHF_GUARANTEE_INIT	   (1 << 5)
+#define RHF_DELTA_C_PLUS_PLUS	   (1 << 6)
+#define RHF_GUARANTEE_START_INIT   (1 << 7)
+#define RHF_PIXIE		   (1 << 8)
+#define RHF_DEFAULT_DELAY_LOAD	   (1 << 9)
+#define RHF_REQUICKSTART	   (1 << 10)
+#define RHF_REQUICKSTARTED	   (1 << 11)
+#define RHF_CORD		   (1 << 12)
+#define RHF_NO_UNRES_UNDEF	   (1 << 13)
+#define RHF_RLD_ORDER_SAFE	   (1 << 14)
+
+
+
+typedef struct {
+  Elf32_Word l_name;
+  Elf32_Word l_time_stamp;
+  Elf32_Word l_checksum;
+  Elf32_Word l_version;
+  Elf32_Word l_flags;
+} Elf32_Lib;
+
+typedef struct {
+  Elf64_Word l_name;
+  Elf64_Word l_time_stamp;
+  Elf64_Word l_checksum;
+  Elf64_Word l_version;
+  Elf64_Word l_flags;
+} Elf64_Lib;
+
+
+
+
+#define LL_NONE		  0
+#define LL_EXACT_MATCH	  (1 << 0)
+#define LL_IGNORE_INT_VER (1 << 1)
+#define LL_REQUIRE_MINOR  (1 << 2)
+#define LL_EXPORTS	  (1 << 3)
+#define LL_DELAY_LOAD	  (1 << 4)
+#define LL_DELTA	  (1 << 5)
+
+
+
+typedef Elf32_Addr Elf32_Conflict;
+
+typedef struct {
+  Elf32_Half version;
+  unsigned char isa_level;
+  unsigned char isa_rev;
+  unsigned char gpr_size;
+  unsigned char cpr1_size;
+  unsigned char cpr2_size;
+  unsigned char fp_abi;
+  Elf32_Word isa_ext;
+  Elf32_Word ases;
+  Elf32_Word flags1;
+  Elf32_Word flags2;
+} Elf_MIPS_ABIFlags_v0;
+
+#define MIPS_AFL_REG_NONE	0x00
+#define MIPS_AFL_REG_32		0x01
+#define MIPS_AFL_REG_64		0x02
+#define MIPS_AFL_REG_128	0x03
+
+#define MIPS_AFL_ASE_DSP	0x00000001
+#define MIPS_AFL_ASE_DSPR2	0x00000002
+#define MIPS_AFL_ASE_EVA	0x00000004
+#define MIPS_AFL_ASE_MCU	0x00000008
+#define MIPS_AFL_ASE_MDMX	0x00000010
+#define MIPS_AFL_ASE_MIPS3D	0x00000020
+#define MIPS_AFL_ASE_MT		0x00000040
+#define MIPS_AFL_ASE_SMARTMIPS	0x00000080
+#define MIPS_AFL_ASE_VIRT	0x00000100
+#define MIPS_AFL_ASE_MSA	0x00000200
+#define MIPS_AFL_ASE_MIPS16	0x00000400
+#define MIPS_AFL_ASE_MICROMIPS	0x00000800
+#define MIPS_AFL_ASE_XPA	0x00001000
+#define MIPS_AFL_ASE_MASK	0x00001fff
+
+#define MIPS_AFL_EXT_XLR	  1
+#define MIPS_AFL_EXT_OCTEON2	  2
+#define MIPS_AFL_EXT_OCTEONP	  3
+#define MIPS_AFL_EXT_LOONGSON_3A  4
+#define MIPS_AFL_EXT_OCTEON	  5
+#define MIPS_AFL_EXT_5900	  6
+#define MIPS_AFL_EXT_4650	  7
+#define MIPS_AFL_EXT_4010	  8
+#define MIPS_AFL_EXT_4100	  9
+#define MIPS_AFL_EXT_3900	  10
+#define MIPS_AFL_EXT_10000	  11
+#define MIPS_AFL_EXT_SB1	  12
+#define MIPS_AFL_EXT_4111	  13
+#define MIPS_AFL_EXT_4120	  14
+#define MIPS_AFL_EXT_5400	  15
+#define MIPS_AFL_EXT_5500	  16
+#define MIPS_AFL_EXT_LOONGSON_2E  17
+#define MIPS_AFL_EXT_LOONGSON_2F  18
+
+#define MIPS_AFL_FLAGS1_ODDSPREG  1
+
+enum
+{
+  Val_GNU_MIPS_ABI_FP_ANY = 0,
+  Val_GNU_MIPS_ABI_FP_DOUBLE = 1,
+  Val_GNU_MIPS_ABI_FP_SINGLE = 2,
+  Val_GNU_MIPS_ABI_FP_SOFT = 3,
+  Val_GNU_MIPS_ABI_FP_OLD_64 = 4,
+  Val_GNU_MIPS_ABI_FP_XX = 5,
+  Val_GNU_MIPS_ABI_FP_64 = 6,
+  Val_GNU_MIPS_ABI_FP_64A = 7,
+  Val_GNU_MIPS_ABI_FP_MAX = 7
+};
+
+
+
+
+#define EF_PARISC_TRAPNIL	0x00010000
+#define EF_PARISC_EXT		0x00020000
+#define EF_PARISC_LSB		0x00040000
+#define EF_PARISC_WIDE		0x00080000
+#define EF_PARISC_NO_KABP	0x00100000
+
+#define EF_PARISC_LAZYSWAP	0x00400000
+#define EF_PARISC_ARCH		0x0000ffff
+
+
+
+#define EFA_PARISC_1_0		    0x020b
+#define EFA_PARISC_1_1		    0x0210
+#define EFA_PARISC_2_0		    0x0214
+
+
+
+#define SHN_PARISC_ANSI_COMMON	0xff00
+
+#define SHN_PARISC_HUGE_COMMON	0xff01
+
+
+
+#define SHT_PARISC_EXT		0x70000000
+#define SHT_PARISC_UNWIND	0x70000001
+#define SHT_PARISC_DOC		0x70000002
+
+
+
+#define SHF_PARISC_SHORT	0x20000000
+#define SHF_PARISC_HUGE		0x40000000
+#define SHF_PARISC_SBP		0x80000000
+
+
+
+#define STT_PARISC_MILLICODE	13
+
+#define STT_HP_OPAQUE		(STT_LOOS + 0x1)
+#define STT_HP_STUB		(STT_LOOS + 0x2)
+
+
+
+#define R_PARISC_NONE		0
+#define R_PARISC_DIR32		1
+#define R_PARISC_DIR21L		2
+#define R_PARISC_DIR17R		3
+#define R_PARISC_DIR17F		4
+#define R_PARISC_DIR14R		6
+#define R_PARISC_PCREL32	9
+#define R_PARISC_PCREL21L	10
+#define R_PARISC_PCREL17R	11
+#define R_PARISC_PCREL17F	12
+#define R_PARISC_PCREL14R	14
+#define R_PARISC_DPREL21L	18
+#define R_PARISC_DPREL14R	22
+#define R_PARISC_GPREL21L	26
+#define R_PARISC_GPREL14R	30
+#define R_PARISC_LTOFF21L	34
+#define R_PARISC_LTOFF14R	38
+#define R_PARISC_SECREL32	41
+#define R_PARISC_SEGBASE	48
+#define R_PARISC_SEGREL32	49
+#define R_PARISC_PLTOFF21L	50
+#define R_PARISC_PLTOFF14R	54
+#define R_PARISC_LTOFF_FPTR32	57
+#define R_PARISC_LTOFF_FPTR21L	58
+#define R_PARISC_LTOFF_FPTR14R	62
+#define R_PARISC_FPTR64		64
+#define R_PARISC_PLABEL32	65
+#define R_PARISC_PLABEL21L	66
+#define R_PARISC_PLABEL14R	70
+#define R_PARISC_PCREL64	72
+#define R_PARISC_PCREL22F	74
+#define R_PARISC_PCREL14WR	75
+#define R_PARISC_PCREL14DR	76
+#define R_PARISC_PCREL16F	77
+#define R_PARISC_PCREL16WF	78
+#define R_PARISC_PCREL16DF	79
+#define R_PARISC_DIR64		80
+#define R_PARISC_DIR14WR	83
+#define R_PARISC_DIR14DR	84
+#define R_PARISC_DIR16F		85
+#define R_PARISC_DIR16WF	86
+#define R_PARISC_DIR16DF	87
+#define R_PARISC_GPREL64	88
+#define R_PARISC_GPREL14WR	91
+#define R_PARISC_GPREL14DR	92
+#define R_PARISC_GPREL16F	93
+#define R_PARISC_GPREL16WF	94
+#define R_PARISC_GPREL16DF	95
+#define R_PARISC_LTOFF64	96
+#define R_PARISC_LTOFF14WR	99
+#define R_PARISC_LTOFF14DR	100
+#define R_PARISC_LTOFF16F	101
+#define R_PARISC_LTOFF16WF	102
+#define R_PARISC_LTOFF16DF	103
+#define R_PARISC_SECREL64	104
+#define R_PARISC_SEGREL64	112
+#define R_PARISC_PLTOFF14WR	115
+#define R_PARISC_PLTOFF14DR	116
+#define R_PARISC_PLTOFF16F	117
+#define R_PARISC_PLTOFF16WF	118
+#define R_PARISC_PLTOFF16DF	119
+#define R_PARISC_LTOFF_FPTR64	120
+#define R_PARISC_LTOFF_FPTR14WR	123
+#define R_PARISC_LTOFF_FPTR14DR	124
+#define R_PARISC_LTOFF_FPTR16F	125
+#define R_PARISC_LTOFF_FPTR16WF	126
+#define R_PARISC_LTOFF_FPTR16DF	127
+#define R_PARISC_LORESERVE	128
+#define R_PARISC_COPY		128
+#define R_PARISC_IPLT		129
+#define R_PARISC_EPLT		130
+#define R_PARISC_TPREL32	153
+#define R_PARISC_TPREL21L	154
+#define R_PARISC_TPREL14R	158
+#define R_PARISC_LTOFF_TP21L	162
+#define R_PARISC_LTOFF_TP14R	166
+#define R_PARISC_LTOFF_TP14F	167
+#define R_PARISC_TPREL64	216
+#define R_PARISC_TPREL14WR	219
+#define R_PARISC_TPREL14DR	220
+#define R_PARISC_TPREL16F	221
+#define R_PARISC_TPREL16WF	222
+#define R_PARISC_TPREL16DF	223
+#define R_PARISC_LTOFF_TP64	224
+#define R_PARISC_LTOFF_TP14WR	227
+#define R_PARISC_LTOFF_TP14DR	228
+#define R_PARISC_LTOFF_TP16F	229
+#define R_PARISC_LTOFF_TP16WF	230
+#define R_PARISC_LTOFF_TP16DF	231
+#define R_PARISC_GNU_VTENTRY	232
+#define R_PARISC_GNU_VTINHERIT	233
+#define R_PARISC_TLS_GD21L	234
+#define R_PARISC_TLS_GD14R	235
+#define R_PARISC_TLS_GDCALL	236
+#define R_PARISC_TLS_LDM21L	237
+#define R_PARISC_TLS_LDM14R	238
+#define R_PARISC_TLS_LDMCALL	239
+#define R_PARISC_TLS_LDO21L	240
+#define R_PARISC_TLS_LDO14R	241
+#define R_PARISC_TLS_DTPMOD32	242
+#define R_PARISC_TLS_DTPMOD64	243
+#define R_PARISC_TLS_DTPOFF32	244
+#define R_PARISC_TLS_DTPOFF64	245
+#define R_PARISC_TLS_LE21L	R_PARISC_TPREL21L
+#define R_PARISC_TLS_LE14R	R_PARISC_TPREL14R
+#define R_PARISC_TLS_IE21L	R_PARISC_LTOFF_TP21L
+#define R_PARISC_TLS_IE14R	R_PARISC_LTOFF_TP14R
+#define R_PARISC_TLS_TPREL32	R_PARISC_TPREL32
+#define R_PARISC_TLS_TPREL64	R_PARISC_TPREL64
+#define R_PARISC_HIRESERVE	255
+
+
+
+#define PT_HP_TLS		(PT_LOOS + 0x0)
+#define PT_HP_CORE_NONE		(PT_LOOS + 0x1)
+#define PT_HP_CORE_VERSION	(PT_LOOS + 0x2)
+#define PT_HP_CORE_KERNEL	(PT_LOOS + 0x3)
+#define PT_HP_CORE_COMM		(PT_LOOS + 0x4)
+#define PT_HP_CORE_PROC		(PT_LOOS + 0x5)
+#define PT_HP_CORE_LOADABLE	(PT_LOOS + 0x6)
+#define PT_HP_CORE_STACK	(PT_LOOS + 0x7)
+#define PT_HP_CORE_SHM		(PT_LOOS + 0x8)
+#define PT_HP_CORE_MMF		(PT_LOOS + 0x9)
+#define PT_HP_PARALLEL		(PT_LOOS + 0x10)
+#define PT_HP_FASTBIND		(PT_LOOS + 0x11)
+#define PT_HP_OPT_ANNOT		(PT_LOOS + 0x12)
+#define PT_HP_HSL_ANNOT		(PT_LOOS + 0x13)
+#define PT_HP_STACK		(PT_LOOS + 0x14)
+
+#define PT_PARISC_ARCHEXT	0x70000000
+#define PT_PARISC_UNWIND	0x70000001
+
+
+
+#define PF_PARISC_SBP		0x08000000
+
+#define PF_HP_PAGE_SIZE		0x00100000
+#define PF_HP_FAR_SHARED	0x00200000
+#define PF_HP_NEAR_SHARED	0x00400000
+#define PF_HP_CODE		0x01000000
+#define PF_HP_MODIFY		0x02000000
+#define PF_HP_LAZYSWAP		0x04000000
+#define PF_HP_SBP		0x08000000
+
+
+
+
+
+
+#define EF_ALPHA_32BIT		1
+#define EF_ALPHA_CANRELAX	2
+
+
+
+
+#define SHT_ALPHA_DEBUG		0x70000001
+#define SHT_ALPHA_REGINFO	0x70000002
+
+
+
+#define SHF_ALPHA_GPREL		0x10000000
+
+
+#define STO_ALPHA_NOPV		0x80
+#define STO_ALPHA_STD_GPLOAD	0x88
+
+
+
+#define R_ALPHA_NONE		0
+#define R_ALPHA_REFLONG		1
+#define R_ALPHA_REFQUAD		2
+#define R_ALPHA_GPREL32		3
+#define R_ALPHA_LITERAL		4
+#define R_ALPHA_LITUSE		5
+#define R_ALPHA_GPDISP		6
+#define R_ALPHA_BRADDR		7
+#define R_ALPHA_HINT		8
+#define R_ALPHA_SREL16		9
+#define R_ALPHA_SREL32		10
+#define R_ALPHA_SREL64		11
+#define R_ALPHA_GPRELHIGH	17
+#define R_ALPHA_GPRELLOW	18
+#define R_ALPHA_GPREL16		19
+#define R_ALPHA_COPY		24
+#define R_ALPHA_GLOB_DAT	25
+#define R_ALPHA_JMP_SLOT	26
+#define R_ALPHA_RELATIVE	27
+#define R_ALPHA_TLS_GD_HI	28
+#define R_ALPHA_TLSGD		29
+#define R_ALPHA_TLS_LDM		30
+#define R_ALPHA_DTPMOD64	31
+#define R_ALPHA_GOTDTPREL	32
+#define R_ALPHA_DTPREL64	33
+#define R_ALPHA_DTPRELHI	34
+#define R_ALPHA_DTPRELLO	35
+#define R_ALPHA_DTPREL16	36
+#define R_ALPHA_GOTTPREL	37
+#define R_ALPHA_TPREL64		38
+#define R_ALPHA_TPRELHI		39
+#define R_ALPHA_TPRELLO		40
+#define R_ALPHA_TPREL16		41
+
+#define R_ALPHA_NUM		46
+
+
+#define LITUSE_ALPHA_ADDR	0
+#define LITUSE_ALPHA_BASE	1
+#define LITUSE_ALPHA_BYTOFF	2
+#define LITUSE_ALPHA_JSR	3
+#define LITUSE_ALPHA_TLS_GD	4
+#define LITUSE_ALPHA_TLS_LDM	5
+
+
+#define DT_ALPHA_PLTRO		(DT_LOPROC + 0)
+#define DT_ALPHA_NUM		1
+
+
+
+
+#define EF_PPC_EMB		0x80000000
+
+
+#define EF_PPC_RELOCATABLE	0x00010000
+#define EF_PPC_RELOCATABLE_LIB	0x00008000
+
+
+
+#define R_PPC_NONE		0
+#define R_PPC_ADDR32		1
+#define R_PPC_ADDR24		2
+#define R_PPC_ADDR16		3
+#define R_PPC_ADDR16_LO		4
+#define R_PPC_ADDR16_HI		5
+#define R_PPC_ADDR16_HA		6
+#define R_PPC_ADDR14		7
+#define R_PPC_ADDR14_BRTAKEN	8
+#define R_PPC_ADDR14_BRNTAKEN	9
+#define R_PPC_REL24		10
+#define R_PPC_REL14		11
+#define R_PPC_REL14_BRTAKEN	12
+#define R_PPC_REL14_BRNTAKEN	13
+#define R_PPC_GOT16		14
+#define R_PPC_GOT16_LO		15
+#define R_PPC_GOT16_HI		16
+#define R_PPC_GOT16_HA		17
+#define R_PPC_PLTREL24		18
+#define R_PPC_COPY		19
+#define R_PPC_GLOB_DAT		20
+#define R_PPC_JMP_SLOT		21
+#define R_PPC_RELATIVE		22
+#define R_PPC_LOCAL24PC		23
+#define R_PPC_UADDR32		24
+#define R_PPC_UADDR16		25
+#define R_PPC_REL32		26
+#define R_PPC_PLT32		27
+#define R_PPC_PLTREL32		28
+#define R_PPC_PLT16_LO		29
+#define R_PPC_PLT16_HI		30
+#define R_PPC_PLT16_HA		31
+#define R_PPC_SDAREL16		32
+#define R_PPC_SECTOFF		33
+#define R_PPC_SECTOFF_LO	34
+#define R_PPC_SECTOFF_HI	35
+#define R_PPC_SECTOFF_HA	36
+
+
+#define R_PPC_TLS		67
+#define R_PPC_DTPMOD32		68
+#define R_PPC_TPREL16		69
+#define R_PPC_TPREL16_LO	70
+#define R_PPC_TPREL16_HI	71
+#define R_PPC_TPREL16_HA	72
+#define R_PPC_TPREL32		73
+#define R_PPC_DTPREL16		74
+#define R_PPC_DTPREL16_LO	75
+#define R_PPC_DTPREL16_HI	76
+#define R_PPC_DTPREL16_HA	77
+#define R_PPC_DTPREL32		78
+#define R_PPC_GOT_TLSGD16	79
+#define R_PPC_GOT_TLSGD16_LO	80
+#define R_PPC_GOT_TLSGD16_HI	81
+#define R_PPC_GOT_TLSGD16_HA	82
+#define R_PPC_GOT_TLSLD16	83
+#define R_PPC_GOT_TLSLD16_LO	84
+#define R_PPC_GOT_TLSLD16_HI	85
+#define R_PPC_GOT_TLSLD16_HA	86
+#define R_PPC_GOT_TPREL16	87
+#define R_PPC_GOT_TPREL16_LO	88
+#define R_PPC_GOT_TPREL16_HI	89
+#define R_PPC_GOT_TPREL16_HA	90
+#define R_PPC_GOT_DTPREL16	91
+#define R_PPC_GOT_DTPREL16_LO	92
+#define R_PPC_GOT_DTPREL16_HI	93
+#define R_PPC_GOT_DTPREL16_HA	94
+#define R_PPC_TLSGD		95
+#define R_PPC_TLSLD		96
+
+
+#define R_PPC_EMB_NADDR32	101
+#define R_PPC_EMB_NADDR16	102
+#define R_PPC_EMB_NADDR16_LO	103
+#define R_PPC_EMB_NADDR16_HI	104
+#define R_PPC_EMB_NADDR16_HA	105
+#define R_PPC_EMB_SDAI16	106
+#define R_PPC_EMB_SDA2I16	107
+#define R_PPC_EMB_SDA2REL	108
+#define R_PPC_EMB_SDA21		109
+#define R_PPC_EMB_MRKREF	110
+#define R_PPC_EMB_RELSEC16	111
+#define R_PPC_EMB_RELST_LO	112
+#define R_PPC_EMB_RELST_HI	113
+#define R_PPC_EMB_RELST_HA	114
+#define R_PPC_EMB_BIT_FLD	115
+#define R_PPC_EMB_RELSDA	116
+
+
+#define R_PPC_DIAB_SDA21_LO	180
+#define R_PPC_DIAB_SDA21_HI	181
+#define R_PPC_DIAB_SDA21_HA	182
+#define R_PPC_DIAB_RELSDA_LO	183
+#define R_PPC_DIAB_RELSDA_HI	184
+#define R_PPC_DIAB_RELSDA_HA	185
+
+
+#define R_PPC_IRELATIVE		248
+
+
+#define R_PPC_REL16		249
+#define R_PPC_REL16_LO		250
+#define R_PPC_REL16_HI		251
+#define R_PPC_REL16_HA		252
+
+
+
+#define R_PPC_TOC16		255
+
+
+#define DT_PPC_GOT		(DT_LOPROC + 0)
+#define DT_PPC_OPT		(DT_LOPROC + 1)
+#define DT_PPC_NUM		2
+
+#define PPC_OPT_TLS		1
+
+
+#define R_PPC64_NONE		R_PPC_NONE
+#define R_PPC64_ADDR32		R_PPC_ADDR32
+#define R_PPC64_ADDR24		R_PPC_ADDR24
+#define R_PPC64_ADDR16		R_PPC_ADDR16
+#define R_PPC64_ADDR16_LO	R_PPC_ADDR16_LO
+#define R_PPC64_ADDR16_HI	R_PPC_ADDR16_HI
+#define R_PPC64_ADDR16_HA	R_PPC_ADDR16_HA
+#define R_PPC64_ADDR14		R_PPC_ADDR14
+#define R_PPC64_ADDR14_BRTAKEN	R_PPC_ADDR14_BRTAKEN
+#define R_PPC64_ADDR14_BRNTAKEN	R_PPC_ADDR14_BRNTAKEN
+#define R_PPC64_REL24		R_PPC_REL24
+#define R_PPC64_REL14		R_PPC_REL14
+#define R_PPC64_REL14_BRTAKEN	R_PPC_REL14_BRTAKEN
+#define R_PPC64_REL14_BRNTAKEN	R_PPC_REL14_BRNTAKEN
+#define R_PPC64_GOT16		R_PPC_GOT16
+#define R_PPC64_GOT16_LO	R_PPC_GOT16_LO
+#define R_PPC64_GOT16_HI	R_PPC_GOT16_HI
+#define R_PPC64_GOT16_HA	R_PPC_GOT16_HA
+
+#define R_PPC64_COPY		R_PPC_COPY
+#define R_PPC64_GLOB_DAT	R_PPC_GLOB_DAT
+#define R_PPC64_JMP_SLOT	R_PPC_JMP_SLOT
+#define R_PPC64_RELATIVE	R_PPC_RELATIVE
+
+#define R_PPC64_UADDR32		R_PPC_UADDR32
+#define R_PPC64_UADDR16		R_PPC_UADDR16
+#define R_PPC64_REL32		R_PPC_REL32
+#define R_PPC64_PLT32		R_PPC_PLT32
+#define R_PPC64_PLTREL32	R_PPC_PLTREL32
+#define R_PPC64_PLT16_LO	R_PPC_PLT16_LO
+#define R_PPC64_PLT16_HI	R_PPC_PLT16_HI
+#define R_PPC64_PLT16_HA	R_PPC_PLT16_HA
+
+#define R_PPC64_SECTOFF		R_PPC_SECTOFF
+#define R_PPC64_SECTOFF_LO	R_PPC_SECTOFF_LO
+#define R_PPC64_SECTOFF_HI	R_PPC_SECTOFF_HI
+#define R_PPC64_SECTOFF_HA	R_PPC_SECTOFF_HA
+#define R_PPC64_ADDR30		37
+#define R_PPC64_ADDR64		38
+#define R_PPC64_ADDR16_HIGHER	39
+#define R_PPC64_ADDR16_HIGHERA	40
+#define R_PPC64_ADDR16_HIGHEST	41
+#define R_PPC64_ADDR16_HIGHESTA	42
+#define R_PPC64_UADDR64		43
+#define R_PPC64_REL64		44
+#define R_PPC64_PLT64		45
+#define R_PPC64_PLTREL64	46
+#define R_PPC64_TOC16		47
+#define R_PPC64_TOC16_LO	48
+#define R_PPC64_TOC16_HI	49
+#define R_PPC64_TOC16_HA	50
+#define R_PPC64_TOC		51
+#define R_PPC64_PLTGOT16	52
+#define R_PPC64_PLTGOT16_LO	53
+#define R_PPC64_PLTGOT16_HI	54
+#define R_PPC64_PLTGOT16_HA	55
+
+#define R_PPC64_ADDR16_DS	56
+#define R_PPC64_ADDR16_LO_DS	57
+#define R_PPC64_GOT16_DS	58
+#define R_PPC64_GOT16_LO_DS	59
+#define R_PPC64_PLT16_LO_DS	60
+#define R_PPC64_SECTOFF_DS	61
+#define R_PPC64_SECTOFF_LO_DS	62
+#define R_PPC64_TOC16_DS	63
+#define R_PPC64_TOC16_LO_DS	64
+#define R_PPC64_PLTGOT16_DS	65
+#define R_PPC64_PLTGOT16_LO_DS	66
+
+
+#define R_PPC64_TLS		67
+#define R_PPC64_DTPMOD64	68
+#define R_PPC64_TPREL16		69
+#define R_PPC64_TPREL16_LO	70
+#define R_PPC64_TPREL16_HI	71
+#define R_PPC64_TPREL16_HA	72
+#define R_PPC64_TPREL64		73
+#define R_PPC64_DTPREL16	74
+#define R_PPC64_DTPREL16_LO	75
+#define R_PPC64_DTPREL16_HI	76
+#define R_PPC64_DTPREL16_HA	77
+#define R_PPC64_DTPREL64	78
+#define R_PPC64_GOT_TLSGD16	79
+#define R_PPC64_GOT_TLSGD16_LO	80
+#define R_PPC64_GOT_TLSGD16_HI	81
+#define R_PPC64_GOT_TLSGD16_HA	82
+#define R_PPC64_GOT_TLSLD16	83
+#define R_PPC64_GOT_TLSLD16_LO	84
+#define R_PPC64_GOT_TLSLD16_HI	85
+#define R_PPC64_GOT_TLSLD16_HA	86
+#define R_PPC64_GOT_TPREL16_DS	87
+#define R_PPC64_GOT_TPREL16_LO_DS 88
+#define R_PPC64_GOT_TPREL16_HI	89
+#define R_PPC64_GOT_TPREL16_HA	90
+#define R_PPC64_GOT_DTPREL16_DS	91
+#define R_PPC64_GOT_DTPREL16_LO_DS 92
+#define R_PPC64_GOT_DTPREL16_HI	93
+#define R_PPC64_GOT_DTPREL16_HA	94
+#define R_PPC64_TPREL16_DS	95
+#define R_PPC64_TPREL16_LO_DS	96
+#define R_PPC64_TPREL16_HIGHER	97
+#define R_PPC64_TPREL16_HIGHERA	98
+#define R_PPC64_TPREL16_HIGHEST	99
+#define R_PPC64_TPREL16_HIGHESTA 100
+#define R_PPC64_DTPREL16_DS	101
+#define R_PPC64_DTPREL16_LO_DS	102
+#define R_PPC64_DTPREL16_HIGHER	103
+#define R_PPC64_DTPREL16_HIGHERA 104
+#define R_PPC64_DTPREL16_HIGHEST 105
+#define R_PPC64_DTPREL16_HIGHESTA 106
+#define R_PPC64_TLSGD		107
+#define R_PPC64_TLSLD		108
+#define R_PPC64_TOCSAVE		109
+#define R_PPC64_ADDR16_HIGH	110
+#define R_PPC64_ADDR16_HIGHA	111
+#define R_PPC64_TPREL16_HIGH	112
+#define R_PPC64_TPREL16_HIGHA	113
+#define R_PPC64_DTPREL16_HIGH	114
+#define R_PPC64_DTPREL16_HIGHA	115
+
+
+#define R_PPC64_JMP_IREL	247
+#define R_PPC64_IRELATIVE	248
+#define R_PPC64_REL16		249
+#define R_PPC64_REL16_LO	250
+#define R_PPC64_REL16_HI	251
+#define R_PPC64_REL16_HA	252
+
+#define EF_PPC64_ABI	3
+
+#define DT_PPC64_GLINK  (DT_LOPROC + 0)
+#define DT_PPC64_OPD	(DT_LOPROC + 1)
+#define DT_PPC64_OPDSZ	(DT_LOPROC + 2)
+#define DT_PPC64_OPT	(DT_LOPROC + 3)
+#define DT_PPC64_NUM	4
+
+#define PPC64_OPT_TLS		1
+#define PPC64_OPT_MULTI_TOC	2
+#define PPC64_OPT_LOCALENTRY	4
+
+#define STO_PPC64_LOCAL_BIT	5
+#define STO_PPC64_LOCAL_MASK	0xe0
+#define PPC64_LOCAL_ENTRY_OFFSET(x) (1 << (((x)&0xe0)>>5) & 0xfc)
+
+
+#define EF_ARM_RELEXEC		0x01
+#define EF_ARM_HASENTRY		0x02
+#define EF_ARM_INTERWORK	0x04
+#define EF_ARM_APCS_26		0x08
+#define EF_ARM_APCS_FLOAT	0x10
+#define EF_ARM_PIC		0x20
+#define EF_ARM_ALIGN8		0x40
+#define EF_ARM_NEW_ABI		0x80
+#define EF_ARM_OLD_ABI		0x100
+#define EF_ARM_SOFT_FLOAT	0x200
+#define EF_ARM_VFP_FLOAT	0x400
+#define EF_ARM_MAVERICK_FLOAT	0x800
+
+#define EF_ARM_ABI_FLOAT_SOFT	0x200
+#define EF_ARM_ABI_FLOAT_HARD	0x400
+
+
+#define EF_ARM_SYMSARESORTED	0x04
+#define EF_ARM_DYNSYMSUSESEGIDX	0x08
+#define EF_ARM_MAPSYMSFIRST	0x10
+#define EF_ARM_EABIMASK		0XFF000000
+
+
+#define EF_ARM_BE8	    0x00800000
+#define EF_ARM_LE8	    0x00400000
+
+#define EF_ARM_EABI_VERSION(flags)	((flags) & EF_ARM_EABIMASK)
+#define EF_ARM_EABI_UNKNOWN	0x00000000
+#define EF_ARM_EABI_VER1	0x01000000
+#define EF_ARM_EABI_VER2	0x02000000
+#define EF_ARM_EABI_VER3	0x03000000
+#define EF_ARM_EABI_VER4	0x04000000
+#define EF_ARM_EABI_VER5	0x05000000
+
+
+#define STT_ARM_TFUNC		STT_LOPROC
+#define STT_ARM_16BIT		STT_HIPROC
+
+
+#define SHF_ARM_ENTRYSECT	0x10000000
+#define SHF_ARM_COMDEF		0x80000000
+
+
+
+#define PF_ARM_SB		0x10000000
+
+#define PF_ARM_PI		0x20000000
+#define PF_ARM_ABS		0x40000000
+
+
+#define PT_ARM_EXIDX		(PT_LOPROC + 1)
+
+
+#define SHT_ARM_EXIDX		(SHT_LOPROC + 1)
+#define SHT_ARM_PREEMPTMAP	(SHT_LOPROC + 2)
+#define SHT_ARM_ATTRIBUTES	(SHT_LOPROC + 3)
+
+#define R_AARCH64_NONE            0
+#define R_AARCH64_P32_ABS32	1
+#define R_AARCH64_P32_COPY	180
+#define R_AARCH64_P32_GLOB_DAT	181
+#define R_AARCH64_P32_JUMP_SLOT	182
+#define R_AARCH64_P32_RELATIVE	183
+#define R_AARCH64_P32_TLS_DTPMOD 184
+#define R_AARCH64_P32_TLS_DTPREL 185
+#define R_AARCH64_P32_TLS_TPREL	186
+#define R_AARCH64_P32_TLSDESC	187
+#define R_AARCH64_P32_IRELATIVE	188
+#define R_AARCH64_ABS64         257
+#define R_AARCH64_ABS32         258
+#define R_AARCH64_ABS16		259
+#define R_AARCH64_PREL64	260
+#define R_AARCH64_PREL32	261
+#define R_AARCH64_PREL16	262
+#define R_AARCH64_MOVW_UABS_G0	263
+#define R_AARCH64_MOVW_UABS_G0_NC 264
+#define R_AARCH64_MOVW_UABS_G1	265
+#define R_AARCH64_MOVW_UABS_G1_NC 266
+#define R_AARCH64_MOVW_UABS_G2	267
+#define R_AARCH64_MOVW_UABS_G2_NC 268
+#define R_AARCH64_MOVW_UABS_G3	269
+#define R_AARCH64_MOVW_SABS_G0	270
+#define R_AARCH64_MOVW_SABS_G1	271
+#define R_AARCH64_MOVW_SABS_G2	272
+#define R_AARCH64_LD_PREL_LO19	273
+#define R_AARCH64_ADR_PREL_LO21	274
+#define R_AARCH64_ADR_PREL_PG_HI21 275
+#define R_AARCH64_ADR_PREL_PG_HI21_NC 276
+#define R_AARCH64_ADD_ABS_LO12_NC 277
+#define R_AARCH64_LDST8_ABS_LO12_NC 278
+#define R_AARCH64_TSTBR14	279
+#define R_AARCH64_CONDBR19	280
+#define R_AARCH64_JUMP26	282
+#define R_AARCH64_CALL26	283
+#define R_AARCH64_LDST16_ABS_LO12_NC 284
+#define R_AARCH64_LDST32_ABS_LO12_NC 285
+#define R_AARCH64_LDST64_ABS_LO12_NC 286
+#define R_AARCH64_MOVW_PREL_G0	287
+#define R_AARCH64_MOVW_PREL_G0_NC 288
+#define R_AARCH64_MOVW_PREL_G1	289
+#define R_AARCH64_MOVW_PREL_G1_NC 290
+#define R_AARCH64_MOVW_PREL_G2	291
+#define R_AARCH64_MOVW_PREL_G2_NC 292
+#define R_AARCH64_MOVW_PREL_G3	293
+#define R_AARCH64_LDST128_ABS_LO12_NC 299
+#define R_AARCH64_MOVW_GOTOFF_G0 300
+#define R_AARCH64_MOVW_GOTOFF_G0_NC 301
+#define R_AARCH64_MOVW_GOTOFF_G1 302
+#define R_AARCH64_MOVW_GOTOFF_G1_NC 303
+#define R_AARCH64_MOVW_GOTOFF_G2 304
+#define R_AARCH64_MOVW_GOTOFF_G2_NC 305
+#define R_AARCH64_MOVW_GOTOFF_G3 306
+#define R_AARCH64_GOTREL64	307
+#define R_AARCH64_GOTREL32	308
+#define R_AARCH64_GOT_LD_PREL19	309
+#define R_AARCH64_LD64_GOTOFF_LO15 310
+#define R_AARCH64_ADR_GOT_PAGE	311
+#define R_AARCH64_LD64_GOT_LO12_NC 312
+#define R_AARCH64_LD64_GOTPAGE_LO15 313
+#define R_AARCH64_TLSGD_ADR_PREL21 512
+#define R_AARCH64_TLSGD_ADR_PAGE21 513
+#define R_AARCH64_TLSGD_ADD_LO12_NC 514
+#define R_AARCH64_TLSGD_MOVW_G1	515
+#define R_AARCH64_TLSGD_MOVW_G0_NC 516
+#define R_AARCH64_TLSLD_ADR_PREL21 517
+#define R_AARCH64_TLSLD_ADR_PAGE21 518
+#define R_AARCH64_TLSLD_ADD_LO12_NC 519
+#define R_AARCH64_TLSLD_MOVW_G1	520
+#define R_AARCH64_TLSLD_MOVW_G0_NC 521
+#define R_AARCH64_TLSLD_LD_PREL19 522
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G2 523
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G1 524
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC 525
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G0 526
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC 527
+#define R_AARCH64_TLSLD_ADD_DTPREL_HI12 528
+#define R_AARCH64_TLSLD_ADD_DTPREL_LO12 529
+#define R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC 530
+#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12 531
+#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC 532
+#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12 533
+#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC 534
+#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12 535
+#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC 536
+#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12 537
+#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC 538
+#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 539
+#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC 540
+#define R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 541
+#define R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC 542
+#define R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 543
+#define R_AARCH64_TLSLE_MOVW_TPREL_G2 544
+#define R_AARCH64_TLSLE_MOVW_TPREL_G1 545
+#define R_AARCH64_TLSLE_MOVW_TPREL_G1_NC 546
+#define R_AARCH64_TLSLE_MOVW_TPREL_G0 547
+#define R_AARCH64_TLSLE_MOVW_TPREL_G0_NC 548
+#define R_AARCH64_TLSLE_ADD_TPREL_HI12 549
+#define R_AARCH64_TLSLE_ADD_TPREL_LO12 550
+#define R_AARCH64_TLSLE_ADD_TPREL_LO12_NC 551
+#define R_AARCH64_TLSLE_LDST8_TPREL_LO12 552
+#define R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC 553
+#define R_AARCH64_TLSLE_LDST16_TPREL_LO12 554
+#define R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC 555
+#define R_AARCH64_TLSLE_LDST32_TPREL_LO12 556
+#define R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC 557
+#define R_AARCH64_TLSLE_LDST64_TPREL_LO12 558
+#define R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC 559
+#define R_AARCH64_TLSDESC_LD_PREL19 560
+#define R_AARCH64_TLSDESC_ADR_PREL21 561
+#define R_AARCH64_TLSDESC_ADR_PAGE21 562
+#define R_AARCH64_TLSDESC_LD64_LO12 563
+#define R_AARCH64_TLSDESC_ADD_LO12 564
+#define R_AARCH64_TLSDESC_OFF_G1 565
+#define R_AARCH64_TLSDESC_OFF_G0_NC 566
+#define R_AARCH64_TLSDESC_LDR	567
+#define R_AARCH64_TLSDESC_ADD	568
+#define R_AARCH64_TLSDESC_CALL	569
+#define R_AARCH64_TLSLE_LDST128_TPREL_LO12 570
+#define R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC 571
+#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12 572
+#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC 573
+#define R_AARCH64_COPY         1024
+#define R_AARCH64_GLOB_DAT     1025
+#define R_AARCH64_JUMP_SLOT    1026
+#define R_AARCH64_RELATIVE     1027
+#define R_AARCH64_TLS_DTPMOD   1028
+#define R_AARCH64_TLS_DTPMOD64 1028
+#define R_AARCH64_TLS_DTPREL   1029
+#define R_AARCH64_TLS_DTPREL64 1029
+#define R_AARCH64_TLS_TPREL    1030
+#define R_AARCH64_TLS_TPREL64  1030
+#define R_AARCH64_TLSDESC      1031
+
+
+#define R_ARM_NONE		0
+#define R_ARM_PC24		1
+#define R_ARM_ABS32		2
+#define R_ARM_REL32		3
+#define R_ARM_PC13		4
+#define R_ARM_ABS16		5
+#define R_ARM_ABS12		6
+#define R_ARM_THM_ABS5		7
+#define R_ARM_ABS8		8
+#define R_ARM_SBREL32		9
+#define R_ARM_THM_PC22		10
+#define R_ARM_THM_PC8		11
+#define R_ARM_AMP_VCALL9	12
+#define R_ARM_TLS_DESC		13
+#define R_ARM_THM_SWI8		14
+#define R_ARM_XPC25		15
+#define R_ARM_THM_XPC22		16
+#define R_ARM_TLS_DTPMOD32	17
+#define R_ARM_TLS_DTPOFF32	18
+#define R_ARM_TLS_TPOFF32	19
+#define R_ARM_COPY		20
+#define R_ARM_GLOB_DAT		21
+#define R_ARM_JUMP_SLOT		22
+#define R_ARM_RELATIVE		23
+#define R_ARM_GOTOFF		24
+#define R_ARM_GOTPC		25
+#define R_ARM_GOT32		26
+#define R_ARM_PLT32		27
+#define R_ARM_CALL		28
+#define R_ARM_JUMP24		29
+#define R_ARM_THM_JUMP24	30
+#define R_ARM_BASE_ABS		31
+#define R_ARM_ALU_PCREL_7_0	32
+#define R_ARM_ALU_PCREL_15_8	33
+#define R_ARM_ALU_PCREL_23_15	34
+#define R_ARM_LDR_SBREL_11_0	35
+#define R_ARM_ALU_SBREL_19_12	36
+#define R_ARM_ALU_SBREL_27_20	37
+#define R_ARM_TARGET1		38
+#define R_ARM_SBREL31		39
+#define R_ARM_V4BX		40
+#define R_ARM_TARGET2		41
+#define R_ARM_PREL31		42
+#define R_ARM_MOVW_ABS_NC	43
+#define R_ARM_MOVT_ABS		44
+#define R_ARM_MOVW_PREL_NC	45
+#define R_ARM_MOVT_PREL		46
+#define R_ARM_THM_MOVW_ABS_NC	47
+#define R_ARM_THM_MOVT_ABS	48
+#define R_ARM_THM_MOVW_PREL_NC	49
+#define R_ARM_THM_MOVT_PREL	50
+#define R_ARM_THM_JUMP19	51
+#define R_ARM_THM_JUMP6		52
+#define R_ARM_THM_ALU_PREL_11_0	53
+#define R_ARM_THM_PC12		54
+#define R_ARM_ABS32_NOI		55
+#define R_ARM_REL32_NOI		56
+#define R_ARM_ALU_PC_G0_NC	57
+#define R_ARM_ALU_PC_G0		58
+#define R_ARM_ALU_PC_G1_NC	59
+#define R_ARM_ALU_PC_G1		60
+#define R_ARM_ALU_PC_G2		61
+#define R_ARM_LDR_PC_G1		62
+#define R_ARM_LDR_PC_G2		63
+#define R_ARM_LDRS_PC_G0	64
+#define R_ARM_LDRS_PC_G1	65
+#define R_ARM_LDRS_PC_G2	66
+#define R_ARM_LDC_PC_G0		67
+#define R_ARM_LDC_PC_G1		68
+#define R_ARM_LDC_PC_G2		69
+#define R_ARM_ALU_SB_G0_NC	70
+#define R_ARM_ALU_SB_G0		71
+#define R_ARM_ALU_SB_G1_NC	72
+#define R_ARM_ALU_SB_G1		73
+#define R_ARM_ALU_SB_G2		74
+#define R_ARM_LDR_SB_G0		75
+#define R_ARM_LDR_SB_G1		76
+#define R_ARM_LDR_SB_G2		77
+#define R_ARM_LDRS_SB_G0	78
+#define R_ARM_LDRS_SB_G1	79
+#define R_ARM_LDRS_SB_G2	80
+#define R_ARM_LDC_SB_G0		81
+#define R_ARM_LDC_SB_G1		82
+#define R_ARM_LDC_SB_G2		83
+#define R_ARM_MOVW_BREL_NC	84
+#define R_ARM_MOVT_BREL		85
+#define R_ARM_MOVW_BREL		86
+#define R_ARM_THM_MOVW_BREL_NC	87
+#define R_ARM_THM_MOVT_BREL	88
+#define R_ARM_THM_MOVW_BREL	89
+#define R_ARM_TLS_GOTDESC	90
+#define R_ARM_TLS_CALL		91
+#define R_ARM_TLS_DESCSEQ	92
+#define R_ARM_THM_TLS_CALL	93
+#define R_ARM_PLT32_ABS		94
+#define R_ARM_GOT_ABS		95
+#define R_ARM_GOT_PREL		96
+#define R_ARM_GOT_BREL12	97
+#define R_ARM_GOTOFF12		98
+#define R_ARM_GOTRELAX		99
+#define R_ARM_GNU_VTENTRY	100
+#define R_ARM_GNU_VTINHERIT	101
+#define R_ARM_THM_PC11		102
+#define R_ARM_THM_PC9		103
+#define R_ARM_TLS_GD32		104
+
+#define R_ARM_TLS_LDM32		105
+
+#define R_ARM_TLS_LDO32		106
+
+#define R_ARM_TLS_IE32		107
+
+#define R_ARM_TLS_LE32		108
+#define R_ARM_TLS_LDO12		109
+#define R_ARM_TLS_LE12		110
+#define R_ARM_TLS_IE12GP	111
+#define R_ARM_ME_TOO		128
+#define R_ARM_THM_TLS_DESCSEQ	129
+#define R_ARM_THM_TLS_DESCSEQ16	129
+#define R_ARM_THM_TLS_DESCSEQ32	130
+#define R_ARM_THM_GOT_BREL12	131
+#define R_ARM_IRELATIVE		160
+#define R_ARM_RXPC25		249
+#define R_ARM_RSBREL32		250
+#define R_ARM_THM_RPC22		251
+#define R_ARM_RREL32		252
+#define R_ARM_RABS22		253
+#define R_ARM_RPC24		254
+#define R_ARM_RBASE		255
+
+#define R_ARM_NUM		256
+
+
+#define R_CKCORE_NONE               0
+#define R_CKCORE_ADDR32             1
+#define R_CKCORE_PCRELIMM8BY4       2
+#define R_CKCORE_PCRELIMM11BY2      3
+#define R_CKCORE_PCREL32            5
+#define R_CKCORE_PCRELJSR_IMM11BY2  6
+#define R_CKCORE_RELATIVE           9
+#define R_CKCORE_COPY               10
+#define R_CKCORE_GLOB_DAT           11
+#define R_CKCORE_JUMP_SLOT          12
+#define R_CKCORE_GOTOFF             13
+#define R_CKCORE_GOTPC              14
+#define R_CKCORE_GOT32              15
+#define R_CKCORE_PLT32              16
+#define R_CKCORE_ADDRGOT            17
+#define R_CKCORE_ADDRPLT            18
+#define R_CKCORE_PCREL_IMM26BY2     19
+#define R_CKCORE_PCREL_IMM16BY2     20
+#define R_CKCORE_PCREL_IMM16BY4     21
+#define R_CKCORE_PCREL_IMM10BY2     22
+#define R_CKCORE_PCREL_IMM10BY4     23
+#define R_CKCORE_ADDR_HI16          24
+#define R_CKCORE_ADDR_LO16          25
+#define R_CKCORE_GOTPC_HI16         26
+#define R_CKCORE_GOTPC_LO16         27
+#define R_CKCORE_GOTOFF_HI16        28
+#define R_CKCORE_GOTOFF_LO16        29
+#define R_CKCORE_GOT12              30
+#define R_CKCORE_GOT_HI16           31
+#define R_CKCORE_GOT_LO16           32
+#define R_CKCORE_PLT12              33
+#define R_CKCORE_PLT_HI16           34
+#define R_CKCORE_PLT_LO16           35
+#define R_CKCORE_ADDRGOT_HI16       36
+#define R_CKCORE_ADDRGOT_LO16       37
+#define R_CKCORE_ADDRPLT_HI16       38
+#define R_CKCORE_ADDRPLT_LO16       39
+#define R_CKCORE_PCREL_JSR_IMM26BY2 40
+#define R_CKCORE_TOFFSET_LO16       41
+#define R_CKCORE_DOFFSET_LO16       42
+#define R_CKCORE_PCREL_IMM18BY2     43
+#define R_CKCORE_DOFFSET_IMM18      44
+#define R_CKCORE_DOFFSET_IMM18BY2   45
+#define R_CKCORE_DOFFSET_IMM18BY4   46
+#define R_CKCORE_GOT_IMM18BY4       48
+#define R_CKCORE_PLT_IMM18BY4       49
+#define R_CKCORE_PCREL_IMM7BY4      50
+#define R_CKCORE_TLS_LE32           51
+#define R_CKCORE_TLS_IE32           52
+#define R_CKCORE_TLS_GD32           53
+#define R_CKCORE_TLS_LDM32          54
+#define R_CKCORE_TLS_LDO32          55
+#define R_CKCORE_TLS_DTPMOD32       56
+#define R_CKCORE_TLS_DTPOFF32       57
+#define R_CKCORE_TLS_TPOFF32        58
+
+
+#define EF_IA_64_MASKOS		0x0000000f
+#define EF_IA_64_ABI64		0x00000010
+#define EF_IA_64_ARCH		0xff000000
+
+
+#define PT_IA_64_ARCHEXT	(PT_LOPROC + 0)
+#define PT_IA_64_UNWIND		(PT_LOPROC + 1)
+#define PT_IA_64_HP_OPT_ANOT	(PT_LOOS + 0x12)
+#define PT_IA_64_HP_HSL_ANOT	(PT_LOOS + 0x13)
+#define PT_IA_64_HP_STACK	(PT_LOOS + 0x14)
+
+
+#define PF_IA_64_NORECOV	0x80000000
+
+
+#define SHT_IA_64_EXT		(SHT_LOPROC + 0)
+#define SHT_IA_64_UNWIND	(SHT_LOPROC + 1)
+
+
+#define SHF_IA_64_SHORT		0x10000000
+#define SHF_IA_64_NORECOV	0x20000000
+
+
+#define DT_IA_64_PLT_RESERVE	(DT_LOPROC + 0)
+#define DT_IA_64_NUM		1
+
+
+#define R_IA64_NONE		0x00
+#define R_IA64_IMM14		0x21
+#define R_IA64_IMM22		0x22
+#define R_IA64_IMM64		0x23
+#define R_IA64_DIR32MSB		0x24
+#define R_IA64_DIR32LSB		0x25
+#define R_IA64_DIR64MSB		0x26
+#define R_IA64_DIR64LSB		0x27
+#define R_IA64_GPREL22		0x2a
+#define R_IA64_GPREL64I		0x2b
+#define R_IA64_GPREL32MSB	0x2c
+#define R_IA64_GPREL32LSB	0x2d
+#define R_IA64_GPREL64MSB	0x2e
+#define R_IA64_GPREL64LSB	0x2f
+#define R_IA64_LTOFF22		0x32
+#define R_IA64_LTOFF64I		0x33
+#define R_IA64_PLTOFF22		0x3a
+#define R_IA64_PLTOFF64I	0x3b
+#define R_IA64_PLTOFF64MSB	0x3e
+#define R_IA64_PLTOFF64LSB	0x3f
+#define R_IA64_FPTR64I		0x43
+#define R_IA64_FPTR32MSB	0x44
+#define R_IA64_FPTR32LSB	0x45
+#define R_IA64_FPTR64MSB	0x46
+#define R_IA64_FPTR64LSB	0x47
+#define R_IA64_PCREL60B		0x48
+#define R_IA64_PCREL21B		0x49
+#define R_IA64_PCREL21M		0x4a
+#define R_IA64_PCREL21F		0x4b
+#define R_IA64_PCREL32MSB	0x4c
+#define R_IA64_PCREL32LSB	0x4d
+#define R_IA64_PCREL64MSB	0x4e
+#define R_IA64_PCREL64LSB	0x4f
+#define R_IA64_LTOFF_FPTR22	0x52
+#define R_IA64_LTOFF_FPTR64I	0x53
+#define R_IA64_LTOFF_FPTR32MSB	0x54
+#define R_IA64_LTOFF_FPTR32LSB	0x55
+#define R_IA64_LTOFF_FPTR64MSB	0x56
+#define R_IA64_LTOFF_FPTR64LSB	0x57
+#define R_IA64_SEGREL32MSB	0x5c
+#define R_IA64_SEGREL32LSB	0x5d
+#define R_IA64_SEGREL64MSB	0x5e
+#define R_IA64_SEGREL64LSB	0x5f
+#define R_IA64_SECREL32MSB	0x64
+#define R_IA64_SECREL32LSB	0x65
+#define R_IA64_SECREL64MSB	0x66
+#define R_IA64_SECREL64LSB	0x67
+#define R_IA64_REL32MSB		0x6c
+#define R_IA64_REL32LSB		0x6d
+#define R_IA64_REL64MSB		0x6e
+#define R_IA64_REL64LSB		0x6f
+#define R_IA64_LTV32MSB		0x74
+#define R_IA64_LTV32LSB		0x75
+#define R_IA64_LTV64MSB		0x76
+#define R_IA64_LTV64LSB		0x77
+#define R_IA64_PCREL21BI	0x79
+#define R_IA64_PCREL22		0x7a
+#define R_IA64_PCREL64I		0x7b
+#define R_IA64_IPLTMSB		0x80
+#define R_IA64_IPLTLSB		0x81
+#define R_IA64_COPY		0x84
+#define R_IA64_SUB		0x85
+#define R_IA64_LTOFF22X		0x86
+#define R_IA64_LDXMOV		0x87
+#define R_IA64_TPREL14		0x91
+#define R_IA64_TPREL22		0x92
+#define R_IA64_TPREL64I		0x93
+#define R_IA64_TPREL64MSB	0x96
+#define R_IA64_TPREL64LSB	0x97
+#define R_IA64_LTOFF_TPREL22	0x9a
+#define R_IA64_DTPMOD64MSB	0xa6
+#define R_IA64_DTPMOD64LSB	0xa7
+#define R_IA64_LTOFF_DTPMOD22	0xaa
+#define R_IA64_DTPREL14		0xb1
+#define R_IA64_DTPREL22		0xb2
+#define R_IA64_DTPREL64I	0xb3
+#define R_IA64_DTPREL32MSB	0xb4
+#define R_IA64_DTPREL32LSB	0xb5
+#define R_IA64_DTPREL64MSB	0xb6
+#define R_IA64_DTPREL64LSB	0xb7
+#define R_IA64_LTOFF_DTPREL22	0xba
+
+
+#define EF_SH_MACH_MASK		0x1f
+#define EF_SH_UNKNOWN		0x0
+#define EF_SH1			0x1
+#define EF_SH2			0x2
+#define EF_SH3			0x3
+#define EF_SH_DSP		0x4
+#define EF_SH3_DSP		0x5
+#define EF_SH4AL_DSP		0x6
+#define EF_SH3E			0x8
+#define EF_SH4			0x9
+#define EF_SH2E			0xb
+#define EF_SH4A			0xc
+#define EF_SH2A			0xd
+#define EF_SH4_NOFPU		0x10
+#define EF_SH4A_NOFPU		0x11
+#define EF_SH4_NOMMU_NOFPU	0x12
+#define EF_SH2A_NOFPU		0x13
+#define EF_SH3_NOMMU		0x14
+#define EF_SH2A_SH4_NOFPU	0x15
+#define EF_SH2A_SH3_NOFPU	0x16
+#define EF_SH2A_SH4		0x17
+#define EF_SH2A_SH3E		0x18
+
+#define	R_SH_NONE		0
+#define	R_SH_DIR32		1
+#define	R_SH_REL32		2
+#define	R_SH_DIR8WPN		3
+#define	R_SH_IND12W		4
+#define	R_SH_DIR8WPL		5
+#define	R_SH_DIR8WPZ		6
+#define	R_SH_DIR8BP		7
+#define	R_SH_DIR8W		8
+#define	R_SH_DIR8L		9
+#define	R_SH_SWITCH16		25
+#define	R_SH_SWITCH32		26
+#define	R_SH_USES		27
+#define	R_SH_COUNT		28
+#define	R_SH_ALIGN		29
+#define	R_SH_CODE		30
+#define	R_SH_DATA		31
+#define	R_SH_LABEL		32
+#define	R_SH_SWITCH8		33
+#define	R_SH_GNU_VTINHERIT	34
+#define	R_SH_GNU_VTENTRY	35
+#define	R_SH_TLS_GD_32		144
+#define	R_SH_TLS_LD_32		145
+#define	R_SH_TLS_LDO_32		146
+#define	R_SH_TLS_IE_32		147
+#define	R_SH_TLS_LE_32		148
+#define	R_SH_TLS_DTPMOD32	149
+#define	R_SH_TLS_DTPOFF32	150
+#define	R_SH_TLS_TPOFF32	151
+#define	R_SH_GOT32		160
+#define	R_SH_PLT32		161
+#define	R_SH_COPY		162
+#define	R_SH_GLOB_DAT		163
+#define	R_SH_JMP_SLOT		164
+#define	R_SH_RELATIVE		165
+#define	R_SH_GOTOFF		166
+#define	R_SH_GOTPC		167
+#define	R_SH_GOT20		201
+#define	R_SH_GOTOFF20		202
+#define	R_SH_GOTFUNCDESC	203
+#define	R_SH_GOTFUNCDEST20	204
+#define	R_SH_GOTOFFFUNCDESC	205
+#define	R_SH_GOTOFFFUNCDEST20	206
+#define	R_SH_FUNCDESC		207
+#define	R_SH_FUNCDESC_VALUE	208
+
+#define	R_SH_NUM		256
+
+
+
+#define R_390_NONE		0
+#define R_390_8			1
+#define R_390_12		2
+#define R_390_16		3
+#define R_390_32		4
+#define R_390_PC32		5
+#define R_390_GOT12		6
+#define R_390_GOT32		7
+#define R_390_PLT32		8
+#define R_390_COPY		9
+#define R_390_GLOB_DAT		10
+#define R_390_JMP_SLOT		11
+#define R_390_RELATIVE		12
+#define R_390_GOTOFF32		13
+#define R_390_GOTPC		14
+#define R_390_GOT16		15
+#define R_390_PC16		16
+#define R_390_PC16DBL		17
+#define R_390_PLT16DBL		18
+#define R_390_PC32DBL		19
+#define R_390_PLT32DBL		20
+#define R_390_GOTPCDBL		21
+#define R_390_64		22
+#define R_390_PC64		23
+#define R_390_GOT64		24
+#define R_390_PLT64		25
+#define R_390_GOTENT		26
+#define R_390_GOTOFF16		27
+#define R_390_GOTOFF64		28
+#define R_390_GOTPLT12		29
+#define R_390_GOTPLT16		30
+#define R_390_GOTPLT32		31
+#define R_390_GOTPLT64		32
+#define R_390_GOTPLTENT		33
+#define R_390_PLTOFF16		34
+#define R_390_PLTOFF32		35
+#define R_390_PLTOFF64		36
+#define R_390_TLS_LOAD		37
+#define R_390_TLS_GDCALL	38
+
+#define R_390_TLS_LDCALL	39
+
+#define R_390_TLS_GD32		40
+
+#define R_390_TLS_GD64		41
+
+#define R_390_TLS_GOTIE12	42
+
+#define R_390_TLS_GOTIE32	43
+
+#define R_390_TLS_GOTIE64	44
+
+#define R_390_TLS_LDM32		45
+
+#define R_390_TLS_LDM64		46
+
+#define R_390_TLS_IE32		47
+
+#define R_390_TLS_IE64		48
+
+#define R_390_TLS_IEENT		49
+
+#define R_390_TLS_LE32		50
+
+#define R_390_TLS_LE64		51
+
+#define R_390_TLS_LDO32		52
+
+#define R_390_TLS_LDO64		53
+
+#define R_390_TLS_DTPMOD	54
+#define R_390_TLS_DTPOFF	55
+#define R_390_TLS_TPOFF		56
+
+#define R_390_20		57
+#define R_390_GOT20		58
+#define R_390_GOTPLT20		59
+#define R_390_TLS_GOTIE20	60
+
+
+#define R_390_NUM		61
+
+
+
+#define R_CRIS_NONE		0
+#define R_CRIS_8		1
+#define R_CRIS_16		2
+#define R_CRIS_32		3
+#define R_CRIS_8_PCREL		4
+#define R_CRIS_16_PCREL		5
+#define R_CRIS_32_PCREL		6
+#define R_CRIS_GNU_VTINHERIT	7
+#define R_CRIS_GNU_VTENTRY	8
+#define R_CRIS_COPY		9
+#define R_CRIS_GLOB_DAT		10
+#define R_CRIS_JUMP_SLOT	11
+#define R_CRIS_RELATIVE		12
+#define R_CRIS_16_GOT		13
+#define R_CRIS_32_GOT		14
+#define R_CRIS_16_GOTPLT	15
+#define R_CRIS_32_GOTPLT	16
+#define R_CRIS_32_GOTREL	17
+#define R_CRIS_32_PLT_GOTREL	18
+#define R_CRIS_32_PLT_PCREL	19
+
+#define R_CRIS_NUM		20
+
+
+
+#define R_X86_64_NONE		0
+#define R_X86_64_64		1
+#define R_X86_64_PC32		2
+#define R_X86_64_GOT32		3
+#define R_X86_64_PLT32		4
+#define R_X86_64_COPY		5
+#define R_X86_64_GLOB_DAT	6
+#define R_X86_64_JUMP_SLOT	7
+#define R_X86_64_RELATIVE	8
+#define R_X86_64_GOTPCREL	9
+
+#define R_X86_64_32		10
+#define R_X86_64_32S		11
+#define R_X86_64_16		12
+#define R_X86_64_PC16		13
+#define R_X86_64_8		14
+#define R_X86_64_PC8		15
+#define R_X86_64_DTPMOD64	16
+#define R_X86_64_DTPOFF64	17
+#define R_X86_64_TPOFF64	18
+#define R_X86_64_TLSGD		19
+
+#define R_X86_64_TLSLD		20
+
+#define R_X86_64_DTPOFF32	21
+#define R_X86_64_GOTTPOFF	22
+
+#define R_X86_64_TPOFF32	23
+#define R_X86_64_PC64		24
+#define R_X86_64_GOTOFF64	25
+#define R_X86_64_GOTPC32	26
+#define R_X86_64_GOT64		27
+#define R_X86_64_GOTPCREL64	28
+#define R_X86_64_GOTPC64	29
+#define R_X86_64_GOTPLT64	30
+#define R_X86_64_PLTOFF64	31
+#define R_X86_64_SIZE32		32
+#define R_X86_64_SIZE64		33
+
+#define R_X86_64_GOTPC32_TLSDESC 34
+#define R_X86_64_TLSDESC_CALL   35
+
+#define R_X86_64_TLSDESC        36
+#define R_X86_64_IRELATIVE	37
+#define R_X86_64_RELATIVE64	38
+#define R_X86_64_GOTPCRELX	41
+#define R_X86_64_REX_GOTPCRELX	42
+#define R_X86_64_NUM		43
+
+
+
+#define R_MN10300_NONE		0
+#define R_MN10300_32		1
+#define R_MN10300_16		2
+#define R_MN10300_8		3
+#define R_MN10300_PCREL32	4
+#define R_MN10300_PCREL16	5
+#define R_MN10300_PCREL8	6
+#define R_MN10300_GNU_VTINHERIT	7
+#define R_MN10300_GNU_VTENTRY	8
+#define R_MN10300_24		9
+#define R_MN10300_GOTPC32	10
+#define R_MN10300_GOTPC16	11
+#define R_MN10300_GOTOFF32	12
+#define R_MN10300_GOTOFF24	13
+#define R_MN10300_GOTOFF16	14
+#define R_MN10300_PLT32		15
+#define R_MN10300_PLT16		16
+#define R_MN10300_GOT32		17
+#define R_MN10300_GOT24		18
+#define R_MN10300_GOT16		19
+#define R_MN10300_COPY		20
+#define R_MN10300_GLOB_DAT	21
+#define R_MN10300_JMP_SLOT	22
+#define R_MN10300_RELATIVE	23
+
+#define R_MN10300_NUM		24
+
+
+
+#define R_M32R_NONE		0
+#define R_M32R_16		1
+#define R_M32R_32		2
+#define R_M32R_24		3
+#define R_M32R_10_PCREL		4
+#define R_M32R_18_PCREL		5
+#define R_M32R_26_PCREL		6
+#define R_M32R_HI16_ULO		7
+#define R_M32R_HI16_SLO		8
+#define R_M32R_LO16		9
+#define R_M32R_SDA16		10
+#define R_M32R_GNU_VTINHERIT	11
+#define R_M32R_GNU_VTENTRY	12
+
+#define R_M32R_16_RELA		33
+#define R_M32R_32_RELA		34
+#define R_M32R_24_RELA		35
+#define R_M32R_10_PCREL_RELA	36
+#define R_M32R_18_PCREL_RELA	37
+#define R_M32R_26_PCREL_RELA	38
+#define R_M32R_HI16_ULO_RELA	39
+#define R_M32R_HI16_SLO_RELA	40
+#define R_M32R_LO16_RELA	41
+#define R_M32R_SDA16_RELA	42
+#define R_M32R_RELA_GNU_VTINHERIT	43
+#define R_M32R_RELA_GNU_VTENTRY	44
+#define R_M32R_REL32		45
+
+#define R_M32R_GOT24		48
+#define R_M32R_26_PLTREL	49
+#define R_M32R_COPY		50
+#define R_M32R_GLOB_DAT		51
+#define R_M32R_JMP_SLOT		52
+#define R_M32R_RELATIVE		53
+#define R_M32R_GOTOFF		54
+#define R_M32R_GOTPC24		55
+#define R_M32R_GOT16_HI_ULO	56
+
+#define R_M32R_GOT16_HI_SLO	57
+
+#define R_M32R_GOT16_LO		58
+#define R_M32R_GOTPC_HI_ULO	59
+
+#define R_M32R_GOTPC_HI_SLO	60
+
+#define R_M32R_GOTPC_LO		61
+
+#define R_M32R_GOTOFF_HI_ULO	62
+
+#define R_M32R_GOTOFF_HI_SLO	63
+
+#define R_M32R_GOTOFF_LO	64
+#define R_M32R_NUM		256
+
+#define R_MICROBLAZE_NONE 0
+#define R_MICROBLAZE_32 1
+#define R_MICROBLAZE_32_PCREL 2
+#define R_MICROBLAZE_64_PCREL 3
+#define R_MICROBLAZE_32_PCREL_LO 4
+#define R_MICROBLAZE_64 5
+#define R_MICROBLAZE_32_LO 6
+#define R_MICROBLAZE_SRO32 7
+#define R_MICROBLAZE_SRW32 8
+#define R_MICROBLAZE_64_NONE 9
+#define R_MICROBLAZE_32_SYM_OP_SYM 10
+#define R_MICROBLAZE_GNU_VTINHERIT 11
+#define R_MICROBLAZE_GNU_VTENTRY 12
+#define R_MICROBLAZE_GOTPC_64 13
+#define R_MICROBLAZE_GOT_64 14
+#define R_MICROBLAZE_PLT_64 15
+#define R_MICROBLAZE_REL 16
+#define R_MICROBLAZE_JUMP_SLOT 17
+#define R_MICROBLAZE_GLOB_DAT 18
+#define R_MICROBLAZE_GOTOFF_64 19
+#define R_MICROBLAZE_GOTOFF_32 20
+#define R_MICROBLAZE_COPY 21
+#define R_MICROBLAZE_TLS 22
+#define R_MICROBLAZE_TLSGD 23
+#define R_MICROBLAZE_TLSLD 24
+#define R_MICROBLAZE_TLSDTPMOD32 25
+#define R_MICROBLAZE_TLSDTPREL32 26
+#define R_MICROBLAZE_TLSDTPREL64 27
+#define R_MICROBLAZE_TLSGOTTPREL32 28
+#define R_MICROBLAZE_TLSTPREL32	 29
+
+#define DT_NIOS2_GP             0x70000002
+
+#define R_NIOS2_NONE		0
+#define R_NIOS2_S16		1
+#define R_NIOS2_U16		2
+#define R_NIOS2_PCREL16		3
+#define R_NIOS2_CALL26		4
+#define R_NIOS2_IMM5		5
+#define R_NIOS2_CACHE_OPX	6
+#define R_NIOS2_IMM6		7
+#define R_NIOS2_IMM8		8
+#define R_NIOS2_HI16		9
+#define R_NIOS2_LO16		10
+#define R_NIOS2_HIADJ16		11
+#define R_NIOS2_BFD_RELOC_32	12
+#define R_NIOS2_BFD_RELOC_16	13
+#define R_NIOS2_BFD_RELOC_8	14
+#define R_NIOS2_GPREL		15
+#define R_NIOS2_GNU_VTINHERIT	16
+#define R_NIOS2_GNU_VTENTRY	17
+#define R_NIOS2_UJMP		18
+#define R_NIOS2_CJMP		19
+#define R_NIOS2_CALLR		20
+#define R_NIOS2_ALIGN		21
+#define R_NIOS2_GOT16		22
+#define R_NIOS2_CALL16		23
+#define R_NIOS2_GOTOFF_LO	24
+#define R_NIOS2_GOTOFF_HA	25
+#define R_NIOS2_PCREL_LO	26
+#define R_NIOS2_PCREL_HA	27
+#define R_NIOS2_TLS_GD16	28
+#define R_NIOS2_TLS_LDM16	29
+#define R_NIOS2_TLS_LDO16	30
+#define R_NIOS2_TLS_IE16	31
+#define R_NIOS2_TLS_LE16	32
+#define R_NIOS2_TLS_DTPMOD	33
+#define R_NIOS2_TLS_DTPREL	34
+#define R_NIOS2_TLS_TPREL	35
+#define R_NIOS2_COPY		36
+#define R_NIOS2_GLOB_DAT	37
+#define R_NIOS2_JUMP_SLOT	38
+#define R_NIOS2_RELATIVE	39
+#define R_NIOS2_GOTOFF		40
+#define R_NIOS2_CALL26_NOAT	41
+#define R_NIOS2_GOT_LO		42
+#define R_NIOS2_GOT_HA		43
+#define R_NIOS2_CALL_LO		44
+#define R_NIOS2_CALL_HA		45
+
+#define R_OR1K_NONE		0
+#define R_OR1K_32		1
+#define R_OR1K_16		2
+#define R_OR1K_8		3
+#define R_OR1K_LO_16_IN_INSN	4
+#define R_OR1K_HI_16_IN_INSN	5
+#define R_OR1K_INSN_REL_26	6
+#define R_OR1K_GNU_VTENTRY	7
+#define R_OR1K_GNU_VTINHERIT	8
+#define R_OR1K_32_PCREL		9
+#define R_OR1K_16_PCREL		10
+#define R_OR1K_8_PCREL		11
+#define R_OR1K_GOTPC_HI16	12
+#define R_OR1K_GOTPC_LO16	13
+#define R_OR1K_GOT16		14
+#define R_OR1K_PLT26		15
+#define R_OR1K_GOTOFF_HI16	16
+#define R_OR1K_GOTOFF_LO16	17
+#define R_OR1K_COPY		18
+#define R_OR1K_GLOB_DAT		19
+#define R_OR1K_JMP_SLOT		20
+#define R_OR1K_RELATIVE		21
+#define R_OR1K_TLS_GD_HI16	22
+#define R_OR1K_TLS_GD_LO16	23
+#define R_OR1K_TLS_LDM_HI16	24
+#define R_OR1K_TLS_LDM_LO16	25
+#define R_OR1K_TLS_LDO_HI16	26
+#define R_OR1K_TLS_LDO_LO16	27
+#define R_OR1K_TLS_IE_HI16	28
+#define R_OR1K_TLS_IE_LO16	29
+#define R_OR1K_TLS_LE_HI16	30
+#define R_OR1K_TLS_LE_LO16	31
+#define R_OR1K_TLS_TPOFF	32
+#define R_OR1K_TLS_DTPOFF	33
+#define R_OR1K_TLS_DTPMOD	34
+
+#define R_BPF_NONE		0
+#define R_BPF_MAP_FD		1
+
+#define R_RISCV_NONE            0
+#define R_RISCV_32              1
+#define R_RISCV_64              2
+#define R_RISCV_RELATIVE        3
+#define R_RISCV_COPY            4
+#define R_RISCV_JUMP_SLOT       5
+#define R_RISCV_TLS_DTPMOD32    6
+#define R_RISCV_TLS_DTPMOD64    7
+#define R_RISCV_TLS_DTPREL32    8
+#define R_RISCV_TLS_DTPREL64    9
+#define R_RISCV_TLS_TPREL32     10
+#define R_RISCV_TLS_TPREL64     11
+
+#define R_RISCV_BRANCH          16
+#define R_RISCV_JAL             17
+#define R_RISCV_CALL            18
+#define R_RISCV_CALL_PLT        19
+#define R_RISCV_GOT_HI20        20
+#define R_RISCV_TLS_GOT_HI20    21
+#define R_RISCV_TLS_GD_HI20     22
+#define R_RISCV_PCREL_HI20      23
+#define R_RISCV_PCREL_LO12_I    24
+#define R_RISCV_PCREL_LO12_S    25
+#define R_RISCV_HI20            26
+#define R_RISCV_LO12_I          27
+#define R_RISCV_LO12_S          28
+#define R_RISCV_TPREL_HI20      29
+#define R_RISCV_TPREL_LO12_I    30
+#define R_RISCV_TPREL_LO12_S    31
+#define R_RISCV_TPREL_ADD       32
+#define R_RISCV_ADD8            33
+#define R_RISCV_ADD16           34
+#define R_RISCV_ADD32           35
+#define R_RISCV_ADD64           36
+#define R_RISCV_SUB8            37
+#define R_RISCV_SUB16           38
+#define R_RISCV_SUB32           39
+#define R_RISCV_SUB64           40
+#define R_RISCV_GNU_VTINHERIT   41
+#define R_RISCV_GNU_VTENTRY     42
+#define R_RISCV_ALIGN           43
+#define R_RISCV_RVC_BRANCH      44
+#define R_RISCV_RVC_JUMP        45
+#define R_RISCV_RVC_LUI         46
+#define R_RISCV_GPREL_I         47
+#define R_RISCV_GPREL_S         48
+#define R_RISCV_TPREL_I         49
+#define R_RISCV_TPREL_S         50
+#define R_RISCV_RELAX           51
+#define R_RISCV_SUB6            52
+#define R_RISCV_SET6            53
+#define R_RISCV_SET8            54
+#define R_RISCV_SET16           55
+#define R_RISCV_SET32           56
+#define R_RISCV_32_PCREL        57
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif
diff --git a/i686-linux-musl/include/endian.h b/i686-linux-musl/include/endian.h
new file mode 100644
index 0000000..172c432
--- /dev/null
+++ b/i686-linux-musl/include/endian.h
@@ -0,0 +1,80 @@
+#ifndef _ENDIAN_H
+#define _ENDIAN_H
+
+#include <features.h>
+
+#define __NEED_uint16_t
+#define __NEED_uint32_t
+#define __NEED_uint64_t
+
+#include <bits/alltypes.h>
+
+#define __PDP_ENDIAN 3412
+
+#define BIG_ENDIAN __BIG_ENDIAN
+#define LITTLE_ENDIAN __LITTLE_ENDIAN
+#define PDP_ENDIAN __PDP_ENDIAN
+#define BYTE_ORDER __BYTE_ORDER
+
+static __inline uint16_t __bswap16(uint16_t __x)
+{
+	return __x<<8 | __x>>8;
+}
+
+static __inline uint32_t __bswap32(uint32_t __x)
+{
+	return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
+}
+
+static __inline uint64_t __bswap64(uint64_t __x)
+{
+	return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
+}
+
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+#define htobe16(x) __bswap16(x)
+#define be16toh(x) __bswap16(x)
+#define htobe32(x) __bswap32(x)
+#define be32toh(x) __bswap32(x)
+#define htobe64(x) __bswap64(x)
+#define be64toh(x) __bswap64(x)
+#define htole16(x) (uint16_t)(x)
+#define le16toh(x) (uint16_t)(x)
+#define htole32(x) (uint32_t)(x)
+#define le32toh(x) (uint32_t)(x)
+#define htole64(x) (uint64_t)(x)
+#define le64toh(x) (uint64_t)(x)
+#else
+#define htobe16(x) (uint16_t)(x)
+#define be16toh(x) (uint16_t)(x)
+#define htobe32(x) (uint32_t)(x)
+#define be32toh(x) (uint32_t)(x)
+#define htobe64(x) (uint64_t)(x)
+#define be64toh(x) (uint64_t)(x)
+#define htole16(x) __bswap16(x)
+#define le16toh(x) __bswap16(x)
+#define htole32(x) __bswap32(x)
+#define le32toh(x) __bswap32(x)
+#define htole64(x) __bswap64(x)
+#define le64toh(x) __bswap64(x)
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+#define betoh16(x) __bswap16(x)
+#define betoh32(x) __bswap32(x)
+#define betoh64(x) __bswap64(x)
+#define letoh16(x) (uint16_t)(x)
+#define letoh32(x) (uint32_t)(x)
+#define letoh64(x) (uint64_t)(x)
+#else
+#define betoh16(x) (uint16_t)(x)
+#define betoh32(x) (uint32_t)(x)
+#define betoh64(x) (uint64_t)(x)
+#define letoh16(x) __bswap16(x)
+#define letoh32(x) __bswap32(x)
+#define letoh64(x) __bswap64(x)
+#endif
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/err.h b/i686-linux-musl/include/err.h
new file mode 100644
index 0000000..9f5cb6b
--- /dev/null
+++ b/i686-linux-musl/include/err.h
@@ -0,0 +1,25 @@
+#ifndef _ERR_H
+#define _ERR_H
+
+#include <features.h>
+#include <stdarg.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void warn(const char *, ...);
+void vwarn(const char *, va_list);
+void warnx(const char *, ...);
+void vwarnx(const char *, va_list);
+
+_Noreturn void err(int, const char *, ...);
+_Noreturn void verr(int, const char *, va_list);
+_Noreturn void errx(int, const char *, ...);
+_Noreturn void verrx(int, const char *, va_list);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/errno.h b/i686-linux-musl/include/errno.h
new file mode 100644
index 0000000..0361b33
--- /dev/null
+++ b/i686-linux-musl/include/errno.h
@@ -0,0 +1,27 @@
+#ifndef	_ERRNO_H
+#define _ERRNO_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#include <bits/errno.h>
+
+#ifdef __GNUC__
+__attribute__((const))
+#endif
+int *__errno_location(void);
+#define errno (*__errno_location())
+
+#ifdef _GNU_SOURCE
+extern char *program_invocation_short_name, *program_invocation_name;
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/i686-linux-musl/include/execinfo.h b/i686-linux-musl/include/execinfo.h
new file mode 100644
index 0000000..e092c00
--- /dev/null
+++ b/i686-linux-musl/include/execinfo.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#pragma once
+
+/*
+ * This file is exported as part of libexecinfo for use with musl, which doesn't
+ * define __INTRODUCED_IN.  Stub it out.
+ */
+#define __INTRODUCED_IN(x)
+#include <bionic/execinfo.h>
+#undef __INTRODUCED_IN
diff --git a/i686-linux-musl/include/fcntl.h b/i686-linux-musl/include/fcntl.h
new file mode 100644
index 0000000..b664cdc
--- /dev/null
+++ b/i686-linux-musl/include/fcntl.h
@@ -0,0 +1,216 @@
+#ifndef	_FCNTL_H
+#define	_FCNTL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_off_t
+#define __NEED_pid_t
+#define __NEED_mode_t
+
+#ifdef _GNU_SOURCE
+#define __NEED_size_t
+#define __NEED_ssize_t
+#define __NEED_struct_iovec
+#endif
+
+#include <bits/alltypes.h>
+
+#include <bits/fcntl.h>
+
+struct flock {
+	short l_type;
+	short l_whence;
+	off_t l_start;
+	off_t l_len;
+	pid_t l_pid;
+};
+
+int creat(const char *, mode_t);
+int fcntl(int, int, ...);
+int open(const char *, int, ...);
+int openat(int, const char *, int, ...);
+int posix_fadvise(int, off_t, off_t, int);
+int posix_fallocate(int, off_t, off_t);
+
+#define O_SEARCH   O_PATH
+#define O_EXEC     O_PATH
+#define O_TTY_INIT 0
+
+#define O_ACCMODE (03|O_SEARCH)
+#define O_RDONLY  00
+#define O_WRONLY  01
+#define O_RDWR    02
+
+#define F_OFD_GETLK 36
+#define F_OFD_SETLK 37
+#define F_OFD_SETLKW 38
+
+#define F_DUPFD_CLOEXEC 1030
+
+#define F_RDLCK 0
+#define F_WRLCK 1
+#define F_UNLCK 2
+
+#define FD_CLOEXEC 1
+
+#define AT_FDCWD (-100)
+#define AT_SYMLINK_NOFOLLOW 0x100
+#define AT_REMOVEDIR 0x200
+#define AT_SYMLINK_FOLLOW 0x400
+#define AT_EACCESS 0x200
+
+#define POSIX_FADV_NORMAL     0
+#define POSIX_FADV_RANDOM     1
+#define POSIX_FADV_SEQUENTIAL 2
+#define POSIX_FADV_WILLNEED   3
+#ifndef POSIX_FADV_DONTNEED
+#define POSIX_FADV_DONTNEED   4
+#define POSIX_FADV_NOREUSE    5
+#endif
+
+#undef SEEK_SET
+#undef SEEK_CUR
+#undef SEEK_END
+#define SEEK_SET 0
+#define SEEK_CUR 1
+#define SEEK_END 2
+
+#ifndef S_IRUSR
+#define S_ISUID 04000
+#define S_ISGID 02000
+#define S_ISVTX 01000
+#define S_IRUSR 0400
+#define S_IWUSR 0200
+#define S_IXUSR 0100
+#define S_IRWXU 0700
+#define S_IRGRP 0040
+#define S_IWGRP 0020
+#define S_IXGRP 0010
+#define S_IRWXG 0070
+#define S_IROTH 0004
+#define S_IWOTH 0002
+#define S_IXOTH 0001
+#define S_IRWXO 0007
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#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
+
+#define FAPPEND O_APPEND
+#define FFSYNC O_SYNC
+#define FASYNC O_ASYNC
+#define FNONBLOCK O_NONBLOCK
+#define FNDELAY O_NDELAY
+
+#define F_OK 0
+#define R_OK 4
+#define W_OK 2
+#define X_OK 1
+#define F_ULOCK 0
+#define F_LOCK  1
+#define F_TLOCK 2
+#define F_TEST  3
+
+#define F_SETLEASE	1024
+#define F_GETLEASE	1025
+#define F_NOTIFY	1026
+#define F_CANCELLK	1029
+#define F_SETPIPE_SZ	1031
+#define F_GETPIPE_SZ	1032
+#define F_ADD_SEALS	1033
+#define F_GET_SEALS	1034
+
+#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		1035
+#define F_SET_RW_HINT		1036
+#define F_GET_FILE_RW_HINT	1037
+#define F_SET_FILE_RW_HINT	1038
+
+#define RWF_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 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
+
+int lockf(int, int, off_t);
+#endif
+
+#if defined(_GNU_SOURCE)
+#define F_OWNER_TID 0
+#define F_OWNER_PID 1
+#define F_OWNER_PGRP 2
+#define F_OWNER_GID 2
+struct file_handle {
+	unsigned handle_bytes;
+	int handle_type;
+	unsigned char f_handle[];
+};
+struct f_owner_ex {
+	int type;
+	pid_t pid;
+};
+#define FALLOC_FL_KEEP_SIZE 1
+#define FALLOC_FL_PUNCH_HOLE 2
+#define MAX_HANDLE_SZ 128
+#define SYNC_FILE_RANGE_WAIT_BEFORE 1
+#define SYNC_FILE_RANGE_WRITE 2
+#define SYNC_FILE_RANGE_WAIT_AFTER 4
+#define SPLICE_F_MOVE 1
+#define SPLICE_F_NONBLOCK 2
+#define SPLICE_F_MORE 4
+#define SPLICE_F_GIFT 8
+int fallocate(int, int, off_t, off_t);
+#define fallocate64 fallocate
+int name_to_handle_at(int, const char *, struct file_handle *, int *, int);
+int open_by_handle_at(int, struct file_handle *, int);
+ssize_t readahead(int, off_t, size_t);
+int sync_file_range(int, off_t, off_t, unsigned);
+ssize_t vmsplice(int, const struct iovec *, size_t, unsigned);
+ssize_t splice(int, off_t *, int, off_t *, size_t, unsigned);
+ssize_t tee(int, int, size_t, unsigned);
+#define loff_t off_t
+#endif
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define F_GETLK64 F_GETLK
+#define F_SETLK64 F_SETLK
+#define F_SETLKW64 F_SETLKW
+#define flock64 flock
+#define open64 open
+#define openat64 openat
+#define creat64 creat
+#define lockf64 lockf
+#define posix_fadvise64 posix_fadvise
+#define posix_fallocate64 posix_fallocate
+#define off64_t off_t
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/features.h b/i686-linux-musl/include/features.h
new file mode 100644
index 0000000..85cfb72
--- /dev/null
+++ b/i686-linux-musl/include/features.h
@@ -0,0 +1,40 @@
+#ifndef _FEATURES_H
+#define _FEATURES_H
+
+#if defined(_ALL_SOURCE) && !defined(_GNU_SOURCE)
+#define _GNU_SOURCE 1
+#endif
+
+#if defined(_DEFAULT_SOURCE) && !defined(_BSD_SOURCE)
+#define _BSD_SOURCE 1
+#endif
+
+#if !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE) \
+ && !defined(_XOPEN_SOURCE) && !defined(_GNU_SOURCE) \
+ && !defined(_BSD_SOURCE) && !defined(__STRICT_ANSI__)
+#define _BSD_SOURCE 1
+#define _XOPEN_SOURCE 700
+#endif
+
+#if __STDC_VERSION__ >= 199901L
+#define __restrict restrict
+#elif !defined(__GNUC__)
+#define __restrict
+#endif
+
+#if __STDC_VERSION__ >= 199901L || defined(__cplusplus)
+#define __inline inline
+#elif !defined(__GNUC__)
+#define __inline
+#endif
+
+#if __STDC_VERSION__ >= 201112L
+#elif defined(__GNUC__)
+#define _Noreturn __attribute__((__noreturn__))
+#else
+#define _Noreturn
+#endif
+
+#define __REDIR(x,y) __typeof__(x) x __asm__(#y)
+
+#endif
diff --git a/i686-linux-musl/include/fenv.h b/i686-linux-musl/include/fenv.h
new file mode 100644
index 0000000..05de990
--- /dev/null
+++ b/i686-linux-musl/include/fenv.h
@@ -0,0 +1,28 @@
+#ifndef _FENV_H
+#define _FENV_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <bits/fenv.h>
+
+int feclearexcept(int);
+int fegetexceptflag(fexcept_t *, int);
+int feraiseexcept(int);
+int fesetexceptflag(const fexcept_t *, int);
+int fetestexcept(int);
+
+int fegetround(void);
+int fesetround(int);
+
+int fegetenv(fenv_t *);
+int feholdexcept(fenv_t *);
+int fesetenv(const fenv_t *);
+int feupdateenv(const fenv_t *);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+
diff --git a/i686-linux-musl/include/float.h b/i686-linux-musl/include/float.h
new file mode 100644
index 0000000..713aadb
--- /dev/null
+++ b/i686-linux-musl/include/float.h
@@ -0,0 +1,52 @@
+#ifndef _FLOAT_H
+#define _FLOAT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int __flt_rounds(void);
+#define FLT_ROUNDS (__flt_rounds())
+
+#define FLT_RADIX 2
+
+#define FLT_TRUE_MIN 1.40129846432481707092e-45F
+#define FLT_MIN 1.17549435082228750797e-38F
+#define FLT_MAX 3.40282346638528859812e+38F
+#define FLT_EPSILON 1.1920928955078125e-07F
+
+#define FLT_MANT_DIG 24
+#define FLT_MIN_EXP (-125)
+#define FLT_MAX_EXP 128
+#define FLT_HAS_SUBNORM 1
+
+#define FLT_DIG 6
+#define FLT_DECIMAL_DIG 9
+#define FLT_MIN_10_EXP (-37)
+#define FLT_MAX_10_EXP 38
+
+#define DBL_TRUE_MIN 4.94065645841246544177e-324
+#define DBL_MIN 2.22507385850720138309e-308
+#define DBL_MAX 1.79769313486231570815e+308
+#define DBL_EPSILON 2.22044604925031308085e-16
+
+#define DBL_MANT_DIG 53
+#define DBL_MIN_EXP (-1021)
+#define DBL_MAX_EXP 1024
+#define DBL_HAS_SUBNORM 1
+
+#define DBL_DIG 15
+#define DBL_DECIMAL_DIG 17
+#define DBL_MIN_10_EXP (-307)
+#define DBL_MAX_10_EXP 308
+
+#define LDBL_HAS_SUBNORM 1
+#define LDBL_DECIMAL_DIG DECIMAL_DIG
+
+#include <bits/float.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/fmtmsg.h b/i686-linux-musl/include/fmtmsg.h
new file mode 100644
index 0000000..d944b06
--- /dev/null
+++ b/i686-linux-musl/include/fmtmsg.h
@@ -0,0 +1,47 @@
+#ifndef _FMTMSG_H
+#define _FMTMSG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MM_HARD		1
+#define MM_SOFT		2
+#define MM_FIRM		4
+
+#define MM_APPL		8
+#define MM_UTIL		16
+#define MM_OPSYS	32
+
+#define MM_RECOVER	64
+#define MM_NRECOV	128
+
+#define MM_PRINT	256
+#define MM_CONSOLE	512
+
+#define MM_NULLMC	0L
+
+#define MM_HALT		1
+#define MM_ERROR	2
+#define MM_WARNING	3
+#define MM_INFO		4
+#define MM_NOSEV	0
+
+#define MM_OK		0
+#define MM_NOTOK	(-1)
+#define MM_NOMSG	1
+#define MM_NOCON	4
+
+#define MM_NULLLBL	((char*)0)
+#define MM_NULLTXT	((char*)0)
+#define MM_NULLACT	((char*)0)
+#define MM_NULLTAG	((char*)0)
+#define MM_NULLSEV	0
+
+int fmtmsg(long, const char *, int, const char *, const char *, const char *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/fnmatch.h b/i686-linux-musl/include/fnmatch.h
new file mode 100644
index 0000000..f959321
--- /dev/null
+++ b/i686-linux-musl/include/fnmatch.h
@@ -0,0 +1,24 @@
+#ifndef	_FNMATCH_H
+#define	_FNMATCH_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define	FNM_PATHNAME 0x1
+#define	FNM_NOESCAPE 0x2
+#define	FNM_PERIOD   0x4
+#define	FNM_LEADING_DIR	0x8           
+#define	FNM_CASEFOLD	0x10
+#define	FNM_FILE_NAME	FNM_PATHNAME
+
+#define	FNM_NOMATCH 1
+#define FNM_NOSYS   (-1)
+
+int fnmatch(const char *, const char *, int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/ftw.h b/i686-linux-musl/include/ftw.h
new file mode 100644
index 0000000..b15c062
--- /dev/null
+++ b/i686-linux-musl/include/ftw.h
@@ -0,0 +1,41 @@
+#ifndef _FTW_H
+#define	_FTW_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <sys/stat.h>
+
+#define FTW_F   1
+#define FTW_D   2
+#define FTW_DNR 3
+#define FTW_NS  4
+#define FTW_SL  5
+#define FTW_DP  6
+#define FTW_SLN 7
+
+#define FTW_PHYS  1
+#define FTW_MOUNT 2
+#define FTW_CHDIR 4
+#define FTW_DEPTH 8
+
+struct FTW {
+	int base;
+	int level;
+};
+
+int ftw(const char *, int (*)(const char *, const struct stat *, int), int);
+int nftw(const char *, int (*)(const char *, const struct stat *, int, struct FTW *), int, int);
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define ftw64 ftw
+#define nftw64 nftw
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/getopt.h b/i686-linux-musl/include/getopt.h
new file mode 100644
index 0000000..35cbd35
--- /dev/null
+++ b/i686-linux-musl/include/getopt.h
@@ -0,0 +1,30 @@
+#ifndef _GETOPT_H
+#define _GETOPT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int getopt(int, char * const [], const char *);
+extern char *optarg;
+extern int optind, opterr, optopt, optreset;
+
+struct option {
+	const char *name;
+	int has_arg;
+	int *flag;
+	int val;
+};
+
+int getopt_long(int, char *const *, const char *, const struct option *, int *);
+int getopt_long_only(int, char *const *, const char *, const struct option *, int *);
+
+#define no_argument        0
+#define required_argument  1
+#define optional_argument  2
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/glob.h b/i686-linux-musl/include/glob.h
new file mode 100644
index 0000000..4a562a2
--- /dev/null
+++ b/i686-linux-musl/include/glob.h
@@ -0,0 +1,52 @@
+#ifndef	_GLOB_H
+#define	_GLOB_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_size_t
+
+#include <bits/alltypes.h>
+
+typedef struct {
+	size_t gl_pathc;
+	char **gl_pathv;
+	size_t gl_offs;
+	int __dummy1;
+	void *__dummy2[5];
+} glob_t;
+
+int  glob(const char *__restrict, int, int (*)(const char *, int), glob_t *__restrict);
+void globfree(glob_t *);
+
+#define GLOB_ERR      0x01
+#define GLOB_MARK     0x02
+#define GLOB_NOSORT   0x04
+#define GLOB_DOOFFS   0x08
+#define GLOB_NOCHECK  0x10
+#define GLOB_APPEND   0x20
+#define GLOB_NOESCAPE 0x40
+#define	GLOB_PERIOD   0x80
+
+#define GLOB_TILDE       0x1000
+#define GLOB_TILDE_CHECK 0x4000
+
+#define GLOB_NOSPACE 1
+#define GLOB_ABORTED 2
+#define GLOB_NOMATCH 3
+#define GLOB_NOSYS   4
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define glob64 glob
+#define globfree64 globfree
+#define glob64_t glob_t
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/grp.h b/i686-linux-musl/include/grp.h
new file mode 100644
index 0000000..27e8c5e
--- /dev/null
+++ b/i686-linux-musl/include/grp.h
@@ -0,0 +1,53 @@
+#ifndef	_GRP_H
+#define	_GRP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_size_t
+#define __NEED_gid_t
+
+#ifdef _GNU_SOURCE
+#define __NEED_FILE
+#endif
+
+#include <bits/alltypes.h>
+
+struct group {
+	char *gr_name;
+	char *gr_passwd;
+	gid_t gr_gid;
+	char **gr_mem;
+};
+
+struct group  *getgrgid(gid_t);
+struct group  *getgrnam(const char *);
+
+int getgrgid_r(gid_t, struct group *, char *, size_t, struct group **);
+int getgrnam_r(const char *, struct group *, char *, size_t, struct group **);
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+struct group  *getgrent(void);
+void           endgrent(void);
+void           setgrent(void);
+#endif
+
+#ifdef _GNU_SOURCE
+struct group  *fgetgrent(FILE *);
+int putgrent(const struct group *, FILE *);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+int getgrouplist(const char *, gid_t, gid_t *, int *);
+int setgroups(size_t, const gid_t *);
+int initgroups(const char *, gid_t);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/iconv.h b/i686-linux-musl/include/iconv.h
new file mode 100644
index 0000000..ebe9bfd
--- /dev/null
+++ b/i686-linux-musl/include/iconv.h
@@ -0,0 +1,24 @@
+#ifndef _ICONV_H
+#define _ICONV_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_size_t
+
+#include <bits/alltypes.h>
+
+typedef void *iconv_t;
+
+iconv_t iconv_open(const char *, const char *);
+size_t iconv(iconv_t, char **__restrict, size_t *__restrict, char **__restrict, size_t *__restrict);
+int iconv_close(iconv_t);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/ifaddrs.h b/i686-linux-musl/include/ifaddrs.h
new file mode 100644
index 0000000..c0328a8
--- /dev/null
+++ b/i686-linux-musl/include/ifaddrs.h
@@ -0,0 +1,35 @@
+#ifndef _IFADDRS_H
+#define _IFADDRS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <netinet/in.h>
+#include <sys/socket.h>
+
+struct ifaddrs {
+	struct ifaddrs *ifa_next;
+	char *ifa_name;
+	unsigned ifa_flags;
+	struct sockaddr *ifa_addr;
+	struct sockaddr *ifa_netmask;
+	union {
+		struct sockaddr *ifu_broadaddr;
+		struct sockaddr *ifu_dstaddr;
+	} ifa_ifu;
+	void *ifa_data;
+};
+#define ifa_broadaddr ifa_ifu.ifu_broadaddr
+#define ifa_dstaddr ifa_ifu.ifu_dstaddr
+
+void freeifaddrs(struct ifaddrs *);
+int getifaddrs(struct ifaddrs **);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/i686-linux-musl/include/inttypes.h b/i686-linux-musl/include/inttypes.h
new file mode 100644
index 0000000..61dcb72
--- /dev/null
+++ b/i686-linux-musl/include/inttypes.h
@@ -0,0 +1,229 @@
+#ifndef _INTTYPES_H
+#define _INTTYPES_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <stdint.h>
+
+#define __NEED_wchar_t
+#include <bits/alltypes.h>
+
+typedef struct { intmax_t quot, rem; } imaxdiv_t;
+
+intmax_t imaxabs(intmax_t);
+imaxdiv_t imaxdiv(intmax_t, intmax_t);
+
+intmax_t strtoimax(const char *__restrict, char **__restrict, int);
+uintmax_t strtoumax(const char *__restrict, char **__restrict, int);
+
+intmax_t wcstoimax(const wchar_t *__restrict, wchar_t **__restrict, int);
+uintmax_t wcstoumax(const wchar_t *__restrict, wchar_t **__restrict, int);
+
+#if UINTPTR_MAX == UINT64_MAX
+#define __PRI64  "l"
+#define __PRIPTR "l"
+#else
+#define __PRI64  "ll"
+#define __PRIPTR ""
+#endif
+
+#define PRId8  "d"
+#define PRId16 "d"
+#define PRId32 "d"
+#define PRId64 __PRI64 "d"
+
+#define PRIdLEAST8  "d"
+#define PRIdLEAST16 "d"
+#define PRIdLEAST32 "d"
+#define PRIdLEAST64 __PRI64 "d"
+
+#define PRIdFAST8  "d"
+#define PRIdFAST16 "d"
+#define PRIdFAST32 "d"
+#define PRIdFAST64 __PRI64 "d"
+
+#define PRIi8  "i"
+#define PRIi16 "i"
+#define PRIi32 "i"
+#define PRIi64 __PRI64 "i"
+
+#define PRIiLEAST8  "i"
+#define PRIiLEAST16 "i"
+#define PRIiLEAST32 "i"
+#define PRIiLEAST64 __PRI64 "i"
+
+#define PRIiFAST8  "i"
+#define PRIiFAST16 "i"
+#define PRIiFAST32 "i"
+#define PRIiFAST64 __PRI64 "i"
+
+#define PRIo8  "o"
+#define PRIo16 "o"
+#define PRIo32 "o"
+#define PRIo64 __PRI64 "o"
+
+#define PRIoLEAST8  "o"
+#define PRIoLEAST16 "o"
+#define PRIoLEAST32 "o"
+#define PRIoLEAST64 __PRI64 "o"
+
+#define PRIoFAST8  "o"
+#define PRIoFAST16 "o"
+#define PRIoFAST32 "o"
+#define PRIoFAST64 __PRI64 "o"
+
+#define PRIu8  "u"
+#define PRIu16 "u"
+#define PRIu32 "u"
+#define PRIu64 __PRI64 "u"
+
+#define PRIuLEAST8  "u"
+#define PRIuLEAST16 "u"
+#define PRIuLEAST32 "u"
+#define PRIuLEAST64 __PRI64 "u"
+
+#define PRIuFAST8  "u"
+#define PRIuFAST16 "u"
+#define PRIuFAST32 "u"
+#define PRIuFAST64 __PRI64 "u"
+
+#define PRIx8  "x"
+#define PRIx16 "x"
+#define PRIx32 "x"
+#define PRIx64 __PRI64 "x"
+
+#define PRIxLEAST8  "x"
+#define PRIxLEAST16 "x"
+#define PRIxLEAST32 "x"
+#define PRIxLEAST64 __PRI64 "x"
+
+#define PRIxFAST8  "x"
+#define PRIxFAST16 "x"
+#define PRIxFAST32 "x"
+#define PRIxFAST64 __PRI64 "x"
+
+#define PRIX8  "X"
+#define PRIX16 "X"
+#define PRIX32 "X"
+#define PRIX64 __PRI64 "X"
+
+#define PRIXLEAST8  "X"
+#define PRIXLEAST16 "X"
+#define PRIXLEAST32 "X"
+#define PRIXLEAST64 __PRI64 "X"
+
+#define PRIXFAST8  "X"
+#define PRIXFAST16 "X"
+#define PRIXFAST32 "X"
+#define PRIXFAST64 __PRI64 "X"
+
+#define PRIdMAX __PRI64 "d"
+#define PRIiMAX __PRI64 "i"
+#define PRIoMAX __PRI64 "o"
+#define PRIuMAX __PRI64 "u"
+#define PRIxMAX __PRI64 "x"
+#define PRIXMAX __PRI64 "X"
+
+#define PRIdPTR __PRIPTR "d"
+#define PRIiPTR __PRIPTR "i"
+#define PRIoPTR __PRIPTR "o"
+#define PRIuPTR __PRIPTR "u"
+#define PRIxPTR __PRIPTR "x"
+#define PRIXPTR __PRIPTR "X"
+
+#define SCNd8   "hhd"
+#define SCNd16  "hd"
+#define SCNd32  "d"
+#define SCNd64  __PRI64 "d"
+
+#define SCNdLEAST8  "hhd"
+#define SCNdLEAST16 "hd"
+#define SCNdLEAST32 "d"
+#define SCNdLEAST64 __PRI64 "d"
+
+#define SCNdFAST8  "hhd"
+#define SCNdFAST16 "d"
+#define SCNdFAST32 "d"
+#define SCNdFAST64 __PRI64 "d"
+
+#define SCNi8   "hhi"
+#define SCNi16  "hi"
+#define SCNi32  "i"
+#define SCNi64  __PRI64 "i"
+
+#define SCNiLEAST8  "hhi"
+#define SCNiLEAST16 "hi"
+#define SCNiLEAST32 "i"
+#define SCNiLEAST64 __PRI64 "i"
+
+#define SCNiFAST8  "hhi"
+#define SCNiFAST16 "i"
+#define SCNiFAST32 "i"
+#define SCNiFAST64 __PRI64 "i"
+
+#define SCNu8   "hhu"
+#define SCNu16  "hu"
+#define SCNu32  "u"
+#define SCNu64  __PRI64 "u"
+
+#define SCNuLEAST8  "hhu"
+#define SCNuLEAST16 "hu"
+#define SCNuLEAST32 "u"
+#define SCNuLEAST64 __PRI64 "u"
+
+#define SCNuFAST8 "hhu"
+#define SCNuFAST16 "u"
+#define SCNuFAST32 "u"
+#define SCNuFAST64 __PRI64 "u"
+
+#define SCNo8   "hho"
+#define SCNo16  "ho"
+#define SCNo32  "o"
+#define SCNo64  __PRI64 "o"
+
+#define SCNoLEAST8  "hho"
+#define SCNoLEAST16 "ho"
+#define SCNoLEAST32 "o"
+#define SCNoLEAST64 __PRI64 "o"
+
+#define SCNoFAST8  "hho"
+#define SCNoFAST16 "o"
+#define SCNoFAST32 "o"
+#define SCNoFAST64 __PRI64 "o"
+
+#define SCNx8   "hhx"
+#define SCNx16  "hx"
+#define SCNx32  "x"
+#define SCNx64  __PRI64 "x"
+
+#define SCNxLEAST8  "hhx"
+#define SCNxLEAST16 "hx"
+#define SCNxLEAST32 "x"
+#define SCNxLEAST64 __PRI64 "x"
+
+#define SCNxFAST8  "hhx"
+#define SCNxFAST16 "x"
+#define SCNxFAST32 "x"
+#define SCNxFAST64 __PRI64 "x"
+
+#define SCNdMAX __PRI64 "d"
+#define SCNiMAX __PRI64 "i"
+#define SCNoMAX __PRI64 "o"
+#define SCNuMAX __PRI64 "u"
+#define SCNxMAX __PRI64 "x"
+
+#define SCNdPTR __PRIPTR "d"
+#define SCNiPTR __PRIPTR "i"
+#define SCNoPTR __PRIPTR "o"
+#define SCNuPTR __PRIPTR "u"
+#define SCNxPTR __PRIPTR "x"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/i686-linux-musl/include/iso646.h b/i686-linux-musl/include/iso646.h
new file mode 100644
index 0000000..88ff53d
--- /dev/null
+++ b/i686-linux-musl/include/iso646.h
@@ -0,0 +1,20 @@
+#ifndef _ISO646_H
+#define _ISO646_H
+
+#ifndef __cplusplus
+
+#define and    &&
+#define and_eq &=
+#define bitand &
+#define bitor  |
+#define compl  ~
+#define not    !
+#define not_eq !=
+#define or     ||
+#define or_eq  |=
+#define xor    ^
+#define xor_eq ^=
+
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/langinfo.h b/i686-linux-musl/include/langinfo.h
new file mode 100644
index 0000000..519c061
--- /dev/null
+++ b/i686-linux-musl/include/langinfo.h
@@ -0,0 +1,98 @@
+#ifndef _LANGINFO_H
+#define _LANGINFO_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <nl_types.h>
+
+#define __NEED_locale_t
+
+#include <bits/alltypes.h>
+
+#define ABDAY_1 0x20000
+#define ABDAY_2 0x20001
+#define ABDAY_3 0x20002
+#define ABDAY_4 0x20003
+#define ABDAY_5 0x20004
+#define ABDAY_6 0x20005
+#define ABDAY_7 0x20006
+
+#define DAY_1 0x20007
+#define DAY_2 0x20008
+#define DAY_3 0x20009
+#define DAY_4 0x2000A
+#define DAY_5 0x2000B
+#define DAY_6 0x2000C
+#define DAY_7 0x2000D
+
+#define ABMON_1 0x2000E
+#define ABMON_2 0x2000F
+#define ABMON_3 0x20010
+#define ABMON_4 0x20011
+#define ABMON_5 0x20012
+#define ABMON_6 0x20013
+#define ABMON_7 0x20014
+#define ABMON_8 0x20015
+#define ABMON_9 0x20016
+#define ABMON_10 0x20017
+#define ABMON_11 0x20018
+#define ABMON_12 0x20019
+
+#define MON_1 0x2001A
+#define MON_2 0x2001B
+#define MON_3 0x2001C
+#define MON_4 0x2001D
+#define MON_5 0x2001E
+#define MON_6 0x2001F
+#define MON_7 0x20020
+#define MON_8 0x20021
+#define MON_9 0x20022
+#define MON_10 0x20023
+#define MON_11 0x20024
+#define MON_12 0x20025
+
+#define AM_STR 0x20026
+#define PM_STR 0x20027
+
+#define D_T_FMT 0x20028
+#define D_FMT 0x20029
+#define T_FMT 0x2002A
+#define T_FMT_AMPM 0x2002B
+
+#define ERA 0x2002C
+#define ERA_D_FMT 0x2002E
+#define ALT_DIGITS 0x2002F
+#define ERA_D_T_FMT 0x20030
+#define ERA_T_FMT 0x20031
+
+#define CODESET 14
+
+#define CRNCYSTR 0x4000F
+
+#define RADIXCHAR 0x10000
+#define THOUSEP 0x10001
+#define YESEXPR 0x50000
+#define NOEXPR 0x50001
+
+#define _NL_LOCALE_NAME(cat) (((cat)<<16) | 0xffff)
+
+#if defined(_GNU_SOURCE)
+#define NL_LOCALE_NAME(cat) _NL_LOCALE_NAME(cat)
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define YESSTR 0x50002
+#define NOSTR 0x50003
+#endif
+
+char *nl_langinfo(nl_item);
+char *nl_langinfo_l(nl_item, locale_t);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/lastlog.h b/i686-linux-musl/include/lastlog.h
new file mode 100644
index 0000000..5fa45ee
--- /dev/null
+++ b/i686-linux-musl/include/lastlog.h
@@ -0,0 +1 @@
+#include <utmp.h>
diff --git a/i686-linux-musl/include/libgen.h b/i686-linux-musl/include/libgen.h
new file mode 100644
index 0000000..7c7fd9c
--- /dev/null
+++ b/i686-linux-musl/include/libgen.h
@@ -0,0 +1,15 @@
+#ifndef _LIBGEN_H
+#define _LIBGEN_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+char *dirname(char *);
+char *basename(char *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/libintl.h b/i686-linux-musl/include/libintl.h
new file mode 100644
index 0000000..6a707bf
--- /dev/null
+++ b/i686-linux-musl/include/libintl.h
@@ -0,0 +1,33 @@
+#ifndef _LIBINTL_H
+#define _LIBINTL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __USE_GNU_GETTEXT 1
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 1 : -1)
+
+#if __GNUC__ >= 3
+#define __fa(n) __attribute__ ((__format_arg__ (n)))
+#else
+#define __fa(n)
+#endif
+
+char *gettext(const char *) __fa(1);
+char *dgettext(const char *, const char *) __fa(2);
+char *dcgettext(const char *, const char *, int) __fa(2);
+char *ngettext(const char *, const char *, unsigned long) __fa(1) __fa(2);
+char *dngettext(const char *, const char *, const char *, unsigned long) __fa(2) __fa(3);
+char *dcngettext(const char *, const char *, const char *, unsigned long, int) __fa(2) __fa(3);
+char *textdomain(const char *);
+char *bindtextdomain (const char *, const char *);
+char *bind_textdomain_codeset(const char *, const char *);
+
+#undef __fa
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/limits.h b/i686-linux-musl/include/limits.h
new file mode 100644
index 0000000..53a27b9
--- /dev/null
+++ b/i686-linux-musl/include/limits.h
@@ -0,0 +1,166 @@
+#ifndef _LIMITS_H
+#define _LIMITS_H
+
+#include <features.h>
+
+#include <bits/alltypes.h> /* __LONG_MAX */
+
+/* Support signed or unsigned plain-char */
+
+#if '\xff' > 0
+#define CHAR_MIN 0
+#define CHAR_MAX 255
+#else
+#define CHAR_MIN (-128)
+#define CHAR_MAX 127
+#endif
+
+#define CHAR_BIT 8
+#define SCHAR_MIN (-128)
+#define SCHAR_MAX 127
+#define UCHAR_MAX 255
+#define SHRT_MIN  (-1-0x7fff)
+#define SHRT_MAX  0x7fff
+#define USHRT_MAX 0xffff
+#define INT_MIN  (-1-0x7fffffff)
+#define INT_MAX  0x7fffffff
+#define UINT_MAX 0xffffffffU
+#define LONG_MIN (-LONG_MAX-1)
+#define LONG_MAX __LONG_MAX
+#define ULONG_MAX (2UL*LONG_MAX+1)
+#define LLONG_MIN (-LLONG_MAX-1)
+#define LLONG_MAX  0x7fffffffffffffffLL
+#define ULLONG_MAX (2ULL*LLONG_MAX+1)
+
+#define MB_LEN_MAX 4
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+
+#include <bits/limits.h>
+
+#define PIPE_BUF 4096
+#define FILESIZEBITS 64
+#ifndef NAME_MAX
+#define NAME_MAX 255
+#endif
+#define PATH_MAX 4096
+#define NGROUPS_MAX 32
+#define ARG_MAX 131072
+#define IOV_MAX 1024
+#define SYMLOOP_MAX 40
+#define WORD_BIT 32
+#define SSIZE_MAX LONG_MAX
+#define TZNAME_MAX 6
+#define TTY_NAME_MAX 32
+#define HOST_NAME_MAX 255
+
+#if LONG_MAX == 0x7fffffffL
+#define LONG_BIT 32
+#else
+#define LONG_BIT 64
+#endif
+
+/* Implementation choices... */
+
+#define PTHREAD_KEYS_MAX 128
+#define PTHREAD_STACK_MIN 2048
+#define PTHREAD_DESTRUCTOR_ITERATIONS 4
+#define SEM_VALUE_MAX 0x7fffffff
+#define SEM_NSEMS_MAX 256
+#define DELAYTIMER_MAX 0x7fffffff
+#define MQ_PRIO_MAX 32768
+#define LOGIN_NAME_MAX 256
+
+/* Arbitrary numbers... */
+
+#define BC_BASE_MAX 99
+#define BC_DIM_MAX 2048
+#define BC_SCALE_MAX 99
+#define BC_STRING_MAX 1000
+#define CHARCLASS_NAME_MAX 14
+#define COLL_WEIGHTS_MAX 2
+#define EXPR_NEST_MAX 32
+#define LINE_MAX 4096
+#define RE_DUP_MAX 255
+
+#define NL_ARGMAX 9
+#define NL_MSGMAX 32767
+#define NL_SETMAX 255
+#define NL_TEXTMAX 2048
+
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_XOPEN_SOURCE)
+
+#ifdef PAGESIZE
+#define PAGE_SIZE PAGESIZE
+#endif
+#define NZERO 20
+#define NL_LANGMAX 32
+
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) \
+ || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700)
+
+#define NL_NMAX 16
+
+#endif
+
+/* POSIX/SUS requirements follow. These numbers come directly
+ * from SUS and have nothing to do with the host system. */
+
+#define _POSIX_AIO_LISTIO_MAX   2
+#define _POSIX_AIO_MAX          1
+#define _POSIX_ARG_MAX          4096
+#define _POSIX_CHILD_MAX        25
+#define _POSIX_CLOCKRES_MIN     20000000
+#define _POSIX_DELAYTIMER_MAX   32
+#define _POSIX_HOST_NAME_MAX    255
+#define _POSIX_LINK_MAX         8
+#define _POSIX_LOGIN_NAME_MAX   9
+#define _POSIX_MAX_CANON        255
+#define _POSIX_MAX_INPUT        255
+#define _POSIX_MQ_OPEN_MAX      8
+#define _POSIX_MQ_PRIO_MAX      32
+#define _POSIX_NAME_MAX         14
+#define _POSIX_NGROUPS_MAX      8
+#define _POSIX_OPEN_MAX         20
+#define _POSIX_PATH_MAX         256
+#define _POSIX_PIPE_BUF         512
+#define _POSIX_RE_DUP_MAX       255
+#define _POSIX_RTSIG_MAX        8
+#define _POSIX_SEM_NSEMS_MAX    256
+#define _POSIX_SEM_VALUE_MAX    32767
+#define _POSIX_SIGQUEUE_MAX     32
+#define _POSIX_SSIZE_MAX        32767
+#define _POSIX_STREAM_MAX       8
+#define _POSIX_SS_REPL_MAX      4
+#define _POSIX_SYMLINK_MAX      255
+#define _POSIX_SYMLOOP_MAX      8
+#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
+#define _POSIX_THREAD_KEYS_MAX  128
+#define _POSIX_THREAD_THREADS_MAX 64
+#define _POSIX_TIMER_MAX        32
+#define _POSIX_TRACE_EVENT_NAME_MAX 30
+#define _POSIX_TRACE_NAME_MAX   8
+#define _POSIX_TRACE_SYS_MAX    8
+#define _POSIX_TRACE_USER_EVENT_MAX 32
+#define _POSIX_TTY_NAME_MAX     9
+#define _POSIX_TZNAME_MAX       6
+#define _POSIX2_BC_BASE_MAX     99
+#define _POSIX2_BC_DIM_MAX      2048
+#define _POSIX2_BC_SCALE_MAX    99
+#define _POSIX2_BC_STRING_MAX   1000
+#define _POSIX2_CHARCLASS_NAME_MAX 14
+#define _POSIX2_COLL_WEIGHTS_MAX 2
+#define _POSIX2_EXPR_NEST_MAX   32
+#define _POSIX2_LINE_MAX        2048
+#define _POSIX2_RE_DUP_MAX      255
+
+#define _XOPEN_IOV_MAX          16
+#define _XOPEN_NAME_MAX         255
+#define _XOPEN_PATH_MAX         1024
+
+#endif
diff --git a/i686-linux-musl/include/link.h b/i686-linux-musl/include/link.h
new file mode 100644
index 0000000..8150185
--- /dev/null
+++ b/i686-linux-musl/include/link.h
@@ -0,0 +1,53 @@
+#ifndef _LINK_H
+#define _LINK_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <elf.h>
+#define __NEED_size_t
+#define __NEED_uint32_t
+#include <bits/alltypes.h>
+
+#if UINTPTR_MAX > 0xffffffff
+#define ElfW(type) Elf64_ ## type
+#else
+#define ElfW(type) Elf32_ ## type
+#endif
+
+#include <bits/link.h>
+
+struct dl_phdr_info {
+	ElfW(Addr) dlpi_addr;
+	const char *dlpi_name;
+	const ElfW(Phdr) *dlpi_phdr;
+	ElfW(Half) dlpi_phnum;
+	unsigned long long int dlpi_adds;
+	unsigned long long int dlpi_subs;
+	size_t dlpi_tls_modid;
+	void *dlpi_tls_data;
+};
+
+struct link_map {
+	ElfW(Addr) l_addr;
+	char *l_name;
+	ElfW(Dyn) *l_ld;
+	struct link_map *l_next, *l_prev;
+};
+
+struct r_debug {
+	int r_version;
+	struct link_map *r_map;
+	ElfW(Addr) r_brk;
+	enum { RT_CONSISTENT, RT_ADD, RT_DELETE } r_state;
+	ElfW(Addr) r_ldbase;
+};
+
+int dl_iterate_phdr(int (*)(struct dl_phdr_info *, size_t, void *), void *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
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)
diff --git a/i686-linux-musl/include/locale.h b/i686-linux-musl/include/locale.h
new file mode 100644
index 0000000..11106fe
--- /dev/null
+++ b/i686-linux-musl/include/locale.h
@@ -0,0 +1,88 @@
+#ifndef	_LOCALE_H
+#define	_LOCALE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#if __cplusplus >= 201103L
+#define NULL nullptr
+#elif defined(__cplusplus)
+#define NULL 0L
+#else
+#define NULL ((void*)0)
+#endif
+
+#define LC_CTYPE    0
+#define LC_NUMERIC  1
+#define LC_TIME     2
+#define LC_COLLATE  3
+#define LC_MONETARY 4
+#define LC_MESSAGES 5
+#define LC_ALL      6
+
+struct lconv {
+	char *decimal_point;
+	char *thousands_sep;
+	char *grouping;
+
+	char *int_curr_symbol;
+	char *currency_symbol;
+	char *mon_decimal_point;
+	char *mon_thousands_sep;
+	char *mon_grouping;
+	char *positive_sign;
+	char *negative_sign;
+	char int_frac_digits;
+	char frac_digits;
+	char p_cs_precedes;
+	char p_sep_by_space;
+	char n_cs_precedes;
+	char n_sep_by_space;
+	char p_sign_posn;
+	char n_sign_posn;
+	char int_p_cs_precedes;
+	char int_p_sep_by_space;
+	char int_n_cs_precedes;
+	char int_n_sep_by_space;
+	char int_p_sign_posn;
+	char int_n_sign_posn;
+};
+
+
+char *setlocale (int, const char *);
+struct lconv *localeconv(void);
+
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+
+#define __NEED_locale_t
+
+#include <bits/alltypes.h>
+
+#define LC_GLOBAL_LOCALE ((locale_t)-1)
+
+#define LC_CTYPE_MASK    (1<<LC_CTYPE)
+#define LC_NUMERIC_MASK  (1<<LC_NUMERIC)
+#define LC_TIME_MASK     (1<<LC_TIME)
+#define LC_COLLATE_MASK  (1<<LC_COLLATE)
+#define LC_MONETARY_MASK (1<<LC_MONETARY)
+#define LC_MESSAGES_MASK (1<<LC_MESSAGES)
+#define LC_ALL_MASK      0x7fffffff
+
+locale_t duplocale(locale_t);
+void freelocale(locale_t);
+locale_t newlocale(int, const char *, locale_t);
+locale_t uselocale(locale_t);
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/malloc.h b/i686-linux-musl/include/malloc.h
new file mode 100644
index 0000000..98ba010
--- /dev/null
+++ b/i686-linux-musl/include/malloc.h
@@ -0,0 +1,55 @@
+#ifndef _MALLOC_H
+#define _MALLOC_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __NEED_size_t
+
+#include <bits/alltypes.h>
+
+void *malloc (size_t);
+void *calloc (size_t, size_t);
+void *realloc (void *, size_t);
+void free (void *);
+void *valloc (size_t);
+void *memalign(size_t, size_t);
+
+size_t malloc_usable_size(void *);
+
+struct mallinfo {
+  int arena;
+  int ordblks;
+  int smblks;
+  int hblks;
+  int hblkhd;
+  int usmblks;
+  int fsmblks;
+  int uordblks;
+  int fordblks;
+  int keepcost;
+};
+
+struct mallinfo mallinfo(void);
+
+struct mallinfo2 {
+  size_t arena;
+  size_t ordblks;
+  size_t smblks;
+  size_t hblks;
+  size_t hblkhd;
+  size_t usmblks;
+  size_t fsmblks;
+  size_t uordblks;
+  size_t fordblks;
+  size_t keepcost;
+};
+
+struct mallinfo2 mallinfo2(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/math.h b/i686-linux-musl/include/math.h
new file mode 100644
index 0000000..14f28ec
--- /dev/null
+++ b/i686-linux-musl/include/math.h
@@ -0,0 +1,442 @@
+#ifndef _MATH_H
+#define _MATH_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_float_t
+#define __NEED_double_t
+#include <bits/alltypes.h>
+
+#if 100*__GNUC__+__GNUC_MINOR__ >= 303
+#define NAN       __builtin_nanf("")
+#define INFINITY  __builtin_inff()
+#else
+#define NAN       (0.0f/0.0f)
+#define INFINITY  1e5000f
+#endif
+
+#define HUGE_VALF INFINITY
+#define HUGE_VAL  ((double)INFINITY)
+#define HUGE_VALL ((long double)INFINITY)
+
+#define MATH_ERRNO  1
+#define MATH_ERREXCEPT 2
+#define math_errhandling 2
+
+#define FP_ILOGBNAN (-1-0x7fffffff)
+#define FP_ILOGB0 FP_ILOGBNAN
+
+#define FP_NAN       0
+#define FP_INFINITE  1
+#define FP_ZERO      2
+#define FP_SUBNORMAL 3
+#define FP_NORMAL    4
+
+#ifdef __FP_FAST_FMA
+#define FP_FAST_FMA 1
+#endif
+
+#ifdef __FP_FAST_FMAF
+#define FP_FAST_FMAF 1
+#endif
+
+#ifdef __FP_FAST_FMAL
+#define FP_FAST_FMAL 1
+#endif
+
+int __fpclassify(double);
+int __fpclassifyf(float);
+int __fpclassifyl(long double);
+
+static __inline unsigned __FLOAT_BITS(float __f)
+{
+	union {float __f; unsigned __i;} __u;
+	__u.__f = __f;
+	return __u.__i;
+}
+static __inline unsigned long long __DOUBLE_BITS(double __f)
+{
+	union {double __f; unsigned long long __i;} __u;
+	__u.__f = __f;
+	return __u.__i;
+}
+
+#define fpclassify(x) ( \
+	sizeof(x) == sizeof(float) ? __fpclassifyf(x) : \
+	sizeof(x) == sizeof(double) ? __fpclassify(x) : \
+	__fpclassifyl(x) )
+
+#define isinf(x) ( \
+	sizeof(x) == sizeof(float) ? (__FLOAT_BITS(x) & 0x7fffffff) == 0x7f800000 : \
+	sizeof(x) == sizeof(double) ? (__DOUBLE_BITS(x) & -1ULL>>1) == 0x7ffULL<<52 : \
+	__fpclassifyl(x) == FP_INFINITE)
+
+#define isnan(x) ( \
+	sizeof(x) == sizeof(float) ? (__FLOAT_BITS(x) & 0x7fffffff) > 0x7f800000 : \
+	sizeof(x) == sizeof(double) ? (__DOUBLE_BITS(x) & -1ULL>>1) > 0x7ffULL<<52 : \
+	__fpclassifyl(x) == FP_NAN)
+
+#define isnormal(x) ( \
+	sizeof(x) == sizeof(float) ? ((__FLOAT_BITS(x)+0x00800000) & 0x7fffffff) >= 0x01000000 : \
+	sizeof(x) == sizeof(double) ? ((__DOUBLE_BITS(x)+(1ULL<<52)) & -1ULL>>1) >= 1ULL<<53 : \
+	__fpclassifyl(x) == FP_NORMAL)
+
+#define isfinite(x) ( \
+	sizeof(x) == sizeof(float) ? (__FLOAT_BITS(x) & 0x7fffffff) < 0x7f800000 : \
+	sizeof(x) == sizeof(double) ? (__DOUBLE_BITS(x) & -1ULL>>1) < 0x7ffULL<<52 : \
+	__fpclassifyl(x) > FP_INFINITE)
+
+int __signbit(double);
+int __signbitf(float);
+int __signbitl(long double);
+
+#define signbit(x) ( \
+	sizeof(x) == sizeof(float) ? (int)(__FLOAT_BITS(x)>>31) : \
+	sizeof(x) == sizeof(double) ? (int)(__DOUBLE_BITS(x)>>63) : \
+	__signbitl(x) )
+
+#define isunordered(x,y) (isnan((x)) ? ((void)(y),1) : isnan((y)))
+
+#define __ISREL_DEF(rel, op, type) \
+static __inline int __is##rel(type __x, type __y) \
+{ return !isunordered(__x,__y) && __x op __y; }
+
+__ISREL_DEF(lessf, <, float_t)
+__ISREL_DEF(less, <, double_t)
+__ISREL_DEF(lessl, <, long double)
+__ISREL_DEF(lessequalf, <=, float_t)
+__ISREL_DEF(lessequal, <=, double_t)
+__ISREL_DEF(lessequall, <=, long double)
+__ISREL_DEF(lessgreaterf, !=, float_t)
+__ISREL_DEF(lessgreater, !=, double_t)
+__ISREL_DEF(lessgreaterl, !=, long double)
+__ISREL_DEF(greaterf, >, float_t)
+__ISREL_DEF(greater, >, double_t)
+__ISREL_DEF(greaterl, >, long double)
+__ISREL_DEF(greaterequalf, >=, float_t)
+__ISREL_DEF(greaterequal, >=, double_t)
+__ISREL_DEF(greaterequall, >=, long double)
+
+#define __tg_pred_2(x, y, p) ( \
+	sizeof((x)+(y)) == sizeof(float) ? p##f(x, y) : \
+	sizeof((x)+(y)) == sizeof(double) ? p(x, y) : \
+	p##l(x, y) )
+
+#define isless(x, y)            __tg_pred_2(x, y, __isless)
+#define islessequal(x, y)       __tg_pred_2(x, y, __islessequal)
+#define islessgreater(x, y)     __tg_pred_2(x, y, __islessgreater)
+#define isgreater(x, y)         __tg_pred_2(x, y, __isgreater)
+#define isgreaterequal(x, y)    __tg_pred_2(x, y, __isgreaterequal)
+
+double      acos(double);
+float       acosf(float);
+long double acosl(long double);
+
+double      acosh(double);
+float       acoshf(float);
+long double acoshl(long double);
+
+double      asin(double);
+float       asinf(float);
+long double asinl(long double);
+
+double      asinh(double);
+float       asinhf(float);
+long double asinhl(long double);
+
+double      atan(double);
+float       atanf(float);
+long double atanl(long double);
+
+double      atan2(double, double);
+float       atan2f(float, float);
+long double atan2l(long double, long double);
+
+double      atanh(double);
+float       atanhf(float);
+long double atanhl(long double);
+
+double      cbrt(double);
+float       cbrtf(float);
+long double cbrtl(long double);
+
+double      ceil(double);
+float       ceilf(float);
+long double ceill(long double);
+
+double      copysign(double, double);
+float       copysignf(float, float);
+long double copysignl(long double, long double);
+
+double      cos(double);
+float       cosf(float);
+long double cosl(long double);
+
+double      cosh(double);
+float       coshf(float);
+long double coshl(long double);
+
+double      erf(double);
+float       erff(float);
+long double erfl(long double);
+
+double      erfc(double);
+float       erfcf(float);
+long double erfcl(long double);
+
+double      exp(double);
+float       expf(float);
+long double expl(long double);
+
+double      exp2(double);
+float       exp2f(float);
+long double exp2l(long double);
+
+double      expm1(double);
+float       expm1f(float);
+long double expm1l(long double);
+
+double      fabs(double);
+float       fabsf(float);
+long double fabsl(long double);
+
+double      fdim(double, double);
+float       fdimf(float, float);
+long double fdiml(long double, long double);
+
+double      floor(double);
+float       floorf(float);
+long double floorl(long double);
+
+double      fma(double, double, double);
+float       fmaf(float, float, float);
+long double fmal(long double, long double, long double);
+
+double      fmax(double, double);
+float       fmaxf(float, float);
+long double fmaxl(long double, long double);
+
+double      fmin(double, double);
+float       fminf(float, float);
+long double fminl(long double, long double);
+
+double      fmod(double, double);
+float       fmodf(float, float);
+long double fmodl(long double, long double);
+
+double      frexp(double, int *);
+float       frexpf(float, int *);
+long double frexpl(long double, int *);
+
+double      hypot(double, double);
+float       hypotf(float, float);
+long double hypotl(long double, long double);
+
+int         ilogb(double);
+int         ilogbf(float);
+int         ilogbl(long double);
+
+double      ldexp(double, int);
+float       ldexpf(float, int);
+long double ldexpl(long double, int);
+
+double      lgamma(double);
+float       lgammaf(float);
+long double lgammal(long double);
+
+long long   llrint(double);
+long long   llrintf(float);
+long long   llrintl(long double);
+
+long long   llround(double);
+long long   llroundf(float);
+long long   llroundl(long double);
+
+double      log(double);
+float       logf(float);
+long double logl(long double);
+
+double      log10(double);
+float       log10f(float);
+long double log10l(long double);
+
+double      log1p(double);
+float       log1pf(float);
+long double log1pl(long double);
+
+double      log2(double);
+float       log2f(float);
+long double log2l(long double);
+
+double      logb(double);
+float       logbf(float);
+long double logbl(long double);
+
+long        lrint(double);
+long        lrintf(float);
+long        lrintl(long double);
+
+long        lround(double);
+long        lroundf(float);
+long        lroundl(long double);
+
+double      modf(double, double *);
+float       modff(float, float *);
+long double modfl(long double, long double *);
+
+double      nan(const char *);
+float       nanf(const char *);
+long double nanl(const char *);
+
+double      nearbyint(double);
+float       nearbyintf(float);
+long double nearbyintl(long double);
+
+double      nextafter(double, double);
+float       nextafterf(float, float);
+long double nextafterl(long double, long double);
+
+double      nexttoward(double, long double);
+float       nexttowardf(float, long double);
+long double nexttowardl(long double, long double);
+
+double      pow(double, double);
+float       powf(float, float);
+long double powl(long double, long double);
+
+double      remainder(double, double);
+float       remainderf(float, float);
+long double remainderl(long double, long double);
+
+double      remquo(double, double, int *);
+float       remquof(float, float, int *);
+long double remquol(long double, long double, int *);
+
+double      rint(double);
+float       rintf(float);
+long double rintl(long double);
+
+double      round(double);
+float       roundf(float);
+long double roundl(long double);
+
+double      scalbln(double, long);
+float       scalblnf(float, long);
+long double scalblnl(long double, long);
+
+double      scalbn(double, int);
+float       scalbnf(float, int);
+long double scalbnl(long double, int);
+
+double      sin(double);
+float       sinf(float);
+long double sinl(long double);
+
+double      sinh(double);
+float       sinhf(float);
+long double sinhl(long double);
+
+double      sqrt(double);
+float       sqrtf(float);
+long double sqrtl(long double);
+
+double      tan(double);
+float       tanf(float);
+long double tanl(long double);
+
+double      tanh(double);
+float       tanhf(float);
+long double tanhl(long double);
+
+double      tgamma(double);
+float       tgammaf(float);
+long double tgammal(long double);
+
+double      trunc(double);
+float       truncf(float);
+long double truncl(long double);
+
+
+#if defined(_XOPEN_SOURCE) || defined(_BSD_SOURCE)
+#undef  MAXFLOAT
+#define MAXFLOAT        3.40282346638528859812e+38F
+#endif
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define M_E             2.7182818284590452354   /* e */
+#define M_LOG2E         1.4426950408889634074   /* log_2 e */
+#define M_LOG10E        0.43429448190325182765  /* log_10 e */
+#define M_LN2           0.69314718055994530942  /* log_e 2 */
+#define M_LN10          2.30258509299404568402  /* log_e 10 */
+#define M_PI            3.14159265358979323846  /* pi */
+#define M_PI_2          1.57079632679489661923  /* pi/2 */
+#define M_PI_4          0.78539816339744830962  /* pi/4 */
+#define M_1_PI          0.31830988618379067154  /* 1/pi */
+#define M_2_PI          0.63661977236758134308  /* 2/pi */
+#define M_2_SQRTPI      1.12837916709551257390  /* 2/sqrt(pi) */
+#define M_SQRT2         1.41421356237309504880  /* sqrt(2) */
+#define M_SQRT1_2       0.70710678118654752440  /* 1/sqrt(2) */
+
+extern int signgam;
+
+double      j0(double);
+double      j1(double);
+double      jn(int, double);
+
+double      y0(double);
+double      y1(double);
+double      yn(int, double);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define HUGE            3.40282346638528859812e+38F
+
+double      drem(double, double);
+float       dremf(float, float);
+
+int         finite(double);
+int         finitef(float);
+
+double      scalb(double, double);
+float       scalbf(float, float);
+
+double      significand(double);
+float       significandf(float);
+
+double      lgamma_r(double, int*);
+float       lgammaf_r(float, int*);
+
+float       j0f(float);
+float       j1f(float);
+float       jnf(int, float);
+
+float       y0f(float);
+float       y1f(float);
+float       ynf(int, float);
+#endif
+
+#ifdef _GNU_SOURCE
+long double lgammal_r(long double, int*);
+
+void        sincos(double, double*, double*);
+void        sincosf(float, float*, float*);
+void        sincosl(long double, long double*, long double*);
+
+double      exp10(double);
+float       exp10f(float);
+long double exp10l(long double);
+
+double      pow10(double);
+float       pow10f(float);
+long double pow10l(long double);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/memory.h b/i686-linux-musl/include/memory.h
new file mode 100644
index 0000000..3b2f590
--- /dev/null
+++ b/i686-linux-musl/include/memory.h
@@ -0,0 +1 @@
+#include <string.h>
diff --git a/i686-linux-musl/include/misc/cxl.h b/i686-linux-musl/include/misc/cxl.h
new file mode 100644
index 0000000..64b5992
--- /dev/null
+++ b/i686-linux-musl/include/misc/cxl.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_MISC_CXL_H
+#define _UAPI_MISC_CXL_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+struct cxl_ioctl_start_work {
+  __u64 flags;
+  __u64 work_element_descriptor;
+  __u64 amr;
+  __s16 num_interrupts;
+  __u16 tid;
+  __s32 reserved1;
+  __u64 reserved2;
+  __u64 reserved3;
+  __u64 reserved4;
+  __u64 reserved5;
+};
+#define CXL_START_WORK_AMR 0x0000000000000001ULL
+#define CXL_START_WORK_NUM_IRQS 0x0000000000000002ULL
+#define CXL_START_WORK_ERR_FF 0x0000000000000004ULL
+#define CXL_START_WORK_TID 0x0000000000000008ULL
+#define CXL_START_WORK_ALL (CXL_START_WORK_AMR | CXL_START_WORK_NUM_IRQS | CXL_START_WORK_ERR_FF | CXL_START_WORK_TID)
+#define CXL_MODE_DEDICATED 0x1
+#define CXL_MODE_DIRECTED 0x2
+#define CXL_AFUID_FLAG_SLAVE 0x1
+struct cxl_afu_id {
+  __u64 flags;
+  __u32 card_id;
+  __u32 afu_offset;
+  __u32 afu_mode;
+  __u32 reserved1;
+  __u64 reserved2;
+  __u64 reserved3;
+  __u64 reserved4;
+  __u64 reserved5;
+  __u64 reserved6;
+};
+#define CXL_AI_NEED_HEADER 0x0000000000000001ULL
+#define CXL_AI_ALL CXL_AI_NEED_HEADER
+#define CXL_AI_HEADER_SIZE 128
+#define CXL_AI_BUFFER_SIZE 4096
+#define CXL_AI_MAX_ENTRIES 256
+#define CXL_AI_MAX_CHUNK_SIZE (CXL_AI_BUFFER_SIZE * CXL_AI_MAX_ENTRIES)
+struct cxl_adapter_image {
+  __u64 flags;
+  __u64 data;
+  __u64 len_data;
+  __u64 len_image;
+  __u64 reserved1;
+  __u64 reserved2;
+  __u64 reserved3;
+  __u64 reserved4;
+};
+#define CXL_MAGIC 0xCA
+#define CXL_IOCTL_START_WORK _IOW(CXL_MAGIC, 0x00, struct cxl_ioctl_start_work)
+#define CXL_IOCTL_GET_PROCESS_ELEMENT _IOR(CXL_MAGIC, 0x01, __u32)
+#define CXL_IOCTL_GET_AFU_ID _IOR(CXL_MAGIC, 0x02, struct cxl_afu_id)
+#define CXL_IOCTL_DOWNLOAD_IMAGE _IOW(CXL_MAGIC, 0x0A, struct cxl_adapter_image)
+#define CXL_IOCTL_VALIDATE_IMAGE _IOW(CXL_MAGIC, 0x0B, struct cxl_adapter_image)
+#define CXL_READ_MIN_SIZE 0x1000
+enum cxl_event_type {
+  CXL_EVENT_RESERVED = 0,
+  CXL_EVENT_AFU_INTERRUPT = 1,
+  CXL_EVENT_DATA_STORAGE = 2,
+  CXL_EVENT_AFU_ERROR = 3,
+  CXL_EVENT_AFU_DRIVER = 4,
+};
+struct cxl_event_header {
+  __u16 type;
+  __u16 size;
+  __u16 process_element;
+  __u16 reserved1;
+};
+struct cxl_event_afu_interrupt {
+  __u16 flags;
+  __u16 irq;
+  __u32 reserved1;
+};
+struct cxl_event_data_storage {
+  __u16 flags;
+  __u16 reserved1;
+  __u32 reserved2;
+  __u64 addr;
+  __u64 dsisr;
+  __u64 reserved3;
+};
+struct cxl_event_afu_error {
+  __u16 flags;
+  __u16 reserved1;
+  __u32 reserved2;
+  __u64 error;
+};
+struct cxl_event_afu_driver_reserved {
+  __u32 data_size;
+  __u8 data[];
+};
+struct cxl_event {
+  struct cxl_event_header header;
+  union {
+    struct cxl_event_afu_interrupt irq;
+    struct cxl_event_data_storage fault;
+    struct cxl_event_afu_error afu_error;
+    struct cxl_event_afu_driver_reserved afu_driver_event;
+  };
+};
+#endif
diff --git a/i686-linux-musl/include/misc/fastrpc.h b/i686-linux-musl/include/misc/fastrpc.h
new file mode 100644
index 0000000..62955ec
--- /dev/null
+++ b/i686-linux-musl/include/misc/fastrpc.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 __QCOM_FASTRPC_H__
+#define __QCOM_FASTRPC_H__
+#include <linux/types.h>
+#define FASTRPC_IOCTL_ALLOC_DMA_BUFF _IOWR('R', 1, struct fastrpc_alloc_dma_buf)
+#define FASTRPC_IOCTL_FREE_DMA_BUFF _IOWR('R', 2, __u32)
+#define FASTRPC_IOCTL_INVOKE _IOWR('R', 3, struct fastrpc_invoke)
+#define FASTRPC_IOCTL_INIT_ATTACH _IO('R', 4)
+#define FASTRPC_IOCTL_INIT_CREATE _IOWR('R', 5, struct fastrpc_init_create)
+#define FASTRPC_IOCTL_MMAP _IOWR('R', 6, struct fastrpc_req_mmap)
+#define FASTRPC_IOCTL_MUNMAP _IOWR('R', 7, struct fastrpc_req_munmap)
+#define FASTRPC_IOCTL_INIT_ATTACH_SNS _IO('R', 8)
+struct fastrpc_invoke_args {
+  __u64 ptr;
+  __u64 length;
+  __s32 fd;
+  __u32 reserved;
+};
+struct fastrpc_invoke {
+  __u32 handle;
+  __u32 sc;
+  __u64 args;
+};
+struct fastrpc_init_create {
+  __u32 filelen;
+  __s32 filefd;
+  __u32 attrs;
+  __u32 siglen;
+  __u64 file;
+};
+struct fastrpc_alloc_dma_buf {
+  __s32 fd;
+  __u32 flags;
+  __u64 size;
+};
+struct fastrpc_req_mmap {
+  __s32 fd;
+  __u32 flags;
+  __u64 vaddrin;
+  __u64 size;
+  __u64 vaddrout;
+};
+struct fastrpc_req_munmap {
+  __u64 vaddrout;
+  __u64 size;
+};
+#endif
diff --git a/i686-linux-musl/include/misc/habanalabs.h b/i686-linux-musl/include/misc/habanalabs.h
new file mode 100644
index 0000000..ed2ba7c
--- /dev/null
+++ b/i686-linux-musl/include/misc/habanalabs.h
@@ -0,0 +1,631 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef HABANALABS_H_
+#define HABANALABS_H_
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define GOYA_KMD_SRAM_RESERVED_SIZE_FROM_START 0x8000
+#define GAUDI_DRIVER_SRAM_RESERVED_SIZE_FROM_START 0x80
+#define GAUDI_FIRST_AVAILABLE_W_S_SYNC_OBJECT 144
+#define GAUDI_FIRST_AVAILABLE_W_S_MONITOR 72
+enum goya_queue_id {
+  GOYA_QUEUE_ID_DMA_0 = 0,
+  GOYA_QUEUE_ID_DMA_1 = 1,
+  GOYA_QUEUE_ID_DMA_2 = 2,
+  GOYA_QUEUE_ID_DMA_3 = 3,
+  GOYA_QUEUE_ID_DMA_4 = 4,
+  GOYA_QUEUE_ID_CPU_PQ = 5,
+  GOYA_QUEUE_ID_MME = 6,
+  GOYA_QUEUE_ID_TPC0 = 7,
+  GOYA_QUEUE_ID_TPC1 = 8,
+  GOYA_QUEUE_ID_TPC2 = 9,
+  GOYA_QUEUE_ID_TPC3 = 10,
+  GOYA_QUEUE_ID_TPC4 = 11,
+  GOYA_QUEUE_ID_TPC5 = 12,
+  GOYA_QUEUE_ID_TPC6 = 13,
+  GOYA_QUEUE_ID_TPC7 = 14,
+  GOYA_QUEUE_ID_SIZE
+};
+enum gaudi_queue_id {
+  GAUDI_QUEUE_ID_DMA_0_0 = 0,
+  GAUDI_QUEUE_ID_DMA_0_1 = 1,
+  GAUDI_QUEUE_ID_DMA_0_2 = 2,
+  GAUDI_QUEUE_ID_DMA_0_3 = 3,
+  GAUDI_QUEUE_ID_DMA_1_0 = 4,
+  GAUDI_QUEUE_ID_DMA_1_1 = 5,
+  GAUDI_QUEUE_ID_DMA_1_2 = 6,
+  GAUDI_QUEUE_ID_DMA_1_3 = 7,
+  GAUDI_QUEUE_ID_CPU_PQ = 8,
+  GAUDI_QUEUE_ID_DMA_2_0 = 9,
+  GAUDI_QUEUE_ID_DMA_2_1 = 10,
+  GAUDI_QUEUE_ID_DMA_2_2 = 11,
+  GAUDI_QUEUE_ID_DMA_2_3 = 12,
+  GAUDI_QUEUE_ID_DMA_3_0 = 13,
+  GAUDI_QUEUE_ID_DMA_3_1 = 14,
+  GAUDI_QUEUE_ID_DMA_3_2 = 15,
+  GAUDI_QUEUE_ID_DMA_3_3 = 16,
+  GAUDI_QUEUE_ID_DMA_4_0 = 17,
+  GAUDI_QUEUE_ID_DMA_4_1 = 18,
+  GAUDI_QUEUE_ID_DMA_4_2 = 19,
+  GAUDI_QUEUE_ID_DMA_4_3 = 20,
+  GAUDI_QUEUE_ID_DMA_5_0 = 21,
+  GAUDI_QUEUE_ID_DMA_5_1 = 22,
+  GAUDI_QUEUE_ID_DMA_5_2 = 23,
+  GAUDI_QUEUE_ID_DMA_5_3 = 24,
+  GAUDI_QUEUE_ID_DMA_6_0 = 25,
+  GAUDI_QUEUE_ID_DMA_6_1 = 26,
+  GAUDI_QUEUE_ID_DMA_6_2 = 27,
+  GAUDI_QUEUE_ID_DMA_6_3 = 28,
+  GAUDI_QUEUE_ID_DMA_7_0 = 29,
+  GAUDI_QUEUE_ID_DMA_7_1 = 30,
+  GAUDI_QUEUE_ID_DMA_7_2 = 31,
+  GAUDI_QUEUE_ID_DMA_7_3 = 32,
+  GAUDI_QUEUE_ID_MME_0_0 = 33,
+  GAUDI_QUEUE_ID_MME_0_1 = 34,
+  GAUDI_QUEUE_ID_MME_0_2 = 35,
+  GAUDI_QUEUE_ID_MME_0_3 = 36,
+  GAUDI_QUEUE_ID_MME_1_0 = 37,
+  GAUDI_QUEUE_ID_MME_1_1 = 38,
+  GAUDI_QUEUE_ID_MME_1_2 = 39,
+  GAUDI_QUEUE_ID_MME_1_3 = 40,
+  GAUDI_QUEUE_ID_TPC_0_0 = 41,
+  GAUDI_QUEUE_ID_TPC_0_1 = 42,
+  GAUDI_QUEUE_ID_TPC_0_2 = 43,
+  GAUDI_QUEUE_ID_TPC_0_3 = 44,
+  GAUDI_QUEUE_ID_TPC_1_0 = 45,
+  GAUDI_QUEUE_ID_TPC_1_1 = 46,
+  GAUDI_QUEUE_ID_TPC_1_2 = 47,
+  GAUDI_QUEUE_ID_TPC_1_3 = 48,
+  GAUDI_QUEUE_ID_TPC_2_0 = 49,
+  GAUDI_QUEUE_ID_TPC_2_1 = 50,
+  GAUDI_QUEUE_ID_TPC_2_2 = 51,
+  GAUDI_QUEUE_ID_TPC_2_3 = 52,
+  GAUDI_QUEUE_ID_TPC_3_0 = 53,
+  GAUDI_QUEUE_ID_TPC_3_1 = 54,
+  GAUDI_QUEUE_ID_TPC_3_2 = 55,
+  GAUDI_QUEUE_ID_TPC_3_3 = 56,
+  GAUDI_QUEUE_ID_TPC_4_0 = 57,
+  GAUDI_QUEUE_ID_TPC_4_1 = 58,
+  GAUDI_QUEUE_ID_TPC_4_2 = 59,
+  GAUDI_QUEUE_ID_TPC_4_3 = 60,
+  GAUDI_QUEUE_ID_TPC_5_0 = 61,
+  GAUDI_QUEUE_ID_TPC_5_1 = 62,
+  GAUDI_QUEUE_ID_TPC_5_2 = 63,
+  GAUDI_QUEUE_ID_TPC_5_3 = 64,
+  GAUDI_QUEUE_ID_TPC_6_0 = 65,
+  GAUDI_QUEUE_ID_TPC_6_1 = 66,
+  GAUDI_QUEUE_ID_TPC_6_2 = 67,
+  GAUDI_QUEUE_ID_TPC_6_3 = 68,
+  GAUDI_QUEUE_ID_TPC_7_0 = 69,
+  GAUDI_QUEUE_ID_TPC_7_1 = 70,
+  GAUDI_QUEUE_ID_TPC_7_2 = 71,
+  GAUDI_QUEUE_ID_TPC_7_3 = 72,
+  GAUDI_QUEUE_ID_NIC_0_0 = 73,
+  GAUDI_QUEUE_ID_NIC_0_1 = 74,
+  GAUDI_QUEUE_ID_NIC_0_2 = 75,
+  GAUDI_QUEUE_ID_NIC_0_3 = 76,
+  GAUDI_QUEUE_ID_NIC_1_0 = 77,
+  GAUDI_QUEUE_ID_NIC_1_1 = 78,
+  GAUDI_QUEUE_ID_NIC_1_2 = 79,
+  GAUDI_QUEUE_ID_NIC_1_3 = 80,
+  GAUDI_QUEUE_ID_NIC_2_0 = 81,
+  GAUDI_QUEUE_ID_NIC_2_1 = 82,
+  GAUDI_QUEUE_ID_NIC_2_2 = 83,
+  GAUDI_QUEUE_ID_NIC_2_3 = 84,
+  GAUDI_QUEUE_ID_NIC_3_0 = 85,
+  GAUDI_QUEUE_ID_NIC_3_1 = 86,
+  GAUDI_QUEUE_ID_NIC_3_2 = 87,
+  GAUDI_QUEUE_ID_NIC_3_3 = 88,
+  GAUDI_QUEUE_ID_NIC_4_0 = 89,
+  GAUDI_QUEUE_ID_NIC_4_1 = 90,
+  GAUDI_QUEUE_ID_NIC_4_2 = 91,
+  GAUDI_QUEUE_ID_NIC_4_3 = 92,
+  GAUDI_QUEUE_ID_NIC_5_0 = 93,
+  GAUDI_QUEUE_ID_NIC_5_1 = 94,
+  GAUDI_QUEUE_ID_NIC_5_2 = 95,
+  GAUDI_QUEUE_ID_NIC_5_3 = 96,
+  GAUDI_QUEUE_ID_NIC_6_0 = 97,
+  GAUDI_QUEUE_ID_NIC_6_1 = 98,
+  GAUDI_QUEUE_ID_NIC_6_2 = 99,
+  GAUDI_QUEUE_ID_NIC_6_3 = 100,
+  GAUDI_QUEUE_ID_NIC_7_0 = 101,
+  GAUDI_QUEUE_ID_NIC_7_1 = 102,
+  GAUDI_QUEUE_ID_NIC_7_2 = 103,
+  GAUDI_QUEUE_ID_NIC_7_3 = 104,
+  GAUDI_QUEUE_ID_NIC_8_0 = 105,
+  GAUDI_QUEUE_ID_NIC_8_1 = 106,
+  GAUDI_QUEUE_ID_NIC_8_2 = 107,
+  GAUDI_QUEUE_ID_NIC_8_3 = 108,
+  GAUDI_QUEUE_ID_NIC_9_0 = 109,
+  GAUDI_QUEUE_ID_NIC_9_1 = 110,
+  GAUDI_QUEUE_ID_NIC_9_2 = 111,
+  GAUDI_QUEUE_ID_NIC_9_3 = 112,
+  GAUDI_QUEUE_ID_SIZE
+};
+enum goya_engine_id {
+  GOYA_ENGINE_ID_DMA_0 = 0,
+  GOYA_ENGINE_ID_DMA_1,
+  GOYA_ENGINE_ID_DMA_2,
+  GOYA_ENGINE_ID_DMA_3,
+  GOYA_ENGINE_ID_DMA_4,
+  GOYA_ENGINE_ID_MME_0,
+  GOYA_ENGINE_ID_TPC_0,
+  GOYA_ENGINE_ID_TPC_1,
+  GOYA_ENGINE_ID_TPC_2,
+  GOYA_ENGINE_ID_TPC_3,
+  GOYA_ENGINE_ID_TPC_4,
+  GOYA_ENGINE_ID_TPC_5,
+  GOYA_ENGINE_ID_TPC_6,
+  GOYA_ENGINE_ID_TPC_7,
+  GOYA_ENGINE_ID_SIZE
+};
+enum gaudi_engine_id {
+  GAUDI_ENGINE_ID_DMA_0 = 0,
+  GAUDI_ENGINE_ID_DMA_1,
+  GAUDI_ENGINE_ID_DMA_2,
+  GAUDI_ENGINE_ID_DMA_3,
+  GAUDI_ENGINE_ID_DMA_4,
+  GAUDI_ENGINE_ID_DMA_5,
+  GAUDI_ENGINE_ID_DMA_6,
+  GAUDI_ENGINE_ID_DMA_7,
+  GAUDI_ENGINE_ID_MME_0,
+  GAUDI_ENGINE_ID_MME_1,
+  GAUDI_ENGINE_ID_MME_2,
+  GAUDI_ENGINE_ID_MME_3,
+  GAUDI_ENGINE_ID_TPC_0,
+  GAUDI_ENGINE_ID_TPC_1,
+  GAUDI_ENGINE_ID_TPC_2,
+  GAUDI_ENGINE_ID_TPC_3,
+  GAUDI_ENGINE_ID_TPC_4,
+  GAUDI_ENGINE_ID_TPC_5,
+  GAUDI_ENGINE_ID_TPC_6,
+  GAUDI_ENGINE_ID_TPC_7,
+  GAUDI_ENGINE_ID_NIC_0,
+  GAUDI_ENGINE_ID_NIC_1,
+  GAUDI_ENGINE_ID_NIC_2,
+  GAUDI_ENGINE_ID_NIC_3,
+  GAUDI_ENGINE_ID_NIC_4,
+  GAUDI_ENGINE_ID_NIC_5,
+  GAUDI_ENGINE_ID_NIC_6,
+  GAUDI_ENGINE_ID_NIC_7,
+  GAUDI_ENGINE_ID_NIC_8,
+  GAUDI_ENGINE_ID_NIC_9,
+  GAUDI_ENGINE_ID_SIZE
+};
+enum hl_goya_pll_index {
+  HL_GOYA_CPU_PLL = 0,
+  HL_GOYA_IC_PLL,
+  HL_GOYA_MC_PLL,
+  HL_GOYA_MME_PLL,
+  HL_GOYA_PCI_PLL,
+  HL_GOYA_EMMC_PLL,
+  HL_GOYA_TPC_PLL,
+  HL_GOYA_PLL_MAX
+};
+enum hl_gaudi_pll_index {
+  HL_GAUDI_CPU_PLL = 0,
+  HL_GAUDI_PCI_PLL,
+  HL_GAUDI_SRAM_PLL,
+  HL_GAUDI_HBM_PLL,
+  HL_GAUDI_NIC_PLL,
+  HL_GAUDI_DMA_PLL,
+  HL_GAUDI_MESH_PLL,
+  HL_GAUDI_MME_PLL,
+  HL_GAUDI_TPC_PLL,
+  HL_GAUDI_IF_PLL,
+  HL_GAUDI_PLL_MAX
+};
+enum hl_device_status {
+  HL_DEVICE_STATUS_OPERATIONAL,
+  HL_DEVICE_STATUS_IN_RESET,
+  HL_DEVICE_STATUS_MALFUNCTION,
+  HL_DEVICE_STATUS_NEEDS_RESET,
+  HL_DEVICE_STATUS_IN_DEVICE_CREATION,
+  HL_DEVICE_STATUS_LAST = HL_DEVICE_STATUS_IN_DEVICE_CREATION
+};
+enum hl_server_type {
+  HL_SERVER_TYPE_UNKNOWN = 0,
+  HL_SERVER_GAUDI_HLS1 = 1,
+  HL_SERVER_GAUDI_HLS1H = 2,
+  HL_SERVER_GAUDI_TYPE1 = 3,
+  HL_SERVER_GAUDI_TYPE2 = 4
+};
+#define HL_INFO_HW_IP_INFO 0
+#define HL_INFO_HW_EVENTS 1
+#define HL_INFO_DRAM_USAGE 2
+#define HL_INFO_HW_IDLE 3
+#define HL_INFO_DEVICE_STATUS 4
+#define HL_INFO_DEVICE_UTILIZATION 6
+#define HL_INFO_HW_EVENTS_AGGREGATE 7
+#define HL_INFO_CLK_RATE 8
+#define HL_INFO_RESET_COUNT 9
+#define HL_INFO_TIME_SYNC 10
+#define HL_INFO_CS_COUNTERS 11
+#define HL_INFO_PCI_COUNTERS 12
+#define HL_INFO_CLK_THROTTLE_REASON 13
+#define HL_INFO_SYNC_MANAGER 14
+#define HL_INFO_TOTAL_ENERGY 15
+#define HL_INFO_PLL_FREQUENCY 16
+#define HL_INFO_POWER 17
+#define HL_INFO_OPEN_STATS 18
+#define HL_INFO_VERSION_MAX_LEN 128
+#define HL_INFO_CARD_NAME_MAX_LEN 16
+struct hl_info_hw_ip_info {
+  __u64 sram_base_address;
+  __u64 dram_base_address;
+  __u64 dram_size;
+  __u32 sram_size;
+  __u32 num_of_events;
+  __u32 device_id;
+  __u32 module_id;
+  __u32 reserved;
+  __u16 first_available_interrupt_id;
+  __u16 server_type;
+  __u32 cpld_version;
+  __u32 psoc_pci_pll_nr;
+  __u32 psoc_pci_pll_nf;
+  __u32 psoc_pci_pll_od;
+  __u32 psoc_pci_pll_div_factor;
+  __u8 tpc_enabled_mask;
+  __u8 dram_enabled;
+  __u8 pad[2];
+  __u8 cpucp_version[HL_INFO_VERSION_MAX_LEN];
+  __u8 card_name[HL_INFO_CARD_NAME_MAX_LEN];
+  __u64 reserved2;
+  __u64 dram_page_size;
+};
+struct hl_info_dram_usage {
+  __u64 dram_free_mem;
+  __u64 ctx_dram_mem;
+};
+#define HL_BUSY_ENGINES_MASK_EXT_SIZE 2
+struct hl_info_hw_idle {
+  __u32 is_idle;
+  __u32 busy_engines_mask;
+  __u64 busy_engines_mask_ext[HL_BUSY_ENGINES_MASK_EXT_SIZE];
+};
+struct hl_info_device_status {
+  __u32 status;
+  __u32 pad;
+};
+struct hl_info_device_utilization {
+  __u32 utilization;
+  __u32 pad;
+};
+struct hl_info_clk_rate {
+  __u32 cur_clk_rate_mhz;
+  __u32 max_clk_rate_mhz;
+};
+struct hl_info_reset_count {
+  __u32 hard_reset_cnt;
+  __u32 soft_reset_cnt;
+};
+struct hl_info_time_sync {
+  __u64 device_time;
+  __u64 host_time;
+};
+struct hl_info_pci_counters {
+  __u64 rx_throughput;
+  __u64 tx_throughput;
+  __u64 replay_cnt;
+};
+#define HL_CLK_THROTTLE_POWER 0x1
+#define HL_CLK_THROTTLE_THERMAL 0x2
+struct hl_info_clk_throttle {
+  __u32 clk_throttling_reason;
+};
+struct hl_info_energy {
+  __u64 total_energy_consumption;
+};
+#define HL_PLL_NUM_OUTPUTS 4
+struct hl_pll_frequency_info {
+  __u16 output[HL_PLL_NUM_OUTPUTS];
+};
+struct hl_open_stats_info {
+  __u64 open_counter;
+  __u64 last_open_period_ms;
+};
+struct hl_power_info {
+  __u64 power;
+};
+struct hl_info_sync_manager {
+  __u32 first_available_sync_object;
+  __u32 first_available_monitor;
+  __u32 first_available_cq;
+  __u32 reserved;
+};
+struct hl_info_cs_counters {
+  __u64 total_out_of_mem_drop_cnt;
+  __u64 ctx_out_of_mem_drop_cnt;
+  __u64 total_parsing_drop_cnt;
+  __u64 ctx_parsing_drop_cnt;
+  __u64 total_queue_full_drop_cnt;
+  __u64 ctx_queue_full_drop_cnt;
+  __u64 total_device_in_reset_drop_cnt;
+  __u64 ctx_device_in_reset_drop_cnt;
+  __u64 total_max_cs_in_flight_drop_cnt;
+  __u64 ctx_max_cs_in_flight_drop_cnt;
+  __u64 total_validation_drop_cnt;
+  __u64 ctx_validation_drop_cnt;
+};
+enum gaudi_dcores {
+  HL_GAUDI_WS_DCORE,
+  HL_GAUDI_WN_DCORE,
+  HL_GAUDI_EN_DCORE,
+  HL_GAUDI_ES_DCORE
+};
+struct hl_info_args {
+  __u64 return_pointer;
+  __u32 return_size;
+  __u32 op;
+  union {
+    __u32 dcore_id;
+    __u32 ctx_id;
+    __u32 period_ms;
+    __u32 pll_index;
+  };
+  __u32 pad;
+};
+#define HL_CB_OP_CREATE 0
+#define HL_CB_OP_DESTROY 1
+#define HL_CB_OP_INFO 2
+#define HL_MAX_CB_SIZE (0x200000 - 32)
+#define HL_CB_FLAGS_MAP 0x1
+struct hl_cb_in {
+  __u64 cb_handle;
+  __u32 op;
+  __u32 cb_size;
+  __u32 ctx_id;
+  __u32 flags;
+};
+struct hl_cb_out {
+  union {
+    __u64 cb_handle;
+    struct {
+      __u32 usage_cnt;
+      __u32 pad;
+    };
+  };
+};
+union hl_cb_args {
+  struct hl_cb_in in;
+  struct hl_cb_out out;
+};
+#define HL_CS_CHUNK_FLAGS_USER_ALLOC_CB 0x1
+struct hl_cs_chunk {
+  union {
+    __u64 cb_handle;
+    __u64 signal_seq_arr;
+    __u64 encaps_signal_seq;
+  };
+  __u32 queue_index;
+  union {
+    __u32 cb_size;
+    __u32 num_signal_seq_arr;
+    __u32 encaps_signal_offset;
+  };
+  __u32 cs_chunk_flags;
+  __u32 collective_engine_id;
+  __u32 pad[10];
+};
+#define HL_CS_FLAGS_FORCE_RESTORE 0x1
+#define HL_CS_FLAGS_SIGNAL 0x2
+#define HL_CS_FLAGS_WAIT 0x4
+#define HL_CS_FLAGS_COLLECTIVE_WAIT 0x8
+#define HL_CS_FLAGS_TIMESTAMP 0x20
+#define HL_CS_FLAGS_STAGED_SUBMISSION 0x40
+#define HL_CS_FLAGS_STAGED_SUBMISSION_FIRST 0x80
+#define HL_CS_FLAGS_STAGED_SUBMISSION_LAST 0x100
+#define HL_CS_FLAGS_CUSTOM_TIMEOUT 0x200
+#define HL_CS_FLAGS_SKIP_RESET_ON_TIMEOUT 0x400
+#define HL_CS_FLAGS_ENCAP_SIGNALS 0x800
+#define HL_CS_FLAGS_RESERVE_SIGNALS_ONLY 0x1000
+#define HL_CS_FLAGS_UNRESERVE_SIGNALS_ONLY 0x2000
+#define HL_CS_STATUS_SUCCESS 0
+#define HL_MAX_JOBS_PER_CS 512
+struct hl_cs_in {
+  __u64 chunks_restore;
+  __u64 chunks_execute;
+  union {
+    __u64 seq;
+    __u32 encaps_sig_handle_id;
+    struct {
+      __u32 encaps_signals_count;
+      __u32 encaps_signals_q_idx;
+    };
+  };
+  __u32 num_chunks_restore;
+  __u32 num_chunks_execute;
+  __u32 timeout;
+  __u32 cs_flags;
+  __u32 ctx_id;
+};
+struct hl_cs_out {
+  union {
+    __u64 seq;
+    struct {
+      __u32 handle_id;
+      __u32 count;
+    };
+  };
+  __u32 status;
+  __u32 sob_base_addr_offset;
+};
+union hl_cs_args {
+  struct hl_cs_in in;
+  struct hl_cs_out out;
+};
+#define HL_WAIT_CS_FLAGS_INTERRUPT 0x2
+#define HL_WAIT_CS_FLAGS_INTERRUPT_MASK 0xFFF00000
+#define HL_WAIT_CS_FLAGS_MULTI_CS 0x4
+#define HL_WAIT_MULTI_CS_LIST_MAX_LEN 32
+struct hl_wait_cs_in {
+  union {
+    struct {
+      __u64 seq;
+      __u64 timeout_us;
+    };
+    struct {
+      __u64 addr;
+      __u64 target;
+    };
+  };
+  __u32 ctx_id;
+  __u32 flags;
+  __u8 seq_arr_len;
+  __u8 pad[3];
+  __u32 interrupt_timeout_us;
+};
+#define HL_WAIT_CS_STATUS_COMPLETED 0
+#define HL_WAIT_CS_STATUS_BUSY 1
+#define HL_WAIT_CS_STATUS_TIMEDOUT 2
+#define HL_WAIT_CS_STATUS_ABORTED 3
+#define HL_WAIT_CS_STATUS_FLAG_GONE 0x1
+#define HL_WAIT_CS_STATUS_FLAG_TIMESTAMP_VLD 0x2
+struct hl_wait_cs_out {
+  __u32 status;
+  __u32 flags;
+  __s64 timestamp_nsec;
+  __u32 cs_completion_map;
+  __u32 pad;
+};
+union hl_wait_cs_args {
+  struct hl_wait_cs_in in;
+  struct hl_wait_cs_out out;
+};
+#define HL_MEM_OP_ALLOC 0
+#define HL_MEM_OP_FREE 1
+#define HL_MEM_OP_MAP 2
+#define HL_MEM_OP_UNMAP 3
+#define HL_MEM_OP_MAP_BLOCK 4
+#define HL_MEM_OP_EXPORT_DMABUF_FD 5
+#define HL_MEM_CONTIGUOUS 0x1
+#define HL_MEM_SHARED 0x2
+#define HL_MEM_USERPTR 0x4
+#define HL_MEM_FORCE_HINT 0x8
+struct hl_mem_in {
+  union {
+    struct {
+      __u64 mem_size;
+    } alloc;
+    struct {
+      __u64 handle;
+    } free;
+    struct {
+      __u64 hint_addr;
+      __u64 handle;
+    } map_device;
+    struct {
+      __u64 host_virt_addr;
+      __u64 hint_addr;
+      __u64 mem_size;
+    } map_host;
+    struct {
+      __u64 block_addr;
+    } map_block;
+    struct {
+      __u64 device_virt_addr;
+    } unmap;
+    struct {
+      __u64 handle;
+      __u64 mem_size;
+    } export_dmabuf_fd;
+  };
+  __u32 op;
+  __u32 flags;
+  __u32 ctx_id;
+  __u32 pad;
+};
+struct hl_mem_out {
+  union {
+    __u64 device_virt_addr;
+    __u64 handle;
+    struct {
+      __u64 block_handle;
+      __u32 block_size;
+      __u32 pad;
+    };
+    __s32 fd;
+  };
+};
+union hl_mem_args {
+  struct hl_mem_in in;
+  struct hl_mem_out out;
+};
+#define HL_DEBUG_MAX_AUX_VALUES 10
+struct hl_debug_params_etr {
+  __u64 buffer_address;
+  __u64 buffer_size;
+  __u32 sink_mode;
+  __u32 pad;
+};
+struct hl_debug_params_etf {
+  __u64 buffer_address;
+  __u64 buffer_size;
+  __u32 sink_mode;
+  __u32 pad;
+};
+struct hl_debug_params_stm {
+  __u64 he_mask;
+  __u64 sp_mask;
+  __u32 id;
+  __u32 frequency;
+};
+struct hl_debug_params_bmon {
+  __u64 start_addr0;
+  __u64 addr_mask0;
+  __u64 start_addr1;
+  __u64 addr_mask1;
+  __u32 bw_win;
+  __u32 win_capture;
+  __u32 id;
+  __u32 pad;
+};
+struct hl_debug_params_spmu {
+  __u64 event_types[HL_DEBUG_MAX_AUX_VALUES];
+  __u32 event_types_num;
+  __u32 pad;
+};
+#define HL_DEBUG_OP_ETR 0
+#define HL_DEBUG_OP_ETF 1
+#define HL_DEBUG_OP_STM 2
+#define HL_DEBUG_OP_FUNNEL 3
+#define HL_DEBUG_OP_BMON 4
+#define HL_DEBUG_OP_SPMU 5
+#define HL_DEBUG_OP_TIMESTAMP 6
+#define HL_DEBUG_OP_SET_MODE 7
+struct hl_debug_args {
+  __u64 input_ptr;
+  __u64 output_ptr;
+  __u32 input_size;
+  __u32 output_size;
+  __u32 op;
+  __u32 reg_idx;
+  __u32 enable;
+  __u32 ctx_id;
+};
+#define HL_IOCTL_INFO _IOWR('H', 0x01, struct hl_info_args)
+#define HL_IOCTL_CB _IOWR('H', 0x02, union hl_cb_args)
+#define HL_IOCTL_CS _IOWR('H', 0x03, union hl_cs_args)
+#define HL_IOCTL_WAIT_CS _IOWR('H', 0x04, union hl_wait_cs_args)
+#define HL_IOCTL_MEMORY _IOWR('H', 0x05, union hl_mem_args)
+#define HL_IOCTL_DEBUG _IOWR('H', 0x06, struct hl_debug_args)
+#define HL_COMMAND_START 0x01
+#define HL_COMMAND_END 0x07
+#endif
diff --git a/i686-linux-musl/include/misc/ocxl.h b/i686-linux-musl/include/misc/ocxl.h
new file mode 100644
index 0000000..676aaf8
--- /dev/null
+++ b/i686-linux-musl/include/misc/ocxl.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_MISC_OCXL_H
+#define _UAPI_MISC_OCXL_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+enum ocxl_event_type {
+  OCXL_AFU_EVENT_XSL_FAULT_ERROR = 0,
+};
+#define OCXL_KERNEL_EVENT_FLAG_LAST 0x0001
+struct ocxl_kernel_event_header {
+  __u16 type;
+  __u16 flags;
+  __u32 reserved;
+};
+struct ocxl_kernel_event_xsl_fault_error {
+  __u64 addr;
+  __u64 dsisr;
+  __u64 count;
+  __u64 reserved;
+};
+struct ocxl_ioctl_attach {
+  __u64 amr;
+  __u64 reserved1;
+  __u64 reserved2;
+  __u64 reserved3;
+};
+struct ocxl_ioctl_metadata {
+  __u16 version;
+  __u8 afu_version_major;
+  __u8 afu_version_minor;
+  __u32 pasid;
+  __u64 pp_mmio_size;
+  __u64 global_mmio_size;
+  __u64 reserved[13];
+};
+struct ocxl_ioctl_p9_wait {
+  __u16 thread_id;
+  __u16 reserved1;
+  __u32 reserved2;
+  __u64 reserved3[3];
+};
+#define OCXL_IOCTL_FEATURES_FLAGS0_P9_WAIT 0x01
+struct ocxl_ioctl_features {
+  __u64 flags[4];
+};
+struct ocxl_ioctl_irq_fd {
+  __u64 irq_offset;
+  __s32 eventfd;
+  __u32 reserved;
+};
+#define OCXL_MAGIC 0xCA
+#define OCXL_IOCTL_ATTACH _IOW(OCXL_MAGIC, 0x10, struct ocxl_ioctl_attach)
+#define OCXL_IOCTL_IRQ_ALLOC _IOR(OCXL_MAGIC, 0x11, __u64)
+#define OCXL_IOCTL_IRQ_FREE _IOW(OCXL_MAGIC, 0x12, __u64)
+#define OCXL_IOCTL_IRQ_SET_FD _IOW(OCXL_MAGIC, 0x13, struct ocxl_ioctl_irq_fd)
+#define OCXL_IOCTL_GET_METADATA _IOR(OCXL_MAGIC, 0x14, struct ocxl_ioctl_metadata)
+#define OCXL_IOCTL_ENABLE_P9_WAIT _IOR(OCXL_MAGIC, 0x15, struct ocxl_ioctl_p9_wait)
+#define OCXL_IOCTL_GET_FEATURES _IOR(OCXL_MAGIC, 0x16, struct ocxl_ioctl_features)
+#endif
diff --git a/i686-linux-musl/include/misc/pvpanic.h b/i686-linux-musl/include/misc/pvpanic.h
new file mode 100644
index 0000000..18edcd8
--- /dev/null
+++ b/i686-linux-musl/include/misc/pvpanic.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 __PVPANIC_H__
+#define __PVPANIC_H__
+#define PVPANIC_PANICKED (1 << 0)
+#define PVPANIC_CRASH_LOADED (1 << 1)
+#endif
diff --git a/i686-linux-musl/include/misc/uacce/hisi_qm.h b/i686-linux-musl/include/misc/uacce/hisi_qm.h
new file mode 100644
index 0000000..87757a9
--- /dev/null
+++ b/i686-linux-musl/include/misc/uacce/hisi_qm.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_HISI_QM_H
+#define _UAPI_HISI_QM_H
+#include <linux/types.h>
+struct hisi_qp_ctx {
+  __u16 id;
+  __u16 qc_type;
+};
+#define HISI_QM_API_VER_BASE "hisi_qm_v1"
+#define HISI_QM_API_VER2_BASE "hisi_qm_v2"
+#define HISI_QM_API_VER3_BASE "hisi_qm_v3"
+#define UACCE_CMD_QM_SET_QP_CTX _IOWR('H', 10, struct hisi_qp_ctx)
+#endif
diff --git a/i686-linux-musl/include/misc/uacce/uacce.h b/i686-linux-musl/include/misc/uacce/uacce.h
new file mode 100644
index 0000000..469d188
--- /dev/null
+++ b/i686-linux-musl/include/misc/uacce/uacce.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 _UAPIUUACCE_H
+#define _UAPIUUACCE_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define UACCE_CMD_START_Q _IO('W', 0)
+#define UACCE_CMD_PUT_Q _IO('W', 1)
+#define UACCE_DEV_SVA BIT(0)
+enum uacce_qfrt {
+  UACCE_QFRT_MMIO = 0,
+  UACCE_QFRT_DUS = 1,
+};
+#endif
diff --git a/i686-linux-musl/include/misc/xilinx_sdfec.h b/i686-linux-musl/include/misc/xilinx_sdfec.h
new file mode 100644
index 0000000..8dde40d
--- /dev/null
+++ b/i686-linux-musl/include/misc/xilinx_sdfec.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 __XILINX_SDFEC_H__
+#define __XILINX_SDFEC_H__
+#include <linux/types.h>
+#define XSDFEC_LDPC_SC_TABLE_ADDR_BASE (0x10000)
+#define XSDFEC_LDPC_SC_TABLE_ADDR_HIGH (0x10400)
+#define XSDFEC_LDPC_LA_TABLE_ADDR_BASE (0x18000)
+#define XSDFEC_LDPC_LA_TABLE_ADDR_HIGH (0x19000)
+#define XSDFEC_LDPC_QC_TABLE_ADDR_BASE (0x20000)
+#define XSDFEC_LDPC_QC_TABLE_ADDR_HIGH (0x28000)
+#define XSDFEC_SC_TABLE_DEPTH (XSDFEC_LDPC_SC_TABLE_ADDR_HIGH - XSDFEC_LDPC_SC_TABLE_ADDR_BASE)
+#define XSDFEC_LA_TABLE_DEPTH (XSDFEC_LDPC_LA_TABLE_ADDR_HIGH - XSDFEC_LDPC_LA_TABLE_ADDR_BASE)
+#define XSDFEC_QC_TABLE_DEPTH (XSDFEC_LDPC_QC_TABLE_ADDR_HIGH - XSDFEC_LDPC_QC_TABLE_ADDR_BASE)
+enum xsdfec_code {
+  XSDFEC_TURBO_CODE = 0,
+  XSDFEC_LDPC_CODE,
+};
+enum xsdfec_order {
+  XSDFEC_MAINTAIN_ORDER = 0,
+  XSDFEC_OUT_OF_ORDER,
+};
+enum xsdfec_turbo_alg {
+  XSDFEC_MAX_SCALE = 0,
+  XSDFEC_MAX_STAR,
+  XSDFEC_TURBO_ALG_MAX,
+};
+enum xsdfec_state {
+  XSDFEC_INIT = 0,
+  XSDFEC_STARTED,
+  XSDFEC_STOPPED,
+  XSDFEC_NEEDS_RESET,
+  XSDFEC_PL_RECONFIGURE,
+};
+enum xsdfec_axis_width {
+  XSDFEC_1x128b = 1,
+  XSDFEC_2x128b = 2,
+  XSDFEC_4x128b = 4,
+};
+enum xsdfec_axis_word_include {
+  XSDFEC_FIXED_VALUE = 0,
+  XSDFEC_IN_BLOCK,
+  XSDFEC_PER_AXI_TRANSACTION,
+  XSDFEC_AXIS_WORDS_INCLUDE_MAX,
+};
+struct xsdfec_turbo {
+  __u32 alg;
+  __u8 scale;
+};
+struct xsdfec_ldpc_params {
+  __u32 n;
+  __u32 k;
+  __u32 psize;
+  __u32 nlayers;
+  __u32 nqc;
+  __u32 nmqc;
+  __u32 nm;
+  __u32 norm_type;
+  __u32 no_packing;
+  __u32 special_qc;
+  __u32 no_final_parity;
+  __u32 max_schedule;
+  __u32 sc_off;
+  __u32 la_off;
+  __u32 qc_off;
+  __u32 * sc_table;
+  __u32 * la_table;
+  __u32 * qc_table;
+  __u16 code_id;
+};
+struct xsdfec_status {
+  __u32 state;
+  __s8 activity;
+};
+struct xsdfec_irq {
+  __s8 enable_isr;
+  __s8 enable_ecc_isr;
+};
+struct xsdfec_config {
+  __u32 code;
+  __u32 order;
+  __u32 din_width;
+  __u32 din_word_include;
+  __u32 dout_width;
+  __u32 dout_word_include;
+  struct xsdfec_irq irq;
+  __s8 bypass;
+  __s8 code_wr_protect;
+};
+struct xsdfec_stats {
+  __u32 isr_err_count;
+  __u32 cecc_count;
+  __u32 uecc_count;
+};
+struct xsdfec_ldpc_param_table_sizes {
+  __u32 sc_size;
+  __u32 la_size;
+  __u32 qc_size;
+};
+#define XSDFEC_MAGIC 'f'
+#define XSDFEC_START_DEV _IO(XSDFEC_MAGIC, 0)
+#define XSDFEC_STOP_DEV _IO(XSDFEC_MAGIC, 1)
+#define XSDFEC_GET_STATUS _IOR(XSDFEC_MAGIC, 2, struct xsdfec_status)
+#define XSDFEC_SET_IRQ _IOW(XSDFEC_MAGIC, 3, struct xsdfec_irq)
+#define XSDFEC_SET_TURBO _IOW(XSDFEC_MAGIC, 4, struct xsdfec_turbo)
+#define XSDFEC_ADD_LDPC_CODE_PARAMS _IOW(XSDFEC_MAGIC, 5, struct xsdfec_ldpc_params)
+#define XSDFEC_GET_CONFIG _IOR(XSDFEC_MAGIC, 6, struct xsdfec_config)
+#define XSDFEC_GET_TURBO _IOR(XSDFEC_MAGIC, 7, struct xsdfec_turbo)
+#define XSDFEC_SET_ORDER _IOW(XSDFEC_MAGIC, 8, unsigned long)
+#define XSDFEC_SET_BYPASS _IOW(XSDFEC_MAGIC, 9, bool)
+#define XSDFEC_IS_ACTIVE _IOR(XSDFEC_MAGIC, 10, bool)
+#define XSDFEC_CLEAR_STATS _IO(XSDFEC_MAGIC, 11)
+#define XSDFEC_GET_STATS _IOR(XSDFEC_MAGIC, 12, struct xsdfec_stats)
+#define XSDFEC_SET_DEFAULT_CONFIG _IO(XSDFEC_MAGIC, 13)
+#endif
diff --git a/i686-linux-musl/include/mntent.h b/i686-linux-musl/include/mntent.h
new file mode 100644
index 0000000..3492a1d
--- /dev/null
+++ b/i686-linux-musl/include/mntent.h
@@ -0,0 +1,43 @@
+#ifndef _MNTENT_H
+#define _MNTENT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __NEED_FILE
+#include <bits/alltypes.h>
+
+#define MOUNTED "/etc/mtab"
+
+#define MNTTYPE_IGNORE	"ignore"
+#define MNTTYPE_NFS	"nfs"
+#define MNTTYPE_SWAP	"swap"
+#define MNTOPT_DEFAULTS	"defaults"
+#define MNTOPT_RO	"ro"
+#define MNTOPT_RW	"rw"
+#define MNTOPT_SUID	"suid"
+#define MNTOPT_NOSUID	"nosuid"
+#define MNTOPT_NOAUTO	"noauto"
+
+struct mntent {
+	char *mnt_fsname;
+	char *mnt_dir;
+	char *mnt_type;
+	char *mnt_opts;
+	int mnt_freq;
+	int mnt_passno;
+};
+
+FILE *setmntent(const char *, const char *);
+int endmntent(FILE *);
+struct mntent *getmntent(FILE *);
+struct mntent *getmntent_r(FILE *, struct mntent *, char *, int);
+int addmntent(FILE *, const struct mntent *);
+char *hasmntopt(const struct mntent *, const char *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/monetary.h b/i686-linux-musl/include/monetary.h
new file mode 100644
index 0000000..a91fa56
--- /dev/null
+++ b/i686-linux-musl/include/monetary.h
@@ -0,0 +1,23 @@
+#ifndef _MONETARY_H
+#define _MONETARY_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_ssize_t
+#define __NEED_size_t
+#define __NEED_locale_t
+
+#include <bits/alltypes.h>
+
+ssize_t strfmon(char *__restrict, size_t, const char *__restrict, ...);
+ssize_t strfmon_l(char *__restrict, size_t, locale_t, const char *__restrict, ...);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/mqueue.h b/i686-linux-musl/include/mqueue.h
new file mode 100644
index 0000000..0c807ea
--- /dev/null
+++ b/i686-linux-musl/include/mqueue.h
@@ -0,0 +1,41 @@
+#ifndef _MQUEUE_H
+#define _MQUEUE_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_size_t
+#define __NEED_ssize_t
+#define __NEED_pthread_attr_t
+#define __NEED_time_t
+#define __NEED_struct_timespec
+#include <bits/alltypes.h>
+
+typedef int mqd_t;
+struct mq_attr {
+	long mq_flags, mq_maxmsg, mq_msgsize, mq_curmsgs, __unused[4];
+};
+struct sigevent;
+
+int mq_close(mqd_t);
+int mq_getattr(mqd_t, struct mq_attr *);
+int mq_notify(mqd_t, const struct sigevent *);
+mqd_t mq_open(const char *, int, ...);
+ssize_t mq_receive(mqd_t, char *, size_t, unsigned *);
+int mq_send(mqd_t, const char *, size_t, unsigned);
+int mq_setattr(mqd_t, const struct mq_attr *__restrict, struct mq_attr *__restrict);
+ssize_t mq_timedreceive(mqd_t, char *__restrict, size_t, unsigned *__restrict, const struct timespec *__restrict);
+int mq_timedsend(mqd_t, const char *, size_t, unsigned, const struct timespec *);
+int mq_unlink(const char *);
+
+#if _REDIR_TIME64
+__REDIR(mq_timedreceive, __mq_timedreceive_time64);
+__REDIR(mq_timedsend, __mq_timedsend_time64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/mtd/inftl-user.h b/i686-linux-musl/include/mtd/inftl-user.h
new file mode 100644
index 0000000..6d5059e
--- /dev/null
+++ b/i686-linux-musl/include/mtd/inftl-user.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 __MTD_INFTL_USER_H__
+#define __MTD_INFTL_USER_H__
+#include <linux/types.h>
+#define OSAK_VERSION 0x5120
+#define PERCENTUSED 98
+#define SECTORSIZE 512
+struct inftl_bci {
+  __u8 ECCsig[6];
+  __u8 Status;
+  __u8 Status1;
+} __attribute__((packed));
+struct inftl_unithead1 {
+  __u16 virtualUnitNo;
+  __u16 prevUnitNo;
+  __u8 ANAC;
+  __u8 NACs;
+  __u8 parityPerField;
+  __u8 discarded;
+} __attribute__((packed));
+struct inftl_unithead2 {
+  __u8 parityPerField;
+  __u8 ANAC;
+  __u16 prevUnitNo;
+  __u16 virtualUnitNo;
+  __u8 NACs;
+  __u8 discarded;
+} __attribute__((packed));
+struct inftl_unittail {
+  __u8 Reserved[4];
+  __u16 EraseMark;
+  __u16 EraseMark1;
+} __attribute__((packed));
+union inftl_uci {
+  struct inftl_unithead1 a;
+  struct inftl_unithead2 b;
+  struct inftl_unittail c;
+};
+struct inftl_oob {
+  struct inftl_bci b;
+  union inftl_uci u;
+};
+struct INFTLPartition {
+  __u32 virtualUnits;
+  __u32 firstUnit;
+  __u32 lastUnit;
+  __u32 flags;
+  __u32 spareUnits;
+  __u32 Reserved0;
+  __u32 Reserved1;
+} __attribute__((packed));
+struct INFTLMediaHeader {
+  char bootRecordID[8];
+  __u32 NoOfBootImageBlocks;
+  __u32 NoOfBinaryPartitions;
+  __u32 NoOfBDTLPartitions;
+  __u32 BlockMultiplierBits;
+  __u32 FormatFlags;
+  __u32 OsakVersion;
+  __u32 PercentUsed;
+  struct INFTLPartition Partitions[4];
+} __attribute__((packed));
+#define INFTL_BINARY 0x20000000
+#define INFTL_BDTL 0x40000000
+#define INFTL_LAST 0x80000000
+#endif
diff --git a/i686-linux-musl/include/mtd/mtd-abi.h b/i686-linux-musl/include/mtd/mtd-abi.h
new file mode 100644
index 0000000..50ae565
--- /dev/null
+++ b/i686-linux-musl/include/mtd/mtd-abi.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 __MTD_ABI_H__
+#define __MTD_ABI_H__
+#include <linux/types.h>
+struct erase_info_user {
+  __u32 start;
+  __u32 length;
+};
+struct erase_info_user64 {
+  __u64 start;
+  __u64 length;
+};
+struct mtd_oob_buf {
+  __u32 start;
+  __u32 length;
+  unsigned char __user * ptr;
+};
+struct mtd_oob_buf64 {
+  __u64 start;
+  __u32 pad;
+  __u32 length;
+  __u64 usr_ptr;
+};
+enum {
+  MTD_OPS_PLACE_OOB = 0,
+  MTD_OPS_AUTO_OOB = 1,
+  MTD_OPS_RAW = 2,
+};
+struct mtd_write_req {
+  __u64 start;
+  __u64 len;
+  __u64 ooblen;
+  __u64 usr_data;
+  __u64 usr_oob;
+  __u8 mode;
+  __u8 padding[7];
+};
+#define MTD_ABSENT 0
+#define MTD_RAM 1
+#define MTD_ROM 2
+#define MTD_NORFLASH 3
+#define MTD_NANDFLASH 4
+#define MTD_DATAFLASH 6
+#define MTD_UBIVOLUME 7
+#define MTD_MLCNANDFLASH 8
+#define MTD_WRITEABLE 0x400
+#define MTD_BIT_WRITEABLE 0x800
+#define MTD_NO_ERASE 0x1000
+#define MTD_POWERUP_LOCK 0x2000
+#define MTD_SLC_ON_MLC_EMULATION 0x4000
+#define MTD_CAP_ROM 0
+#define MTD_CAP_RAM (MTD_WRITEABLE | MTD_BIT_WRITEABLE | MTD_NO_ERASE)
+#define MTD_CAP_NORFLASH (MTD_WRITEABLE | MTD_BIT_WRITEABLE)
+#define MTD_CAP_NANDFLASH (MTD_WRITEABLE)
+#define MTD_CAP_NVRAM (MTD_WRITEABLE | MTD_BIT_WRITEABLE | MTD_NO_ERASE)
+#define MTD_NANDECC_OFF 0
+#define MTD_NANDECC_PLACE 1
+#define MTD_NANDECC_AUTOPLACE 2
+#define MTD_NANDECC_PLACEONLY 3
+#define MTD_NANDECC_AUTOPL_USR 4
+#define MTD_OTP_OFF 0
+#define MTD_OTP_FACTORY 1
+#define MTD_OTP_USER 2
+struct mtd_info_user {
+  __u8 type;
+  __u32 flags;
+  __u32 size;
+  __u32 erasesize;
+  __u32 writesize;
+  __u32 oobsize;
+  __u64 padding;
+};
+struct region_info_user {
+  __u32 offset;
+  __u32 erasesize;
+  __u32 numblocks;
+  __u32 regionindex;
+};
+struct otp_info {
+  __u32 start;
+  __u32 length;
+  __u32 locked;
+};
+#define MEMGETINFO _IOR('M', 1, struct mtd_info_user)
+#define MEMERASE _IOW('M', 2, struct erase_info_user)
+#define MEMWRITEOOB _IOWR('M', 3, struct mtd_oob_buf)
+#define MEMREADOOB _IOWR('M', 4, struct mtd_oob_buf)
+#define MEMLOCK _IOW('M', 5, struct erase_info_user)
+#define MEMUNLOCK _IOW('M', 6, struct erase_info_user)
+#define MEMGETREGIONCOUNT _IOR('M', 7, int)
+#define MEMGETREGIONINFO _IOWR('M', 8, struct region_info_user)
+#define MEMGETOOBSEL _IOR('M', 10, struct nand_oobinfo)
+#define MEMGETBADBLOCK _IOW('M', 11, __kernel_loff_t)
+#define MEMSETBADBLOCK _IOW('M', 12, __kernel_loff_t)
+#define OTPSELECT _IOR('M', 13, int)
+#define OTPGETREGIONCOUNT _IOW('M', 14, int)
+#define OTPGETREGIONINFO _IOW('M', 15, struct otp_info)
+#define OTPLOCK _IOR('M', 16, struct otp_info)
+#define ECCGETLAYOUT _IOR('M', 17, struct nand_ecclayout_user)
+#define ECCGETSTATS _IOR('M', 18, struct mtd_ecc_stats)
+#define MTDFILEMODE _IO('M', 19)
+#define MEMERASE64 _IOW('M', 20, struct erase_info_user64)
+#define MEMWRITEOOB64 _IOWR('M', 21, struct mtd_oob_buf64)
+#define MEMREADOOB64 _IOWR('M', 22, struct mtd_oob_buf64)
+#define MEMISLOCKED _IOR('M', 23, struct erase_info_user)
+#define MEMWRITE _IOWR('M', 24, struct mtd_write_req)
+#define OTPERASE _IOW('M', 25, struct otp_info)
+struct nand_oobinfo {
+  __u32 useecc;
+  __u32 eccbytes;
+  __u32 oobfree[8][2];
+  __u32 eccpos[32];
+};
+struct nand_oobfree {
+  __u32 offset;
+  __u32 length;
+};
+#define MTD_MAX_OOBFREE_ENTRIES 8
+#define MTD_MAX_ECCPOS_ENTRIES 64
+struct nand_ecclayout_user {
+  __u32 eccbytes;
+  __u32 eccpos[MTD_MAX_ECCPOS_ENTRIES];
+  __u32 oobavail;
+  struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES];
+};
+struct mtd_ecc_stats {
+  __u32 corrected;
+  __u32 failed;
+  __u32 badblocks;
+  __u32 bbtblocks;
+};
+enum mtd_file_modes {
+  MTD_FILE_MODE_NORMAL = MTD_OTP_OFF,
+  MTD_FILE_MODE_OTP_FACTORY = MTD_OTP_FACTORY,
+  MTD_FILE_MODE_OTP_USER = MTD_OTP_USER,
+  MTD_FILE_MODE_RAW,
+};
+#endif
diff --git a/i686-linux-musl/include/mtd/mtd-user.h b/i686-linux-musl/include/mtd/mtd-user.h
new file mode 100644
index 0000000..a7ad6ad
--- /dev/null
+++ b/i686-linux-musl/include/mtd/mtd-user.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 __MTD_USER_H__
+#define __MTD_USER_H__
+#include <mtd/mtd-abi.h>
+typedef struct mtd_info_user mtd_info_t;
+typedef struct erase_info_user erase_info_t;
+typedef struct region_info_user region_info_t;
+typedef struct nand_oobinfo nand_oobinfo_t;
+typedef struct nand_ecclayout_user nand_ecclayout_t;
+#endif
diff --git a/i686-linux-musl/include/mtd/nftl-user.h b/i686-linux-musl/include/mtd/nftl-user.h
new file mode 100644
index 0000000..99ac366
--- /dev/null
+++ b/i686-linux-musl/include/mtd/nftl-user.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 __MTD_NFTL_USER_H__
+#define __MTD_NFTL_USER_H__
+#include <linux/types.h>
+struct nftl_bci {
+  unsigned char ECCSig[6];
+  __u8 Status;
+  __u8 Status1;
+} __attribute__((packed));
+struct nftl_uci0 {
+  __u16 VirtUnitNum;
+  __u16 ReplUnitNum;
+  __u16 SpareVirtUnitNum;
+  __u16 SpareReplUnitNum;
+} __attribute__((packed));
+struct nftl_uci1 {
+  __u32 WearInfo;
+  __u16 EraseMark;
+  __u16 EraseMark1;
+} __attribute__((packed));
+struct nftl_uci2 {
+  __u16 FoldMark;
+  __u16 FoldMark1;
+  __u32 unused;
+} __attribute__((packed));
+union nftl_uci {
+  struct nftl_uci0 a;
+  struct nftl_uci1 b;
+  struct nftl_uci2 c;
+};
+struct nftl_oob {
+  struct nftl_bci b;
+  union nftl_uci u;
+};
+struct NFTLMediaHeader {
+  char DataOrgID[6];
+  __u16 NumEraseUnits;
+  __u16 FirstPhysicalEUN;
+  __u32 FormattedSize;
+  unsigned char UnitSizeFactor;
+} __attribute__((packed));
+#define MAX_ERASE_ZONES (8192 - 512)
+#define ERASE_MARK 0x3c69
+#define SECTOR_FREE 0xff
+#define SECTOR_USED 0x55
+#define SECTOR_IGNORE 0x11
+#define SECTOR_DELETED 0x00
+#define FOLD_MARK_IN_PROGRESS 0x5555
+#define ZONE_GOOD 0xff
+#define ZONE_BAD_ORIGINAL 0
+#define ZONE_BAD_MARKED 7
+#endif
diff --git a/i686-linux-musl/include/mtd/ubi-user.h b/i686-linux-musl/include/mtd/ubi-user.h
new file mode 100644
index 0000000..866fbd2
--- /dev/null
+++ b/i686-linux-musl/include/mtd/ubi-user.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 __UBI_USER_H__
+#define __UBI_USER_H__
+#include <linux/types.h>
+#define UBI_VOL_NUM_AUTO (- 1)
+#define UBI_DEV_NUM_AUTO (- 1)
+#define UBI_MAX_VOLUME_NAME 127
+#define UBI_IOC_MAGIC 'o'
+#define UBI_IOCMKVOL _IOW(UBI_IOC_MAGIC, 0, struct ubi_mkvol_req)
+#define UBI_IOCRMVOL _IOW(UBI_IOC_MAGIC, 1, __s32)
+#define UBI_IOCRSVOL _IOW(UBI_IOC_MAGIC, 2, struct ubi_rsvol_req)
+#define UBI_IOCRNVOL _IOW(UBI_IOC_MAGIC, 3, struct ubi_rnvol_req)
+#define UBI_IOCRPEB _IOW(UBI_IOC_MAGIC, 4, __s32)
+#define UBI_IOCSPEB _IOW(UBI_IOC_MAGIC, 5, __s32)
+#define UBI_CTRL_IOC_MAGIC 'o'
+#define UBI_IOCATT _IOW(UBI_CTRL_IOC_MAGIC, 64, struct ubi_attach_req)
+#define UBI_IOCDET _IOW(UBI_CTRL_IOC_MAGIC, 65, __s32)
+#define UBI_VOL_IOC_MAGIC 'O'
+#define UBI_IOCVOLUP _IOW(UBI_VOL_IOC_MAGIC, 0, __s64)
+#define UBI_IOCEBER _IOW(UBI_VOL_IOC_MAGIC, 1, __s32)
+#define UBI_IOCEBCH _IOW(UBI_VOL_IOC_MAGIC, 2, __s32)
+#define UBI_IOCEBMAP _IOW(UBI_VOL_IOC_MAGIC, 3, struct ubi_map_req)
+#define UBI_IOCEBUNMAP _IOW(UBI_VOL_IOC_MAGIC, 4, __s32)
+#define UBI_IOCEBISMAP _IOR(UBI_VOL_IOC_MAGIC, 5, __s32)
+#define UBI_IOCSETVOLPROP _IOW(UBI_VOL_IOC_MAGIC, 6, struct ubi_set_vol_prop_req)
+#define UBI_IOCVOLCRBLK _IOW(UBI_VOL_IOC_MAGIC, 7, struct ubi_blkcreate_req)
+#define UBI_IOCVOLRMBLK _IO(UBI_VOL_IOC_MAGIC, 8)
+#define MAX_UBI_MTD_NAME_LEN 127
+#define UBI_MAX_RNVOL 32
+enum {
+  UBI_DYNAMIC_VOLUME = 3,
+  UBI_STATIC_VOLUME = 4,
+};
+enum {
+  UBI_VOL_PROP_DIRECT_WRITE = 1,
+};
+struct ubi_attach_req {
+  __s32 ubi_num;
+  __s32 mtd_num;
+  __s32 vid_hdr_offset;
+  __s16 max_beb_per1024;
+  __s8 padding[10];
+};
+enum {
+  UBI_VOL_SKIP_CRC_CHECK_FLG = 0x1,
+};
+#define UBI_VOL_VALID_FLGS (UBI_VOL_SKIP_CRC_CHECK_FLG)
+struct ubi_mkvol_req {
+  __s32 vol_id;
+  __s32 alignment;
+  __s64 bytes;
+  __s8 vol_type;
+  __u8 flags;
+  __s16 name_len;
+  __s8 padding2[4];
+  char name[UBI_MAX_VOLUME_NAME + 1];
+} __packed;
+struct ubi_rsvol_req {
+  __s64 bytes;
+  __s32 vol_id;
+} __packed;
+struct ubi_rnvol_req {
+  __s32 count;
+  __s8 padding1[12];
+  struct {
+    __s32 vol_id;
+    __s16 name_len;
+    __s8 padding2[2];
+    char name[UBI_MAX_VOLUME_NAME + 1];
+  } ents[UBI_MAX_RNVOL];
+} __packed;
+struct ubi_leb_change_req {
+  __s32 lnum;
+  __s32 bytes;
+  __s8 dtype;
+  __s8 padding[7];
+} __packed;
+struct ubi_map_req {
+  __s32 lnum;
+  __s8 dtype;
+  __s8 padding[3];
+} __packed;
+struct ubi_set_vol_prop_req {
+  __u8 property;
+  __u8 padding[7];
+  __u64 value;
+} __packed;
+struct ubi_blkcreate_req {
+  __s8 padding[128];
+} __packed;
+#endif
diff --git a/i686-linux-musl/include/net/ethernet.h b/i686-linux-musl/include/net/ethernet.h
new file mode 100644
index 0000000..c8d4177
--- /dev/null
+++ b/i686-linux-musl/include/net/ethernet.h
@@ -0,0 +1,55 @@
+#ifndef _NET_ETHERNET_H
+#define _NET_ETHERNET_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+#include <sys/types.h>
+#include <netinet/if_ether.h>
+
+struct ether_addr {
+	uint8_t ether_addr_octet[ETH_ALEN];
+};
+
+struct ether_header {
+	uint8_t  ether_dhost[ETH_ALEN];
+	uint8_t  ether_shost[ETH_ALEN];
+	uint16_t ether_type;
+};
+
+#define	ETHERTYPE_PUP		0x0200
+#define ETHERTYPE_SPRITE	0x0500
+#define	ETHERTYPE_IP		0x0800
+#define	ETHERTYPE_ARP		0x0806
+#define	ETHERTYPE_REVARP	0x8035
+#define ETHERTYPE_AT		0x809B
+#define ETHERTYPE_AARP		0x80F3
+#define	ETHERTYPE_VLAN		0x8100
+#define ETHERTYPE_IPX		0x8137
+#define	ETHERTYPE_IPV6		0x86dd
+#define ETHERTYPE_LOOPBACK	0x9000
+
+
+#define	ETHER_ADDR_LEN	ETH_ALEN
+#define	ETHER_TYPE_LEN	2
+#define	ETHER_CRC_LEN	4
+#define	ETHER_HDR_LEN	ETH_HLEN
+#define	ETHER_MIN_LEN	(ETH_ZLEN + ETHER_CRC_LEN)
+#define	ETHER_MAX_LEN	(ETH_FRAME_LEN + ETHER_CRC_LEN)
+
+#define	ETHER_IS_VALID_LEN(foo)	\
+	((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN)
+
+#define	ETHERTYPE_TRAIL		0x1000
+#define	ETHERTYPE_NTRAILER	16
+
+#define	ETHERMTU	ETH_DATA_LEN
+#define	ETHERMIN	(ETHER_MIN_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/net/if.h b/i686-linux-musl/include/net/if.h
new file mode 100644
index 0000000..774cbff
--- /dev/null
+++ b/i686-linux-musl/include/net/if.h
@@ -0,0 +1,141 @@
+#ifndef _NET_IF_H
+#define _NET_IF_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define IF_NAMESIZE 16
+
+struct if_nameindex {
+	unsigned int if_index;
+	char *if_name;
+};
+
+unsigned int if_nametoindex (const char *);
+char *if_indextoname (unsigned int, char *);
+struct if_nameindex *if_nameindex (void);
+void if_freenameindex (struct if_nameindex *);
+
+
+
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+
+#include <sys/socket.h>
+
+#define IFF_UP	0x1
+#define IFF_BROADCAST 0x2
+#define IFF_DEBUG 0x4
+#define IFF_LOOPBACK 0x8
+#define IFF_POINTOPOINT 0x10
+#define IFF_NOTRAILERS 0x20
+#define IFF_RUNNING 0x40
+#define IFF_NOARP 0x80
+#define IFF_PROMISC 0x100
+#define IFF_ALLMULTI 0x200
+#define IFF_MASTER 0x400
+#define IFF_SLAVE 0x800
+#define IFF_MULTICAST 0x1000
+#define IFF_PORTSEL 0x2000
+#define IFF_AUTOMEDIA 0x4000
+#define IFF_DYNAMIC 0x8000
+#define IFF_LOWER_UP 0x10000
+#define IFF_DORMANT 0x20000
+#define IFF_ECHO 0x40000
+#define IFF_VOLATILE (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST| \
+        IFF_ECHO|IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT)
+
+struct ifaddr {
+	struct sockaddr ifa_addr;
+	union {
+		struct sockaddr	ifu_broadaddr;
+		struct sockaddr	ifu_dstaddr;
+	} ifa_ifu;
+	struct iface *ifa_ifp;
+	struct ifaddr *ifa_next;
+};
+
+#define ifa_broadaddr	ifa_ifu.ifu_broadaddr
+#define ifa_dstaddr	ifa_ifu.ifu_dstaddr
+
+struct ifmap {
+	unsigned long int mem_start;
+	unsigned long int mem_end;
+	unsigned short int base_addr;
+	unsigned char irq;
+	unsigned char dma;
+	unsigned char port;
+};
+
+#define IFHWADDRLEN	6
+#define IFNAMSIZ	IF_NAMESIZE
+
+struct ifreq {
+	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 int ifru_flags;
+		int ifru_ivalue;
+		int ifru_mtu;
+		struct ifmap ifru_map;
+		char ifru_slave[IFNAMSIZ];
+		char ifru_newname[IFNAMSIZ];
+		char *ifru_data;
+	} ifr_ifru;
+};
+
+#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 _IOT_ifreq	_IOT(_IOTS(char),IFNAMSIZ,_IOTS(char),16,0,0)
+#define _IOT_ifreq_short _IOT(_IOTS(char),IFNAMSIZ,_IOTS(short),1,0,0)
+#define _IOT_ifreq_int	_IOT(_IOTS(char),IFNAMSIZ,_IOTS(int),1,0,0)
+
+struct ifconf {
+	int ifc_len;		
+	union {
+		char *ifcu_buf;
+		struct ifreq *ifcu_req;
+	} ifc_ifcu;
+};
+
+#define ifc_buf		ifc_ifcu.ifcu_buf
+#define ifc_req		ifc_ifcu.ifcu_req
+#define _IOT_ifconf _IOT(_IOTS(struct ifconf),1,0,0,0,0)
+
+#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
+#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO    0
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/net/if_arp.h b/i686-linux-musl/include/net/if_arp.h
new file mode 100644
index 0000000..27becc8
--- /dev/null
+++ b/i686-linux-musl/include/net/if_arp.h
@@ -0,0 +1,142 @@
+/* Nonstandard header */
+#ifndef _NET_IF_ARP_H
+#define _NET_IF_ARP_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <inttypes.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#define MAX_ADDR_LEN	7
+
+#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 arphdr {
+	uint16_t ar_hrd;
+	uint16_t ar_pro;
+	uint8_t ar_hln;
+	uint8_t ar_pln;
+	uint16_t ar_op;
+};
+
+
+#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_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
+
+struct arpreq {
+	struct sockaddr arp_pa;
+	struct sockaddr arp_ha;
+	int arp_flags;
+	struct sockaddr arp_netmask;
+	char arp_dev[16];
+};
+
+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
+#define ATF_MAGIC	0x80
+
+#define ARPD_UPDATE	0x01
+#define ARPD_LOOKUP	0x02
+#define ARPD_FLUSH	0x03
+
+struct arpd_request {
+	unsigned short req;
+	uint32_t ip;
+	unsigned long dev;
+	unsigned long stamp;
+	unsigned long updated;
+	unsigned char ha[MAX_ADDR_LEN];
+};
+
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/net/route.h b/i686-linux-musl/include/net/route.h
new file mode 100644
index 0000000..96ff48e
--- /dev/null
+++ b/i686-linux-musl/include/net/route.h
@@ -0,0 +1,124 @@
+#ifndef _NET_ROUTE_H
+#define _NET_ROUTE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <netinet/in.h>
+
+
+struct rtentry {
+	unsigned long int rt_pad1;
+	struct sockaddr rt_dst;
+	struct sockaddr rt_gateway;
+	struct sockaddr rt_genmask;
+	unsigned short int rt_flags;
+	short int rt_pad2;
+	unsigned long int rt_pad3;
+	unsigned char rt_tos;
+	unsigned char rt_class;
+	short int rt_pad4[sizeof(long)/2-1];
+	short int rt_metric;
+	char *rt_dev;
+	unsigned long int rt_mtu;
+	unsigned long int rt_window;
+	unsigned short int rt_irtt;
+};
+
+#define rt_mss	rt_mtu
+
+
+struct in6_rtmsg {
+	struct in6_addr rtmsg_dst;
+	struct in6_addr rtmsg_src;
+	struct in6_addr rtmsg_gateway;
+	uint32_t rtmsg_type;
+	uint16_t rtmsg_dst_len;
+	uint16_t rtmsg_src_len;
+	uint32_t rtmsg_metric;
+	unsigned long int rtmsg_info;
+	uint32_t rtmsg_flags;
+	int rtmsg_ifindex;
+};
+
+
+#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
+#define	RTF_STATIC	0x0400
+#define	RTF_XRESOLVE	0x0800
+#define RTF_NOFORWARD   0x1000
+#define RTF_THROW	0x2000
+#define RTF_NOPMTUDISC  0x4000
+
+#define RTF_DEFAULT	0x00010000
+#define RTF_ALLONLINK	0x00020000
+#define RTF_ADDRCONF	0x00040000
+
+#define RTF_LINKRT	0x00100000
+#define RTF_NONEXTHOP	0x00200000
+
+#define RTF_CACHE	0x01000000
+#define RTF_FLOW	0x02000000
+#define RTF_POLICY	0x04000000
+
+#define RTCF_VALVE	0x00200000
+#define RTCF_MASQ	0x00400000
+#define RTCF_NAT	0x00800000
+#define RTCF_DOREDIRECT 0x01000000
+#define RTCF_LOG	0x02000000
+#define RTCF_DIRECTSRC	0x04000000
+
+#define RTF_LOCAL	0x80000000
+#define RTF_INTERFACE	0x40000000
+#define RTF_MULTICAST	0x20000000
+#define RTF_BROADCAST	0x10000000
+#define RTF_NAT		0x08000000
+
+#define RTF_ADDRCLASSMASK	0xF8000000
+#define RT_ADDRCLASS(flags)	((uint32_t) flags >> 23)
+
+#define RT_TOS(tos)		((tos) & IPTOS_TOS_MASK)
+
+#define RT_LOCALADDR(flags)	((flags & RTF_ADDRCLASSMASK) \
+				 == (RTF_LOCAL|RTF_INTERFACE))
+
+#define RT_CLASS_UNSPEC		0
+#define RT_CLASS_DEFAULT	253
+
+#define RT_CLASS_MAIN		254
+#define RT_CLASS_LOCAL		255
+#define RT_CLASS_MAX		255
+
+
+#define RTMSG_ACK		NLMSG_ACK
+#define RTMSG_OVERRUN		NLMSG_OVERRUN
+
+#define RTMSG_NEWDEVICE		0x11
+#define RTMSG_DELDEVICE		0x12
+#define RTMSG_NEWROUTE		0x21
+#define RTMSG_DELROUTE		0x22
+#define RTMSG_NEWRULE		0x31
+#define RTMSG_DELRULE		0x32
+#define RTMSG_CONTROL		0x40
+
+#define RTMSG_AR_FAILED		0x51
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/netdb.h b/i686-linux-musl/include/netdb.h
new file mode 100644
index 0000000..d096c78
--- /dev/null
+++ b/i686-linux-musl/include/netdb.h
@@ -0,0 +1,156 @@
+#ifndef	_NETDB_H
+#define	_NETDB_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <netinet/in.h>
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define __NEED_size_t
+#include <bits/alltypes.h>
+#endif
+
+struct addrinfo {
+	int ai_flags;
+	int ai_family;
+	int ai_socktype;
+	int ai_protocol;
+	socklen_t ai_addrlen;
+	struct sockaddr *ai_addr;
+	char *ai_canonname;
+	struct addrinfo *ai_next;
+};
+
+#define AI_PASSIVE      0x01
+#define AI_CANONNAME    0x02
+#define AI_NUMERICHOST  0x04
+#define AI_V4MAPPED     0x08
+#define AI_ALL          0x10
+#define AI_ADDRCONFIG   0x20
+#define AI_NUMERICSERV  0x400
+
+
+#define NI_NUMERICHOST  0x01
+#define NI_NUMERICSERV  0x02
+#define NI_NOFQDN       0x04
+#define NI_NAMEREQD     0x08
+#define NI_DGRAM        0x10
+#define NI_NUMERICSCOPE 0x100
+
+#define EAI_BADFLAGS   -1
+#define EAI_NONAME     -2
+#define EAI_AGAIN      -3
+#define EAI_FAIL       -4
+#define EAI_FAMILY     -6
+#define EAI_SOCKTYPE   -7
+#define EAI_SERVICE    -8
+#define EAI_MEMORY     -10
+#define EAI_SYSTEM     -11
+#define EAI_OVERFLOW   -12
+
+int getaddrinfo (const char *__restrict, const char *__restrict, const struct addrinfo *__restrict, struct addrinfo **__restrict);
+void freeaddrinfo (struct addrinfo *);
+int getnameinfo (const struct sockaddr *__restrict, socklen_t, char *__restrict, socklen_t, char *__restrict, socklen_t, int);
+const char *gai_strerror(int);
+
+
+/* Legacy functions follow (marked OBsolete in SUS) */
+
+struct netent {
+	char *n_name;
+	char **n_aliases;
+	int n_addrtype;
+	uint32_t n_net;
+};
+
+struct hostent {
+	char *h_name;
+	char **h_aliases;
+	int h_addrtype;
+	int h_length;
+	char **h_addr_list;
+};
+#define h_addr h_addr_list[0]
+
+struct servent {
+	char *s_name;
+	char **s_aliases;
+	int s_port;
+	char *s_proto;
+};
+
+struct protoent {
+	char *p_name;
+	char **p_aliases;
+	int p_proto;
+};
+
+void sethostent (int);
+void endhostent (void);
+struct hostent *gethostent (void);
+
+void setnetent (int);
+void endnetent (void);
+struct netent *getnetent (void);
+struct netent *getnetbyaddr (uint32_t, int);
+struct netent *getnetbyname (const char *);
+
+void setservent (int);
+void endservent (void);
+struct servent *getservent (void);
+struct servent *getservbyname (const char *, const char *);
+struct servent *getservbyport (int, const char *);
+
+void setprotoent (int);
+void endprotoent (void);
+struct protoent *getprotoent (void);
+struct protoent *getprotobyname (const char *);
+struct protoent *getprotobynumber (int);
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_POSIX_SOURCE) \
+ || (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE+0 < 200809L) \
+ || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700)
+struct hostent *gethostbyname (const char *);
+struct hostent *gethostbyaddr (const void *, socklen_t, int);
+#ifdef __GNUC__
+__attribute__((const))
+#endif
+int *__h_errno_location(void);
+#define h_errno (*__h_errno_location())
+#define HOST_NOT_FOUND 1
+#define TRY_AGAIN      2
+#define NO_RECOVERY    3
+#define NO_DATA        4
+#define NO_ADDRESS     NO_DATA
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+void herror(const char *);
+const char *hstrerror(int);
+int gethostbyname_r(const char *, struct hostent *, char *, size_t, struct hostent **, int *);
+int gethostbyname2_r(const char *, int, struct hostent *, char *, size_t, struct hostent **, int *);
+struct hostent *gethostbyname2(const char *, int);
+int gethostbyaddr_r(const void *, socklen_t, int, struct hostent *, char *, size_t, struct hostent **, int *);
+int getservbyport_r(int, const char *, struct servent *, char *, size_t, struct servent **);
+int getservbyname_r(const char *, const char *, struct servent *, char *, size_t, struct servent **);
+#define EAI_NODATA     -5
+#define EAI_ADDRFAMILY -9
+#define EAI_INPROGRESS -100
+#define EAI_CANCELED   -101
+#define EAI_NOTCANCELED -102
+#define EAI_ALLDONE    -103
+#define EAI_INTR       -104
+#define EAI_IDN_ENCODE -105
+#define NI_MAXHOST 255
+#define NI_MAXSERV 32
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/netinet/ether.h b/i686-linux-musl/include/netinet/ether.h
new file mode 100644
index 0000000..eec7e53
--- /dev/null
+++ b/i686-linux-musl/include/netinet/ether.h
@@ -0,0 +1,22 @@
+#ifndef _NETINET_ETHER_H
+#define _NETINET_ETHER_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <netinet/if_ether.h>
+
+char *ether_ntoa (const struct ether_addr *);
+struct ether_addr *ether_aton (const char *);
+char *ether_ntoa_r (const struct ether_addr *, char *);
+struct ether_addr *ether_aton_r (const char *, struct ether_addr *);
+int ether_line(const char *, struct ether_addr *, char *);
+int ether_ntohost(char *, const struct ether_addr *);
+int ether_hostton(const char *, struct ether_addr *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/netinet/icmp6.h b/i686-linux-musl/include/netinet/icmp6.h
new file mode 100644
index 0000000..01269e7
--- /dev/null
+++ b/i686-linux-musl/include/netinet/icmp6.h
@@ -0,0 +1,305 @@
+#ifndef _NETINET_ICMP6_H
+#define _NETINET_ICMP6_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+#include <string.h>
+#include <sys/types.h>
+#include <netinet/in.h>
+
+#define ICMP6_FILTER 1
+
+#define ICMP6_FILTER_BLOCK		1
+#define ICMP6_FILTER_PASS		2
+#define ICMP6_FILTER_BLOCKOTHERS	3
+#define ICMP6_FILTER_PASSONLY		4
+
+struct icmp6_filter {
+	uint32_t icmp6_filt[8];
+};
+
+struct icmp6_hdr {
+	uint8_t     icmp6_type;
+	uint8_t     icmp6_code;
+	uint16_t    icmp6_cksum;
+	union {
+		uint32_t  icmp6_un_data32[1];
+		uint16_t  icmp6_un_data16[2];
+		uint8_t   icmp6_un_data8[4];
+	} icmp6_dataun;
+};
+
+#define icmp6_data32    icmp6_dataun.icmp6_un_data32
+#define icmp6_data16    icmp6_dataun.icmp6_un_data16
+#define icmp6_data8     icmp6_dataun.icmp6_un_data8
+#define icmp6_pptr      icmp6_data32[0]
+#define icmp6_mtu       icmp6_data32[0]
+#define icmp6_id        icmp6_data16[0]
+#define icmp6_seq       icmp6_data16[1]
+#define icmp6_maxdelay  icmp6_data16[0]
+
+#define ICMP6_DST_UNREACH             1
+#define ICMP6_PACKET_TOO_BIG          2
+#define ICMP6_TIME_EXCEEDED           3
+#define ICMP6_PARAM_PROB              4
+
+#define ICMP6_INFOMSG_MASK  0x80
+
+#define ICMP6_ECHO_REQUEST          128
+#define ICMP6_ECHO_REPLY            129
+#define MLD_LISTENER_QUERY          130
+#define MLD_LISTENER_REPORT         131
+#define MLD_LISTENER_REDUCTION      132
+
+#define ICMP6_DST_UNREACH_NOROUTE     0
+#define ICMP6_DST_UNREACH_ADMIN       1
+#define ICMP6_DST_UNREACH_BEYONDSCOPE 2
+#define ICMP6_DST_UNREACH_ADDR        3
+#define ICMP6_DST_UNREACH_NOPORT      4
+
+#define ICMP6_TIME_EXCEED_TRANSIT     0
+#define ICMP6_TIME_EXCEED_REASSEMBLY  1
+
+#define ICMP6_PARAMPROB_HEADER        0
+#define ICMP6_PARAMPROB_NEXTHEADER    1
+#define ICMP6_PARAMPROB_OPTION        2
+
+#define ICMP6_FILTER_WILLPASS(type, filterp) \
+	((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) == 0)
+
+#define ICMP6_FILTER_WILLBLOCK(type, filterp) \
+	((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) != 0)
+
+#define ICMP6_FILTER_SETPASS(type, filterp) \
+	((((filterp)->icmp6_filt[(type) >> 5]) &= ~(1 << ((type) & 31))))
+
+#define ICMP6_FILTER_SETBLOCK(type, filterp) \
+	((((filterp)->icmp6_filt[(type) >> 5]) |=  (1 << ((type) & 31))))
+
+#define ICMP6_FILTER_SETPASSALL(filterp) \
+	memset (filterp, 0, sizeof (struct icmp6_filter));
+
+#define ICMP6_FILTER_SETBLOCKALL(filterp) \
+	memset (filterp, 0xFF, sizeof (struct icmp6_filter));
+
+#define ND_ROUTER_SOLICIT           133
+#define ND_ROUTER_ADVERT            134
+#define ND_NEIGHBOR_SOLICIT         135
+#define ND_NEIGHBOR_ADVERT          136
+#define ND_REDIRECT                 137
+
+struct nd_router_solicit {
+	struct icmp6_hdr  nd_rs_hdr;
+};
+
+#define nd_rs_type               nd_rs_hdr.icmp6_type
+#define nd_rs_code               nd_rs_hdr.icmp6_code
+#define nd_rs_cksum              nd_rs_hdr.icmp6_cksum
+#define nd_rs_reserved           nd_rs_hdr.icmp6_data32[0]
+
+struct nd_router_advert {
+	struct icmp6_hdr  nd_ra_hdr;
+	uint32_t   nd_ra_reachable;
+	uint32_t   nd_ra_retransmit;
+};
+
+#define nd_ra_type               nd_ra_hdr.icmp6_type
+#define nd_ra_code               nd_ra_hdr.icmp6_code
+#define nd_ra_cksum              nd_ra_hdr.icmp6_cksum
+#define nd_ra_curhoplimit        nd_ra_hdr.icmp6_data8[0]
+#define nd_ra_flags_reserved     nd_ra_hdr.icmp6_data8[1]
+#define ND_RA_FLAG_MANAGED       0x80
+#define ND_RA_FLAG_OTHER         0x40
+#define ND_RA_FLAG_HOME_AGENT    0x20
+#define nd_ra_router_lifetime    nd_ra_hdr.icmp6_data16[1]
+
+struct nd_neighbor_solicit {
+	struct icmp6_hdr  nd_ns_hdr;
+	struct in6_addr   nd_ns_target;
+};
+
+#define nd_ns_type               nd_ns_hdr.icmp6_type
+#define nd_ns_code               nd_ns_hdr.icmp6_code
+#define nd_ns_cksum              nd_ns_hdr.icmp6_cksum
+#define nd_ns_reserved           nd_ns_hdr.icmp6_data32[0]
+
+struct nd_neighbor_advert {
+	struct icmp6_hdr  nd_na_hdr;
+	struct in6_addr   nd_na_target;
+};
+
+#define nd_na_type               nd_na_hdr.icmp6_type
+#define nd_na_code               nd_na_hdr.icmp6_code
+#define nd_na_cksum              nd_na_hdr.icmp6_cksum
+#define nd_na_flags_reserved     nd_na_hdr.icmp6_data32[0]
+#if     __BYTE_ORDER == __BIG_ENDIAN
+#define ND_NA_FLAG_ROUTER        0x80000000
+#define ND_NA_FLAG_SOLICITED     0x40000000
+#define ND_NA_FLAG_OVERRIDE      0x20000000
+#else
+#define ND_NA_FLAG_ROUTER        0x00000080
+#define ND_NA_FLAG_SOLICITED     0x00000040
+#define ND_NA_FLAG_OVERRIDE      0x00000020
+#endif
+
+struct nd_redirect {
+	struct icmp6_hdr  nd_rd_hdr;
+	struct in6_addr   nd_rd_target;
+	struct in6_addr   nd_rd_dst;
+};
+
+#define nd_rd_type               nd_rd_hdr.icmp6_type
+#define nd_rd_code               nd_rd_hdr.icmp6_code
+#define nd_rd_cksum              nd_rd_hdr.icmp6_cksum
+#define nd_rd_reserved           nd_rd_hdr.icmp6_data32[0]
+
+struct nd_opt_hdr {
+	uint8_t  nd_opt_type;
+	uint8_t  nd_opt_len;
+};
+
+#define ND_OPT_SOURCE_LINKADDR		1
+#define ND_OPT_TARGET_LINKADDR		2
+#define ND_OPT_PREFIX_INFORMATION	3
+#define ND_OPT_REDIRECTED_HEADER	4
+#define ND_OPT_MTU			5
+#define ND_OPT_RTR_ADV_INTERVAL		7
+#define ND_OPT_HOME_AGENT_INFO		8
+
+struct nd_opt_prefix_info {
+	uint8_t   nd_opt_pi_type;
+	uint8_t   nd_opt_pi_len;
+	uint8_t   nd_opt_pi_prefix_len;
+	uint8_t   nd_opt_pi_flags_reserved;
+	uint32_t  nd_opt_pi_valid_time;
+	uint32_t  nd_opt_pi_preferred_time;
+	uint32_t  nd_opt_pi_reserved2;
+	struct in6_addr  nd_opt_pi_prefix;
+};
+
+#define ND_OPT_PI_FLAG_ONLINK	0x80
+#define ND_OPT_PI_FLAG_AUTO	0x40
+#define ND_OPT_PI_FLAG_RADDR	0x20
+
+struct nd_opt_rd_hdr {
+	uint8_t   nd_opt_rh_type;
+	uint8_t   nd_opt_rh_len;
+	uint16_t  nd_opt_rh_reserved1;
+	uint32_t  nd_opt_rh_reserved2;
+};
+
+struct nd_opt_mtu {
+	uint8_t   nd_opt_mtu_type;
+	uint8_t   nd_opt_mtu_len;
+	uint16_t  nd_opt_mtu_reserved;
+	uint32_t  nd_opt_mtu_mtu;
+};
+
+struct mld_hdr {
+	struct icmp6_hdr    mld_icmp6_hdr;
+	struct in6_addr     mld_addr;
+};
+
+#define mld_type        mld_icmp6_hdr.icmp6_type
+#define mld_code        mld_icmp6_hdr.icmp6_code
+#define mld_cksum       mld_icmp6_hdr.icmp6_cksum
+#define mld_maxdelay    mld_icmp6_hdr.icmp6_data16[0]
+#define mld_reserved    mld_icmp6_hdr.icmp6_data16[1]
+
+#define ICMP6_ROUTER_RENUMBERING    138
+
+struct icmp6_router_renum {
+	struct icmp6_hdr    rr_hdr;
+	uint8_t             rr_segnum;
+	uint8_t             rr_flags;
+	uint16_t            rr_maxdelay;
+	uint32_t            rr_reserved;
+};
+
+#define rr_type		rr_hdr.icmp6_type
+#define rr_code         rr_hdr.icmp6_code
+#define rr_cksum        rr_hdr.icmp6_cksum
+#define rr_seqnum       rr_hdr.icmp6_data32[0]
+
+#define ICMP6_RR_FLAGS_TEST             0x80
+#define ICMP6_RR_FLAGS_REQRESULT        0x40
+#define ICMP6_RR_FLAGS_FORCEAPPLY       0x20
+#define ICMP6_RR_FLAGS_SPECSITE         0x10
+#define ICMP6_RR_FLAGS_PREVDONE         0x08
+
+struct rr_pco_match {
+	uint8_t             rpm_code;
+	uint8_t             rpm_len;
+	uint8_t             rpm_ordinal;
+	uint8_t             rpm_matchlen;
+	uint8_t             rpm_minlen;
+	uint8_t             rpm_maxlen;
+	uint16_t            rpm_reserved;
+	struct in6_addr     rpm_prefix;
+};
+
+#define RPM_PCO_ADD             1
+#define RPM_PCO_CHANGE          2
+#define RPM_PCO_SETGLOBAL       3
+
+struct rr_pco_use {
+	uint8_t             rpu_uselen;
+	uint8_t             rpu_keeplen;
+	uint8_t             rpu_ramask;
+	uint8_t             rpu_raflags;
+	uint32_t            rpu_vltime;
+	uint32_t            rpu_pltime;
+	uint32_t            rpu_flags;
+	struct in6_addr     rpu_prefix;
+};
+
+#define ICMP6_RR_PCOUSE_RAFLAGS_ONLINK  0x20
+#define ICMP6_RR_PCOUSE_RAFLAGS_AUTO    0x10
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME 0x80000000
+#define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME 0x40000000
+#else
+#define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME 0x80
+#define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME 0x40
+#endif
+
+struct rr_result {
+	uint16_t            rrr_flags;
+	uint8_t             rrr_ordinal;
+	uint8_t             rrr_matchedlen;
+	uint32_t            rrr_ifid;
+	struct in6_addr     rrr_prefix;
+};
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define ICMP6_RR_RESULT_FLAGS_OOB       0x0002
+#define ICMP6_RR_RESULT_FLAGS_FORBIDDEN 0x0001
+#else
+#define ICMP6_RR_RESULT_FLAGS_OOB       0x0200
+#define ICMP6_RR_RESULT_FLAGS_FORBIDDEN 0x0100
+#endif
+
+struct nd_opt_adv_interval {
+	uint8_t   nd_opt_adv_interval_type;
+	uint8_t   nd_opt_adv_interval_len;
+	uint16_t  nd_opt_adv_interval_reserved;
+	uint32_t  nd_opt_adv_interval_ival;
+};
+
+struct nd_opt_home_agent_info {
+	uint8_t   nd_opt_home_agent_info_type;
+	uint8_t   nd_opt_home_agent_info_len;
+	uint16_t  nd_opt_home_agent_info_reserved;
+	uint16_t  nd_opt_home_agent_info_preference;
+	uint16_t  nd_opt_home_agent_info_lifetime;
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/netinet/if_ether.h b/i686-linux-musl/include/netinet/if_ether.h
new file mode 100644
index 0000000..55a2ff1
--- /dev/null
+++ b/i686-linux-musl/include/netinet/if_ether.h
@@ -0,0 +1,148 @@
+#ifndef _NETINET_IF_ETHER_H
+#define _NETINET_IF_ETHER_H
+
+#include <stdint.h>
+#include <sys/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_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_AOE	0x88A2
+#define ETH_P_8021AD	0x88A8
+#define ETH_P_802_EX1	0x88B5
+#define ETH_P_ERSPAN	0x88BE
+#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_FCOE	0x8906
+#define ETH_P_TDLS	0x890D
+#define ETH_P_FIP	0x8914
+#define ETH_P_IBOE	0x8915
+#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
+
+struct ethhdr {
+	uint8_t h_dest[ETH_ALEN];
+	uint8_t h_source[ETH_ALEN];
+	uint16_t h_proto;
+};
+
+#include <net/ethernet.h>
+#include <net/if_arp.h>
+
+struct	ether_arp {
+	struct	arphdr ea_hdr;
+	uint8_t arp_sha[ETH_ALEN];
+	uint8_t arp_spa[4];
+	uint8_t arp_tha[ETH_ALEN];
+	uint8_t arp_tpa[4];
+};
+#define	arp_hrd	ea_hdr.ar_hrd
+#define	arp_pro	ea_hdr.ar_pro
+#define	arp_hln	ea_hdr.ar_hln
+#define	arp_pln	ea_hdr.ar_pln
+#define	arp_op	ea_hdr.ar_op
+
+#define ETHER_MAP_IP_MULTICAST(ipaddr, enaddr) \
+do { \
+	(enaddr)[0] = 0x01; \
+	(enaddr)[1] = 0x00; \
+	(enaddr)[2] = 0x5e; \
+	(enaddr)[3] = ((uint8_t *)ipaddr)[1] & 0x7f; \
+	(enaddr)[4] = ((uint8_t *)ipaddr)[2]; \
+	(enaddr)[5] = ((uint8_t *)ipaddr)[3]; \
+} while(0)
+
+#define __UAPI_DEF_ETHHDR       0
+
+#endif
diff --git a/i686-linux-musl/include/netinet/igmp.h b/i686-linux-musl/include/netinet/igmp.h
new file mode 100644
index 0000000..bbe8206
--- /dev/null
+++ b/i686-linux-musl/include/netinet/igmp.h
@@ -0,0 +1,45 @@
+#ifndef _NETINET_IGMP_H
+#define _NETINET_IGMP_H
+
+#include <stdint.h>
+#include <netinet/in.h>
+
+struct igmp {
+	uint8_t igmp_type;
+	uint8_t igmp_code;
+	uint16_t igmp_cksum;
+	struct in_addr igmp_group;
+};
+
+#define IGMP_MINLEN			8
+
+#define IGMP_MEMBERSHIP_QUERY   	0x11
+#define IGMP_V1_MEMBERSHIP_REPORT	0x12
+#define IGMP_V2_MEMBERSHIP_REPORT	0x16
+#define IGMP_V2_LEAVE_GROUP		0x17
+
+#define IGMP_DVMRP			0x13
+#define IGMP_PIM			0x14
+#define IGMP_TRACE			0x15
+
+#define IGMP_MTRACE_RESP		0x1e
+#define IGMP_MTRACE			0x1f
+
+#define IGMP_MAX_HOST_REPORT_DELAY	10
+#define IGMP_TIMER_SCALE		10
+
+#define IGMP_DELAYING_MEMBER	1
+#define IGMP_IDLE_MEMBER	2
+#define IGMP_LAZY_MEMBER	3
+#define IGMP_SLEEPING_MEMBER	4
+#define IGMP_AWAKENING_MEMBER	5
+
+#define IGMP_v1_ROUTER		1
+#define IGMP_v2_ROUTER		2
+
+#define IGMP_HOST_MEMBERSHIP_QUERY	IGMP_MEMBERSHIP_QUERY
+#define IGMP_HOST_MEMBERSHIP_REPORT	IGMP_V1_MEMBERSHIP_REPORT
+#define IGMP_HOST_NEW_MEMBERSHIP_REPORT	IGMP_V2_MEMBERSHIP_REPORT
+#define IGMP_HOST_LEAVE_MESSAGE		IGMP_V2_LEAVE_GROUP
+
+#endif
diff --git a/i686-linux-musl/include/netinet/in.h b/i686-linux-musl/include/netinet/in.h
new file mode 100644
index 0000000..f959433
--- /dev/null
+++ b/i686-linux-musl/include/netinet/in.h
@@ -0,0 +1,416 @@
+#ifndef	_NETINET_IN_H
+#define	_NETINET_IN_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <inttypes.h>
+#include <sys/socket.h>
+
+typedef uint16_t in_port_t;
+typedef uint32_t in_addr_t;
+struct in_addr { in_addr_t s_addr; };
+
+struct sockaddr_in {
+	sa_family_t sin_family;
+	in_port_t sin_port;
+	struct in_addr sin_addr;
+	uint8_t sin_zero[8];
+};
+
+struct in6_addr {
+	union {
+		uint8_t __s6_addr[16];
+		uint16_t __s6_addr16[8];
+		uint32_t __s6_addr32[4];
+	} __in6_union;
+};
+#define s6_addr __in6_union.__s6_addr
+#define s6_addr16 __in6_union.__s6_addr16
+#define s6_addr32 __in6_union.__s6_addr32
+
+struct sockaddr_in6 {
+	sa_family_t     sin6_family;
+	in_port_t       sin6_port;
+	uint32_t        sin6_flowinfo;
+	struct in6_addr sin6_addr;
+	uint32_t        sin6_scope_id;
+};
+
+struct ipv6_mreq {
+	struct in6_addr ipv6mr_multiaddr;
+	unsigned        ipv6mr_interface;
+};
+
+#define INADDR_ANY        ((in_addr_t) 0x00000000)
+#define INADDR_BROADCAST  ((in_addr_t) 0xffffffff)
+#define INADDR_NONE       ((in_addr_t) 0xffffffff)
+#define INADDR_LOOPBACK   ((in_addr_t) 0x7f000001)
+
+#define INADDR_UNSPEC_GROUP     ((in_addr_t) 0xe0000000)
+#define INADDR_ALLHOSTS_GROUP   ((in_addr_t) 0xe0000001)
+#define INADDR_ALLRTRS_GROUP    ((in_addr_t) 0xe0000002)
+#define INADDR_ALLSNOOPERS_GROUP ((in_addr_t) 0xe000006a)
+#define INADDR_MAX_LOCAL_GROUP  ((in_addr_t) 0xe00000ff)
+
+#define IN6ADDR_ANY_INIT      { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } }
+#define IN6ADDR_LOOPBACK_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } }
+
+extern const struct in6_addr in6addr_any, in6addr_loopback;
+
+#define INET_ADDRSTRLEN  16
+#define INET6_ADDRSTRLEN 46
+
+uint32_t htonl(uint32_t);
+uint16_t htons(uint16_t);
+uint32_t ntohl(uint32_t);
+uint16_t ntohs(uint16_t);
+
+#define IPPORT_RESERVED 1024
+
+#define IPPROTO_IP       0
+#define IPPROTO_HOPOPTS  0
+#define IPPROTO_ICMP     1
+#define IPPROTO_IGMP     2
+#define IPPROTO_IPIP     4
+#define IPPROTO_TCP      6
+#define IPPROTO_EGP      8
+#define IPPROTO_PUP      12
+#define IPPROTO_UDP      17
+#define IPPROTO_IDP      22
+#define IPPROTO_TP       29
+#define IPPROTO_DCCP     33
+#define IPPROTO_IPV6     41
+#define IPPROTO_ROUTING  43
+#define IPPROTO_FRAGMENT 44
+#define IPPROTO_RSVP     46
+#define IPPROTO_GRE      47
+#define IPPROTO_ESP      50
+#define IPPROTO_AH       51
+#define IPPROTO_ICMPV6   58
+#define IPPROTO_NONE     59
+#define IPPROTO_DSTOPTS  60
+#define IPPROTO_MTP      92
+#define IPPROTO_BEETPH   94
+#define IPPROTO_ENCAP    98
+#define IPPROTO_PIM      103
+#define IPPROTO_COMP     108
+#define IPPROTO_SCTP     132
+#define IPPROTO_MH       135
+#define IPPROTO_UDPLITE  136
+#define IPPROTO_MPLS     137
+#define IPPROTO_ETHERNET 143
+#define IPPROTO_RAW      255
+#define IPPROTO_MPTCP    262
+#define IPPROTO_MAX      263
+
+#define IN6_IS_ADDR_UNSPECIFIED(a) \
+        (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \
+         ((uint32_t *) (a))[2] == 0 && ((uint32_t *) (a))[3] == 0)
+
+#define IN6_IS_ADDR_LOOPBACK(a) \
+        (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \
+         ((uint32_t *) (a))[2] == 0 && \
+         ((uint8_t *) (a))[12] == 0 && ((uint8_t *) (a))[13] == 0 && \
+         ((uint8_t *) (a))[14] == 0 && ((uint8_t *) (a))[15] == 1 )
+
+#define IN6_IS_ADDR_MULTICAST(a) (((uint8_t *) (a))[0] == 0xff)
+
+#define IN6_IS_ADDR_LINKLOCAL(a) \
+        ((((uint8_t *) (a))[0]) == 0xfe && (((uint8_t *) (a))[1] & 0xc0) == 0x80)
+
+#define IN6_IS_ADDR_SITELOCAL(a) \
+        ((((uint8_t *) (a))[0]) == 0xfe && (((uint8_t *) (a))[1] & 0xc0) == 0xc0)
+
+#define IN6_IS_ADDR_V4MAPPED(a) \
+        (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \
+         ((uint8_t *) (a))[8] == 0 && ((uint8_t *) (a))[9] == 0 && \
+         ((uint8_t *) (a))[10] == 0xff && ((uint8_t *) (a))[11] == 0xff)
+
+#define IN6_IS_ADDR_V4COMPAT(a) \
+        (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \
+         ((uint32_t *) (a))[2] == 0 && ((uint8_t *) (a))[15] > 1)
+
+#define IN6_IS_ADDR_MC_NODELOCAL(a) \
+        (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x1))
+
+#define IN6_IS_ADDR_MC_LINKLOCAL(a) \
+        (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x2))
+
+#define IN6_IS_ADDR_MC_SITELOCAL(a) \
+        (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x5))
+
+#define IN6_IS_ADDR_MC_ORGLOCAL(a) \
+        (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x8))
+
+#define IN6_IS_ADDR_MC_GLOBAL(a) \
+        (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0xe))
+
+#define __ARE_4_EQUAL(a,b) \
+	(!( (0[a]-0[b]) | (1[a]-1[b]) | (2[a]-2[b]) | (3[a]-3[b]) ))
+#define IN6_ARE_ADDR_EQUAL(a,b) \
+	__ARE_4_EQUAL((const uint32_t *)(a), (const uint32_t *)(b))
+
+#define	IN_CLASSA(a)		((((in_addr_t)(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)		((((in_addr_t)(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)		((((in_addr_t)(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)		((((in_addr_t)(a)) & 0xf0000000) == 0xe0000000)
+#define	IN_MULTICAST(a)		IN_CLASSD(a)
+#define	IN_EXPERIMENTAL(a)	((((in_addr_t)(a)) & 0xe0000000) == 0xe0000000)
+#define	IN_BADCLASS(a)		((((in_addr_t)(a)) & 0xf0000000) == 0xf0000000)
+
+#define IN_LOOPBACKNET 127
+
+
+#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_PMTUDISC        10
+#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_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_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 IP_MULTICAST_ALL   49
+#define IP_UNICAST_IF      50
+
+#define IP_RECVRETOPTS IP_RETOPTS
+
+#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_DEFAULT_MULTICAST_TTL        1
+#define IP_DEFAULT_MULTICAST_LOOP       1
+#define IP_MAX_MEMBERSHIPS              20
+
+struct ip_opts {
+	struct in_addr ip_dst;
+	char ip_opts[40];
+};
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+
+#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 MCAST_EXCLUDE 0
+#define MCAST_INCLUDE 1
+
+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;
+};
+
+struct ip_mreq_source {
+	struct in_addr imr_multiaddr;
+	struct in_addr imr_interface;
+	struct in_addr imr_sourceaddr;
+};
+
+struct ip_msfilter {
+	struct in_addr imsf_multiaddr;
+	struct in_addr imsf_interface;
+	uint32_t imsf_fmode;
+	uint32_t imsf_numsrc;
+	struct in_addr imsf_slist[1];
+};
+#define IP_MSFILTER_SIZE(numsrc) \
+	(sizeof(struct ip_msfilter) - sizeof(struct in_addr) \
+	+ (numsrc) * sizeof(struct in_addr))
+
+struct group_req {
+	uint32_t gr_interface;
+	struct sockaddr_storage gr_group;
+};
+
+struct group_source_req {
+	uint32_t gsr_interface;
+	struct sockaddr_storage gsr_group;
+	struct sockaddr_storage gsr_source;
+};
+
+struct group_filter {
+	uint32_t gf_interface;
+	struct sockaddr_storage gf_group;
+	uint32_t gf_fmode;
+	uint32_t gf_numsrc;
+	struct sockaddr_storage gf_slist[1];
+};
+#define GROUP_FILTER_SIZE(numsrc) \
+	(sizeof(struct group_filter) - sizeof(struct sockaddr_storage) \
+	+ (numsrc) * sizeof(struct sockaddr_storage))
+
+struct in_pktinfo {
+	int ipi_ifindex;
+	struct in_addr ipi_spec_dst;
+	struct in_addr ipi_addr;
+};
+
+struct in6_pktinfo {
+	struct in6_addr ipi6_addr;
+	unsigned ipi6_ifindex;
+};
+
+struct ip6_mtuinfo {
+	struct sockaddr_in6 ip6m_addr;
+	uint32_t ip6m_mtu;
+};
+#endif
+
+#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_UNICAST_HOPS       16
+#define IPV6_MULTICAST_IF       17
+#define IPV6_MULTICAST_HOPS     18
+#define IPV6_MULTICAST_LOOP     19
+#define IPV6_JOIN_GROUP         20
+#define IPV6_LEAVE_GROUP        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_IPSEC_POLICY       34
+#define IPV6_XFRM_POLICY        35
+#define IPV6_HDRINCL            36
+
+#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_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
+
+#define IPV6_ADD_MEMBERSHIP     IPV6_JOIN_GROUP
+#define IPV6_DROP_MEMBERSHIP    IPV6_LEAVE_GROUP
+#define IPV6_RXHOPOPTS          IPV6_HOPOPTS
+#define IPV6_RXDSTOPTS          IPV6_DSTOPTS
+
+#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_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_RTHDR_LOOSE        0
+#define IPV6_RTHDR_STRICT       1
+
+#define IPV6_RTHDR_TYPE_0       0
+
+#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
+#define __UAPI_DEF_IN6_ADDR_ALT 0
+#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
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/netinet/in_systm.h b/i686-linux-musl/include/netinet/in_systm.h
new file mode 100644
index 0000000..a7b4177
--- /dev/null
+++ b/i686-linux-musl/include/netinet/in_systm.h
@@ -0,0 +1,9 @@
+#ifndef _NETINET_IN_SYSTM_H
+#define _NETINET_IN_SYSTM_H
+
+#include <stdint.h>
+
+typedef uint16_t n_short;
+typedef uint32_t n_long, n_time;
+
+#endif
diff --git a/i686-linux-musl/include/netinet/ip.h b/i686-linux-musl/include/netinet/ip.h
new file mode 100644
index 0000000..0ae132a
--- /dev/null
+++ b/i686-linux-musl/include/netinet/ip.h
@@ -0,0 +1,199 @@
+#ifndef _NETINET_IP_H
+#define _NETINET_IP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+#include <netinet/in.h>
+
+struct timestamp {
+	uint8_t len;
+	uint8_t ptr;
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+	unsigned int flags:4;
+	unsigned int overflow:4;
+#else
+	unsigned int overflow:4;
+	unsigned int flags:4;
+#endif
+	uint32_t data[9];
+  };
+
+struct iphdr {
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+	unsigned int ihl:4;
+	unsigned int version:4;
+#else
+	unsigned int version:4;
+	unsigned int ihl:4;
+#endif
+	uint8_t tos;
+	uint16_t tot_len;
+	uint16_t id;
+	uint16_t frag_off;
+	uint8_t ttl;
+	uint8_t protocol;
+	uint16_t check;
+	uint32_t saddr;
+	uint32_t daddr;
+};
+
+struct ip {
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+	unsigned int ip_hl:4;
+	unsigned int ip_v:4;
+#else
+	unsigned int ip_v:4;
+	unsigned int ip_hl:4;
+#endif
+	uint8_t ip_tos;
+	uint16_t ip_len;
+	uint16_t ip_id;
+	uint16_t ip_off;
+	uint8_t ip_ttl;
+	uint8_t ip_p;
+	uint16_t ip_sum;
+	struct in_addr ip_src, ip_dst;
+};
+
+#define	IP_RF 0x8000
+#define	IP_DF 0x4000
+#define	IP_MF 0x2000
+#define	IP_OFFMASK 0x1fff
+
+struct ip_timestamp {
+	uint8_t ipt_code;
+	uint8_t ipt_len;
+	uint8_t ipt_ptr;
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+	unsigned int ipt_flg:4;
+	unsigned int ipt_oflw:4;
+#else
+	unsigned int ipt_oflw:4;
+	unsigned int ipt_flg:4;
+#endif
+	uint32_t data[9];
+};
+
+#define	IPVERSION	4
+#define	IP_MAXPACKET	65535
+
+#define	IPTOS_ECN_MASK		0x03
+#define	IPTOS_ECN(x)		((x) & IPTOS_ECN_MASK)
+#define	IPTOS_ECN_NOT_ECT	0x00
+#define	IPTOS_ECN_ECT1		0x01
+#define	IPTOS_ECN_ECT0		0x02
+#define	IPTOS_ECN_CE		0x03
+
+#define	IPTOS_DSCP_MASK		0xfc
+#define	IPTOS_DSCP(x)		((x) & IPTOS_DSCP_MASK)
+#define	IPTOS_DSCP_AF11		0x28
+#define	IPTOS_DSCP_AF12		0x30
+#define	IPTOS_DSCP_AF13		0x38
+#define	IPTOS_DSCP_AF21		0x48
+#define	IPTOS_DSCP_AF22		0x50
+#define	IPTOS_DSCP_AF23		0x58
+#define	IPTOS_DSCP_AF31		0x68
+#define	IPTOS_DSCP_AF32		0x70
+#define	IPTOS_DSCP_AF33		0x78
+#define	IPTOS_DSCP_AF41		0x88
+#define	IPTOS_DSCP_AF42		0x90
+#define	IPTOS_DSCP_AF43		0x98
+#define	IPTOS_DSCP_EF		0xb8
+
+#define	IPTOS_CLASS_MASK	0xe0
+#define	IPTOS_CLASS(x)		((x) & IPTOS_CLASS_MASK)
+#define	IPTOS_CLASS_CS0		0x00
+#define	IPTOS_CLASS_CS1		0x20
+#define	IPTOS_CLASS_CS2		0x40
+#define	IPTOS_CLASS_CS3		0x60
+#define	IPTOS_CLASS_CS4		0x80
+#define	IPTOS_CLASS_CS5		0xa0
+#define	IPTOS_CLASS_CS6		0xc0
+#define	IPTOS_CLASS_CS7		0xe0
+#define	IPTOS_CLASS_DEFAULT	IPTOS_CLASS_CS0
+
+#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_LOWCOST		0x02
+#define	IPTOS_MINCOST		IPTOS_LOWCOST
+
+#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_DEBMEAS		0x40
+#define	IPOPT_MEASUREMENT       IPOPT_DEBMEAS
+#define	IPOPT_RESERVED2		0x60
+
+#define	IPOPT_EOL		0
+#define	IPOPT_END		IPOPT_EOL
+#define	IPOPT_NOP		1
+#define	IPOPT_NOOP		IPOPT_NOP
+
+#define	IPOPT_RR		7
+#define	IPOPT_TS		68
+#define	IPOPT_TIMESTAMP		IPOPT_TS
+#define	IPOPT_SECURITY		130
+#define	IPOPT_SEC		IPOPT_SECURITY
+#define	IPOPT_LSRR		131
+#define	IPOPT_SATID		136
+#define	IPOPT_SID		IPOPT_SATID
+#define	IPOPT_SSRR		137
+#define	IPOPT_RA		148
+
+#define	IPOPT_OPTVAL		0
+#define	IPOPT_OLEN		1
+#define	IPOPT_OFFSET		2
+#define	IPOPT_MINOFF		4
+
+#define	MAX_IPOPTLEN		40
+
+#define	IPOPT_TS_TSONLY		0
+#define	IPOPT_TS_TSANDADDR	1
+#define	IPOPT_TS_PRESPEC	3
+
+#define	IPOPT_SECUR_UNCLASS	0x0000
+#define	IPOPT_SECUR_CONFID	0xf135
+#define	IPOPT_SECUR_EFTO	0x789a
+#define	IPOPT_SECUR_MMMM	0xbc4d
+#define	IPOPT_SECUR_RESTR	0xaf13
+#define	IPOPT_SECUR_SECRET	0xd788
+#define	IPOPT_SECUR_TOPSECRET	0x6bc5
+
+#define	MAXTTL		255
+#define	IPDEFTTL	64
+#define	IPFRAGTTL	60
+#define	IPTTLDEC	1
+
+#define	IP_MSS		576
+
+#define __UAPI_DEF_IPHDR	0
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/netinet/ip6.h b/i686-linux-musl/include/netinet/ip6.h
new file mode 100644
index 0000000..50c626a
--- /dev/null
+++ b/i686-linux-musl/include/netinet/ip6.h
@@ -0,0 +1,141 @@
+#ifndef _NETINET_IP6_H
+#define _NETINET_IP6_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+#include <netinet/in.h>
+
+struct ip6_hdr {
+	union {
+		struct ip6_hdrctl {
+			uint32_t ip6_un1_flow;
+			uint16_t ip6_un1_plen;
+			uint8_t  ip6_un1_nxt;
+			uint8_t  ip6_un1_hlim;
+		} ip6_un1;
+		uint8_t ip6_un2_vfc;
+	} ip6_ctlun;
+	struct in6_addr ip6_src;
+	struct in6_addr ip6_dst;
+};
+
+#define ip6_vfc   ip6_ctlun.ip6_un2_vfc
+#define ip6_flow  ip6_ctlun.ip6_un1.ip6_un1_flow
+#define ip6_plen  ip6_ctlun.ip6_un1.ip6_un1_plen
+#define ip6_nxt   ip6_ctlun.ip6_un1.ip6_un1_nxt
+#define ip6_hlim  ip6_ctlun.ip6_un1.ip6_un1_hlim
+#define ip6_hops  ip6_ctlun.ip6_un1.ip6_un1_hlim
+
+struct ip6_ext {
+	uint8_t  ip6e_nxt;
+	uint8_t  ip6e_len;
+};
+
+struct ip6_hbh {
+	uint8_t  ip6h_nxt;
+	uint8_t  ip6h_len;
+};
+
+struct ip6_dest {
+	uint8_t  ip6d_nxt;
+	uint8_t  ip6d_len;
+};
+
+struct ip6_rthdr {
+	uint8_t  ip6r_nxt;
+	uint8_t  ip6r_len;
+	uint8_t  ip6r_type;
+	uint8_t  ip6r_segleft;
+};
+
+struct ip6_rthdr0 {
+	uint8_t  ip6r0_nxt;
+	uint8_t  ip6r0_len;
+	uint8_t  ip6r0_type;
+	uint8_t  ip6r0_segleft;
+	uint8_t  ip6r0_reserved;
+	uint8_t  ip6r0_slmap[3];
+	struct in6_addr ip6r0_addr[];
+};
+
+struct ip6_frag {
+	uint8_t   ip6f_nxt;
+	uint8_t   ip6f_reserved;
+	uint16_t  ip6f_offlg;
+	uint32_t  ip6f_ident;
+};
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define IP6F_OFF_MASK       0xfff8
+#define IP6F_RESERVED_MASK  0x0006
+#define IP6F_MORE_FRAG      0x0001
+#else
+#define IP6F_OFF_MASK       0xf8ff
+#define IP6F_RESERVED_MASK  0x0600
+#define IP6F_MORE_FRAG      0x0100
+#endif
+
+struct ip6_opt {
+	uint8_t  ip6o_type;
+	uint8_t  ip6o_len;
+};
+
+#define IP6OPT_TYPE(o)		((o) & 0xc0)
+#define IP6OPT_TYPE_SKIP	0x00
+#define IP6OPT_TYPE_DISCARD	0x40
+#define IP6OPT_TYPE_FORCEICMP	0x80
+#define IP6OPT_TYPE_ICMP	0xc0
+#define IP6OPT_TYPE_MUTABLE	0x20
+
+#define IP6OPT_PAD1	0
+#define IP6OPT_PADN	1
+
+#define IP6OPT_JUMBO		0xc2
+#define IP6OPT_NSAP_ADDR	0xc3
+#define IP6OPT_TUNNEL_LIMIT	0x04
+#define IP6OPT_ROUTER_ALERT	0x05
+
+struct ip6_opt_jumbo {
+	uint8_t  ip6oj_type;
+	uint8_t  ip6oj_len;
+	uint8_t  ip6oj_jumbo_len[4];
+};
+#define IP6OPT_JUMBO_LEN	6
+
+struct ip6_opt_nsap {
+	uint8_t  ip6on_type;
+	uint8_t  ip6on_len;
+	uint8_t  ip6on_src_nsap_len;
+	uint8_t  ip6on_dst_nsap_len;
+};
+
+struct ip6_opt_tunnel {
+	uint8_t  ip6ot_type;
+	uint8_t  ip6ot_len;
+	uint8_t  ip6ot_encap_limit;
+};
+
+struct ip6_opt_router {
+	uint8_t  ip6or_type;
+	uint8_t  ip6or_len;
+	uint8_t  ip6or_value[2];
+};
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define IP6_ALERT_MLD	0x0000
+#define IP6_ALERT_RSVP	0x0001
+#define IP6_ALERT_AN	0x0002
+#else
+#define IP6_ALERT_MLD	0x0000
+#define IP6_ALERT_RSVP	0x0100
+#define IP6_ALERT_AN	0x0200
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/netinet/ip_icmp.h b/i686-linux-musl/include/netinet/ip_icmp.h
new file mode 100644
index 0000000..b9e0df8
--- /dev/null
+++ b/i686-linux-musl/include/netinet/ip_icmp.h
@@ -0,0 +1,193 @@
+#ifndef _NETINET_IP_ICMP_H
+#define _NETINET_IP_ICMP_H
+
+#include <stdint.h>
+#include <netinet/in.h>
+#include <netinet/ip.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct icmphdr {
+	uint8_t type;
+	uint8_t code;
+	uint16_t checksum;
+	union {
+		struct {
+			uint16_t id;
+			uint16_t sequence;
+		} echo;
+		uint32_t gateway;
+		struct {
+			uint16_t __unused;
+			uint16_t mtu;
+		} frag;
+		uint8_t reserved[4];
+	} un;
+};
+
+#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
+
+
+struct icmp_ra_addr {
+	uint32_t ira_addr;
+	uint32_t ira_preference;
+};
+
+struct icmp {
+	uint8_t  icmp_type;
+	uint8_t  icmp_code;
+	uint16_t icmp_cksum;
+	union {
+		uint8_t ih_pptr;
+		struct in_addr ih_gwaddr;
+		struct ih_idseq {
+			uint16_t icd_id;
+			uint16_t icd_seq;
+		} ih_idseq;
+		uint32_t ih_void;
+
+		struct ih_pmtu {
+			uint16_t ipm_void;
+			uint16_t ipm_nextmtu;
+		} ih_pmtu;
+
+		struct ih_rtradv {
+			uint8_t irt_num_addrs;
+			uint8_t irt_wpa;
+			uint16_t irt_lifetime;
+		} ih_rtradv;
+	} icmp_hun;
+	union {
+		struct {
+			uint32_t its_otime;
+			uint32_t its_rtime;
+			uint32_t its_ttime;
+		} id_ts;
+		struct {
+			struct ip idi_ip;
+		} id_ip;
+		struct icmp_ra_addr id_radv;
+		uint32_t   id_mask;
+		uint8_t    id_data[1];
+	} icmp_dun;
+};
+
+#define	icmp_pptr	icmp_hun.ih_pptr
+#define	icmp_gwaddr	icmp_hun.ih_gwaddr
+#define	icmp_id		icmp_hun.ih_idseq.icd_id
+#define	icmp_seq	icmp_hun.ih_idseq.icd_seq
+#define	icmp_void	icmp_hun.ih_void
+#define	icmp_pmvoid	icmp_hun.ih_pmtu.ipm_void
+#define	icmp_nextmtu	icmp_hun.ih_pmtu.ipm_nextmtu
+#define	icmp_num_addrs	icmp_hun.ih_rtradv.irt_num_addrs
+#define	icmp_wpa	icmp_hun.ih_rtradv.irt_wpa
+#define	icmp_lifetime	icmp_hun.ih_rtradv.irt_lifetime
+#define	icmp_otime	icmp_dun.id_ts.its_otime
+#define	icmp_rtime	icmp_dun.id_ts.its_rtime
+#define	icmp_ttime	icmp_dun.id_ts.its_ttime
+#define	icmp_ip		icmp_dun.id_ip.idi_ip
+#define	icmp_radv	icmp_dun.id_radv
+#define	icmp_mask	icmp_dun.id_mask
+#define	icmp_data	icmp_dun.id_data
+
+#define	ICMP_MINLEN	8
+#define	ICMP_TSLEN	(8 + 3 * sizeof (n_time))
+#define	ICMP_MASKLEN	12
+#define	ICMP_ADVLENMIN	(8 + sizeof (struct ip) + 8)
+#define	ICMP_ADVLEN(p)	(8 + ((p)->icmp_ip.ip_hl << 2) + 8)
+
+#define	ICMP_UNREACH		3
+#define	ICMP_SOURCEQUENCH	4
+#define	ICMP_ROUTERADVERT	9
+#define	ICMP_ROUTERSOLICIT	10
+#define	ICMP_TIMXCEED		11
+#define	ICMP_PARAMPROB		12
+#define	ICMP_TSTAMP		13
+#define	ICMP_TSTAMPREPLY	14
+#define	ICMP_IREQ		15
+#define	ICMP_IREQREPLY		16
+#define	ICMP_MASKREQ		17
+#define	ICMP_MASKREPLY		18
+#define	ICMP_MAXTYPE		18
+
+#define	ICMP_UNREACH_NET	        0
+#define	ICMP_UNREACH_HOST	        1
+#define	ICMP_UNREACH_PROTOCOL	        2
+#define	ICMP_UNREACH_PORT	        3
+#define	ICMP_UNREACH_NEEDFRAG	        4
+#define	ICMP_UNREACH_SRCFAIL	        5
+#define	ICMP_UNREACH_NET_UNKNOWN        6
+#define	ICMP_UNREACH_HOST_UNKNOWN       7
+#define	ICMP_UNREACH_ISOLATED	        8
+#define	ICMP_UNREACH_NET_PROHIB	        9
+#define	ICMP_UNREACH_HOST_PROHIB        10
+#define	ICMP_UNREACH_TOSNET	        11
+#define	ICMP_UNREACH_TOSHOST	        12
+#define	ICMP_UNREACH_FILTER_PROHIB      13
+#define	ICMP_UNREACH_HOST_PRECEDENCE    14
+#define	ICMP_UNREACH_PRECEDENCE_CUTOFF  15
+
+#define	ICMP_REDIRECT_NET	0
+#define	ICMP_REDIRECT_HOST	1
+#define	ICMP_REDIRECT_TOSNET	2
+#define	ICMP_REDIRECT_TOSHOST	3
+
+#define	ICMP_TIMXCEED_INTRANS	0
+#define	ICMP_TIMXCEED_REASS	1
+
+#define	ICMP_PARAMPROB_OPTABSENT 1
+
+#define	ICMP_INFOTYPE(type) \
+	((type) == ICMP_ECHOREPLY || (type) == ICMP_ECHO || \
+	(type) == ICMP_ROUTERADVERT || (type) == ICMP_ROUTERSOLICIT || \
+	(type) == ICMP_TSTAMP || (type) == ICMP_TSTAMPREPLY || \
+	(type) == ICMP_IREQ || (type) == ICMP_IREQREPLY || \
+	(type) == ICMP_MASKREQ || (type) == ICMP_MASKREPLY)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/netinet/tcp.h b/i686-linux-musl/include/netinet/tcp.h
new file mode 100644
index 0000000..b7b997f
--- /dev/null
+++ b/i686-linux-musl/include/netinet/tcp.h
@@ -0,0 +1,294 @@
+#ifndef _NETINET_TCP_H
+#define _NETINET_TCP_H
+
+#include <features.h>
+
+#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_TX_DELAY     37
+
+#define TCP_CM_INQ TCP_INQ
+
+#define TCP_ESTABLISHED  1
+#define TCP_SYN_SENT     2
+#define TCP_SYN_RECV     3
+#define TCP_FIN_WAIT1    4
+#define TCP_FIN_WAIT2    5
+#define TCP_TIME_WAIT    6
+#define TCP_CLOSE        7
+#define TCP_CLOSE_WAIT   8
+#define TCP_LAST_ACK     9
+#define TCP_LISTEN       10
+#define TCP_CLOSING      11
+
+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,
+};
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define TCPOPT_EOL              0
+#define TCPOPT_NOP              1
+#define TCPOPT_MAXSEG           2
+#define TCPOPT_WINDOW           3
+#define TCPOPT_SACK_PERMITTED   4
+#define TCPOPT_SACK             5
+#define TCPOPT_TIMESTAMP        8
+#define TCPOLEN_SACK_PERMITTED  2
+#define TCPOLEN_WINDOW          3
+#define TCPOLEN_MAXSEG          4
+#define TCPOLEN_TIMESTAMP       10
+
+#define SOL_TCP 6
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <stdint.h>
+
+typedef uint32_t tcp_seq;
+
+#define TH_FIN 0x01
+#define TH_SYN 0x02
+#define TH_RST 0x04
+#define TH_PUSH 0x08
+#define TH_ACK 0x10
+#define TH_URG 0x20
+
+struct tcphdr {
+#ifdef _GNU_SOURCE
+#ifdef __GNUC__
+	__extension__
+#endif
+	union { struct {
+
+	uint16_t source;
+	uint16_t dest;
+	uint32_t seq;
+	uint32_t ack_seq;
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+	uint16_t res1:4;
+	uint16_t doff:4;
+	uint16_t fin:1;
+	uint16_t syn:1;
+	uint16_t rst:1;
+	uint16_t psh:1;
+	uint16_t ack:1;
+	uint16_t urg:1;
+	uint16_t res2:2;
+#else
+	uint16_t doff:4;
+	uint16_t res1:4;
+	uint16_t res2:2;
+	uint16_t urg:1;
+	uint16_t ack:1;
+	uint16_t psh:1;
+	uint16_t rst:1;
+	uint16_t syn:1;
+	uint16_t fin:1;
+#endif
+	uint16_t window;
+	uint16_t check;
+	uint16_t urg_ptr;
+
+	}; struct {
+#endif
+
+	uint16_t th_sport;
+	uint16_t th_dport;
+	uint32_t th_seq;
+	uint32_t th_ack;
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+	uint8_t th_x2:4;
+	uint8_t th_off:4;
+#else
+	uint8_t th_off:4;
+	uint8_t th_x2:4;
+#endif
+	uint8_t th_flags;
+	uint16_t th_win;
+	uint16_t th_sum;
+	uint16_t th_urp;
+
+#ifdef _GNU_SOURCE
+	}; };
+#endif
+};
+#endif
+
+#ifdef _GNU_SOURCE
+#define TCPI_OPT_TIMESTAMPS	1
+#define TCPI_OPT_SACK		2
+#define TCPI_OPT_WSCALE		4
+#define TCPI_OPT_ECN		8
+
+#define TCP_CA_Open		0
+#define TCP_CA_Disorder		1
+#define TCP_CA_CWR		2
+#define TCP_CA_Recovery		3
+#define TCP_CA_Loss		4
+
+enum tcp_fastopen_client_fail {
+	TFO_STATUS_UNSPEC,
+	TFO_COOKIE_UNAVAILABLE,
+	TFO_DATA_NOT_ACKED,
+	TFO_SYN_RETRANSMITTED,
+};
+
+struct tcp_info {
+	uint8_t tcpi_state;
+	uint8_t tcpi_ca_state;
+	uint8_t tcpi_retransmits;
+	uint8_t tcpi_probes;
+	uint8_t tcpi_backoff;
+	uint8_t tcpi_options;
+	uint8_t tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
+	uint8_t tcpi_delivery_rate_app_limited : 1, tcpi_fastopen_client_fail : 2;
+	uint32_t tcpi_rto;
+	uint32_t tcpi_ato;
+	uint32_t tcpi_snd_mss;
+	uint32_t tcpi_rcv_mss;
+	uint32_t tcpi_unacked;
+	uint32_t tcpi_sacked;
+	uint32_t tcpi_lost;
+	uint32_t tcpi_retrans;
+	uint32_t tcpi_fackets;
+	uint32_t tcpi_last_data_sent;
+	uint32_t tcpi_last_ack_sent;
+	uint32_t tcpi_last_data_recv;
+	uint32_t tcpi_last_ack_recv;
+	uint32_t tcpi_pmtu;
+	uint32_t tcpi_rcv_ssthresh;
+	uint32_t tcpi_rtt;
+	uint32_t tcpi_rttvar;
+	uint32_t tcpi_snd_ssthresh;
+	uint32_t tcpi_snd_cwnd;
+	uint32_t tcpi_advmss;
+	uint32_t tcpi_reordering;
+	uint32_t tcpi_rcv_rtt;
+	uint32_t tcpi_rcv_space;
+	uint32_t tcpi_total_retrans;
+	uint64_t tcpi_pacing_rate;
+	uint64_t tcpi_max_pacing_rate;
+	uint64_t tcpi_bytes_acked;
+	uint64_t tcpi_bytes_received;
+	uint32_t tcpi_segs_out;
+	uint32_t tcpi_segs_in;
+	uint32_t tcpi_notsent_bytes;
+	uint32_t tcpi_min_rtt;
+	uint32_t tcpi_data_segs_in;
+	uint32_t tcpi_data_segs_out;
+	uint64_t tcpi_delivery_rate;
+	uint64_t tcpi_busy_time;
+	uint64_t tcpi_rwnd_limited;
+	uint64_t tcpi_sndbuf_limited;
+	uint32_t tcpi_delivered;
+	uint32_t tcpi_delivered_ce;
+	uint64_t tcpi_bytes_sent;
+	uint64_t tcpi_bytes_retrans;
+	uint32_t tcpi_dsack_dups;
+	uint32_t tcpi_reord_seen;
+	uint32_t tcpi_rcv_ooopack;
+	uint32_t tcpi_snd_wnd;
+};
+
+#define TCP_MD5SIG_MAXKEYLEN    80
+
+#define TCP_MD5SIG_FLAG_PREFIX  0x1
+#define TCP_MD5SIG_FLAG_IFINDEX 0x2
+
+struct tcp_md5sig {
+	struct sockaddr_storage tcpm_addr;
+	uint8_t tcpm_flags;
+	uint8_t tcpm_prefixlen;
+	uint16_t tcpm_keylen;
+	int tcpm_ifindex;
+	uint8_t tcpm_key[TCP_MD5SIG_MAXKEYLEN];
+};
+
+struct tcp_diag_md5sig {
+	uint8_t tcpm_family;
+	uint8_t tcpm_prefixlen;
+	uint16_t tcpm_keylen;
+	uint32_t tcpm_addr[4];
+	uint8_t tcpm_key[TCP_MD5SIG_MAXKEYLEN];
+};
+
+#define TCP_REPAIR_ON		1
+#define TCP_REPAIR_OFF		0
+#define TCP_REPAIR_OFF_NO_WP	-1
+
+struct tcp_repair_window {
+	uint32_t snd_wl1;
+	uint32_t snd_wnd;
+	uint32_t max_window;
+	uint32_t rcv_wnd;
+	uint32_t rcv_wup;
+};
+
+struct tcp_zerocopy_receive {
+	uint64_t address;
+	uint32_t length;
+	uint32_t recv_skip_hint;
+	uint32_t inq;
+	int32_t err;
+};
+
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/netinet/udp.h b/i686-linux-musl/include/netinet/udp.h
new file mode 100644
index 0000000..40c3f20
--- /dev/null
+++ b/i686-linux-musl/include/netinet/udp.h
@@ -0,0 +1,46 @@
+#ifndef _NETINET_UDP_H
+#define _NETINET_UDP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <stdint.h>
+
+#ifdef _GNU_SOURCE
+#define uh_sport source
+#define uh_dport dest
+#define uh_ulen len
+#define uh_sum check
+#endif
+
+struct udphdr {
+	uint16_t uh_sport;
+	uint16_t uh_dport;
+	uint16_t uh_ulen;
+	uint16_t uh_sum;
+};
+
+#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
+
+#define SOL_UDP            17
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/netpacket/packet.h b/i686-linux-musl/include/netpacket/packet.h
new file mode 100644
index 0000000..b36e092
--- /dev/null
+++ b/i686-linux-musl/include/netpacket/packet.h
@@ -0,0 +1,62 @@
+#ifndef _NETPACKET_PACKET_H
+#define _NETPACKET_PACKET_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct sockaddr_ll {
+	unsigned short sll_family, sll_protocol;
+	int sll_ifindex;
+	unsigned short sll_hatype;
+	unsigned char sll_pkttype, sll_halen;
+	unsigned char sll_addr[8];
+};
+
+struct packet_mreq {
+	int mr_ifindex;
+	unsigned short int mr_type,  mr_alen;
+	unsigned char mr_address[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_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_MR_MULTICAST	0
+#define PACKET_MR_PROMISC	1
+#define PACKET_MR_ALLMULTI	2
+#define PACKET_MR_UNICAST	3
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/nl_types.h b/i686-linux-musl/include/nl_types.h
new file mode 100644
index 0000000..7c2d48e
--- /dev/null
+++ b/i686-linux-musl/include/nl_types.h
@@ -0,0 +1,22 @@
+#ifndef _NL_TYPES_H
+#define _NL_TYPES_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define NL_SETD 1
+#define NL_CAT_LOCALE 1
+
+typedef int nl_item;
+typedef void *nl_catd;
+
+nl_catd catopen (const char *, int);
+char *catgets (nl_catd, int, int, const char *);
+int catclose (nl_catd);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/paths.h b/i686-linux-musl/include/paths.h
new file mode 100644
index 0000000..67de6b3
--- /dev/null
+++ b/i686-linux-musl/include/paths.h
@@ -0,0 +1,31 @@
+#ifndef _PATHS_H
+#define _PATHS_H
+
+#define	_PATH_DEFPATH "/usr/local/bin:/bin:/usr/bin"
+#define	_PATH_STDPATH "/bin:/usr/bin:/sbin:/usr/sbin"
+
+#define	_PATH_BSHELL	"/bin/sh"
+#define	_PATH_CONSOLE	"/dev/console"
+#define	_PATH_DEVNULL	"/dev/null"
+#define	_PATH_KLOG	"/proc/kmsg"
+#define	_PATH_LASTLOG	"/var/log/lastlog"
+#define	_PATH_MAILDIR	"/var/mail"
+#define	_PATH_MAN	"/usr/share/man"
+#define	_PATH_MNTTAB	"/etc/fstab"
+#define	_PATH_MOUNTED	"/etc/mtab"
+#define	_PATH_NOLOGIN	"/etc/nologin"
+#define	_PATH_SENDMAIL	"/usr/sbin/sendmail"
+#define	_PATH_SHADOW	"/etc/shadow"
+#define	_PATH_SHELLS	"/etc/shells"
+#define	_PATH_TTY	"/dev/tty"
+#define _PATH_UTMP	"/dev/null/utmp"
+#define	_PATH_VI	"/usr/bin/vi"
+#define _PATH_WTMP	"/dev/null/wtmp"
+
+#define	_PATH_DEV	"/dev/"
+#define	_PATH_TMP	"/tmp/"
+#define	_PATH_VARDB	"/var/lib/misc/"
+#define	_PATH_VARRUN	"/var/run/"
+#define	_PATH_VARTMP	"/var/tmp/"
+
+#endif
diff --git a/i686-linux-musl/include/poll.h b/i686-linux-musl/include/poll.h
new file mode 100644
index 0000000..472e4b8
--- /dev/null
+++ b/i686-linux-musl/include/poll.h
@@ -0,0 +1,57 @@
+#ifndef	_POLL_H
+#define	_POLL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#include <bits/poll.h>
+
+#define POLLIN     0x001
+#define POLLPRI    0x002
+#define POLLOUT    0x004
+#define POLLERR    0x008
+#define POLLHUP    0x010
+#define POLLNVAL   0x020
+#define POLLRDNORM 0x040
+#define POLLRDBAND 0x080
+#ifndef POLLWRNORM
+#define POLLWRNORM 0x100
+#define POLLWRBAND 0x200
+#endif
+#ifndef POLLMSG
+#define POLLMSG    0x400
+#define POLLRDHUP  0x2000
+#endif
+
+typedef unsigned long nfds_t;
+
+struct pollfd {
+	int fd;
+	short events;
+	short revents;
+};
+
+int poll (struct pollfd *, nfds_t, int);
+
+#ifdef _GNU_SOURCE
+#define __NEED_time_t
+#define __NEED_struct_timespec
+#define __NEED_sigset_t
+#include <bits/alltypes.h>
+int ppoll(struct pollfd *, nfds_t, const struct timespec *, const sigset_t *);
+#endif
+
+#if _REDIR_TIME64
+#ifdef _GNU_SOURCE
+__REDIR(ppoll, __ppoll_time64);
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/pthread.h b/i686-linux-musl/include/pthread.h
new file mode 100644
index 0000000..89fd9ff
--- /dev/null
+++ b/i686-linux-musl/include/pthread.h
@@ -0,0 +1,244 @@
+#ifndef _PTHREAD_H
+#define _PTHREAD_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_time_t
+#define __NEED_clockid_t
+#define __NEED_struct_timespec
+#define __NEED_sigset_t
+#define __NEED_pthread_t
+#define __NEED_pthread_attr_t
+#define __NEED_pthread_mutexattr_t
+#define __NEED_pthread_condattr_t
+#define __NEED_pthread_rwlockattr_t
+#define __NEED_pthread_barrierattr_t
+#define __NEED_pthread_mutex_t
+#define __NEED_pthread_cond_t
+#define __NEED_pthread_rwlock_t
+#define __NEED_pthread_barrier_t
+#define __NEED_pthread_spinlock_t
+#define __NEED_pthread_key_t
+#define __NEED_pthread_once_t
+#define __NEED_size_t
+
+#include <bits/alltypes.h>
+
+#include <sched.h>
+#include <time.h>
+
+#define PTHREAD_CREATE_JOINABLE 0
+#define PTHREAD_CREATE_DETACHED 1
+
+#define PTHREAD_MUTEX_NORMAL 0
+#define PTHREAD_MUTEX_DEFAULT 0
+#define PTHREAD_MUTEX_RECURSIVE 1
+#define PTHREAD_MUTEX_ERRORCHECK 2
+
+#define PTHREAD_MUTEX_STALLED 0
+#define PTHREAD_MUTEX_ROBUST 1
+
+#define PTHREAD_PRIO_NONE 0
+#define PTHREAD_PRIO_INHERIT 1
+#define PTHREAD_PRIO_PROTECT 2
+
+#define PTHREAD_INHERIT_SCHED 0
+#define PTHREAD_EXPLICIT_SCHED 1
+
+#define PTHREAD_SCOPE_SYSTEM 0
+#define PTHREAD_SCOPE_PROCESS 1
+
+#define PTHREAD_PROCESS_PRIVATE 0
+#define PTHREAD_PROCESS_SHARED 1
+
+
+#define PTHREAD_MUTEX_INITIALIZER {{{0}}}
+#define PTHREAD_RWLOCK_INITIALIZER {{{0}}}
+#define PTHREAD_COND_INITIALIZER {{{0}}}
+#define PTHREAD_ONCE_INIT 0
+
+
+#define PTHREAD_CANCEL_ENABLE 0
+#define PTHREAD_CANCEL_DISABLE 1
+#define PTHREAD_CANCEL_MASKED 2
+
+#define PTHREAD_CANCEL_DEFERRED 0
+#define PTHREAD_CANCEL_ASYNCHRONOUS 1
+
+#define PTHREAD_CANCELED ((void *)-1)
+
+
+#define PTHREAD_BARRIER_SERIAL_THREAD (-1)
+
+
+#define PTHREAD_NULL ((pthread_t)0)
+
+
+int pthread_create(pthread_t *__restrict, const pthread_attr_t *__restrict, void *(*)(void *), void *__restrict);
+int pthread_detach(pthread_t);
+_Noreturn void pthread_exit(void *);
+int pthread_join(pthread_t, void **);
+
+#ifdef __GNUC__
+__attribute__((const))
+#endif
+pthread_t pthread_self(void);
+
+int pthread_equal(pthread_t, pthread_t);
+#ifndef __cplusplus
+#define pthread_equal(x,y) ((x)==(y))
+#endif
+
+int pthread_setcancelstate(int, int *);
+int pthread_setcanceltype(int, int *);
+void pthread_testcancel(void);
+int pthread_cancel(pthread_t);
+
+int pthread_getschedparam(pthread_t, int *__restrict, struct sched_param *__restrict);
+int pthread_setschedparam(pthread_t, int, const struct sched_param *);
+int pthread_setschedprio(pthread_t, int);
+
+int pthread_once(pthread_once_t *, void (*)(void));
+
+int pthread_mutex_init(pthread_mutex_t *__restrict, const pthread_mutexattr_t *__restrict);
+int pthread_mutex_lock(pthread_mutex_t *);
+int pthread_mutex_unlock(pthread_mutex_t *);
+int pthread_mutex_trylock(pthread_mutex_t *);
+int pthread_mutex_timedlock(pthread_mutex_t *__restrict, const struct timespec *__restrict);
+int pthread_mutex_destroy(pthread_mutex_t *);
+int pthread_mutex_consistent(pthread_mutex_t *);
+
+int pthread_mutex_getprioceiling(const pthread_mutex_t *__restrict, int *__restrict);
+int pthread_mutex_setprioceiling(pthread_mutex_t *__restrict, int, int *__restrict);
+
+int pthread_cond_init(pthread_cond_t *__restrict, const pthread_condattr_t *__restrict);
+int pthread_cond_destroy(pthread_cond_t *);
+int pthread_cond_wait(pthread_cond_t *__restrict, pthread_mutex_t *__restrict);
+int pthread_cond_timedwait(pthread_cond_t *__restrict, pthread_mutex_t *__restrict, const struct timespec *__restrict);
+int pthread_cond_broadcast(pthread_cond_t *);
+int pthread_cond_signal(pthread_cond_t *);
+
+int pthread_rwlock_init(pthread_rwlock_t *__restrict, const pthread_rwlockattr_t *__restrict);
+int pthread_rwlock_destroy(pthread_rwlock_t *);
+int pthread_rwlock_rdlock(pthread_rwlock_t *);
+int pthread_rwlock_tryrdlock(pthread_rwlock_t *);
+int pthread_rwlock_timedrdlock(pthread_rwlock_t *__restrict, const struct timespec *__restrict);
+int pthread_rwlock_wrlock(pthread_rwlock_t *);
+int pthread_rwlock_trywrlock(pthread_rwlock_t *);
+int pthread_rwlock_timedwrlock(pthread_rwlock_t *__restrict, const struct timespec *__restrict);
+int pthread_rwlock_unlock(pthread_rwlock_t *);
+
+int pthread_spin_init(pthread_spinlock_t *, int);
+int pthread_spin_destroy(pthread_spinlock_t *);
+int pthread_spin_lock(pthread_spinlock_t *);
+int pthread_spin_trylock(pthread_spinlock_t *);
+int pthread_spin_unlock(pthread_spinlock_t *);
+
+int pthread_barrier_init(pthread_barrier_t *__restrict, const pthread_barrierattr_t *__restrict, unsigned);
+int pthread_barrier_destroy(pthread_barrier_t *);
+int pthread_barrier_wait(pthread_barrier_t *);
+
+int pthread_key_create(pthread_key_t *, void (*)(void *));
+int pthread_key_delete(pthread_key_t);
+void *pthread_getspecific(pthread_key_t);
+int pthread_setspecific(pthread_key_t, const void *);
+
+int pthread_attr_init(pthread_attr_t *);
+int pthread_attr_destroy(pthread_attr_t *);
+
+int pthread_attr_getguardsize(const pthread_attr_t *__restrict, size_t *__restrict);
+int pthread_attr_setguardsize(pthread_attr_t *, size_t);
+int pthread_attr_getstacksize(const pthread_attr_t *__restrict, size_t *__restrict);
+int pthread_attr_setstacksize(pthread_attr_t *, size_t);
+int pthread_attr_getdetachstate(const pthread_attr_t *, int *);
+int pthread_attr_setdetachstate(pthread_attr_t *, int);
+int pthread_attr_getstack(const pthread_attr_t *__restrict, void **__restrict, size_t *__restrict);
+int pthread_attr_setstack(pthread_attr_t *, void *, size_t);
+int pthread_attr_getscope(const pthread_attr_t *__restrict, int *__restrict);
+int pthread_attr_setscope(pthread_attr_t *, int);
+int pthread_attr_getschedpolicy(const pthread_attr_t *__restrict, int *__restrict);
+int pthread_attr_setschedpolicy(pthread_attr_t *, int);
+int pthread_attr_getschedparam(const pthread_attr_t *__restrict, struct sched_param *__restrict);
+int pthread_attr_setschedparam(pthread_attr_t *__restrict, const struct sched_param *__restrict);
+int pthread_attr_getinheritsched(const pthread_attr_t *__restrict, int *__restrict);
+int pthread_attr_setinheritsched(pthread_attr_t *, int);
+
+int pthread_mutexattr_destroy(pthread_mutexattr_t *);
+int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *__restrict, int *__restrict);
+int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *__restrict, int *__restrict);
+int pthread_mutexattr_getpshared(const pthread_mutexattr_t *__restrict, int *__restrict);
+int pthread_mutexattr_getrobust(const pthread_mutexattr_t *__restrict, int *__restrict);
+int pthread_mutexattr_gettype(const pthread_mutexattr_t *__restrict, int *__restrict);
+int pthread_mutexattr_init(pthread_mutexattr_t *);
+int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *, int);
+int pthread_mutexattr_setprotocol(pthread_mutexattr_t *, int);
+int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int);
+int pthread_mutexattr_setrobust(pthread_mutexattr_t *, int);
+int pthread_mutexattr_settype(pthread_mutexattr_t *, int);
+
+int pthread_condattr_init(pthread_condattr_t *);
+int pthread_condattr_destroy(pthread_condattr_t *);
+int pthread_condattr_setclock(pthread_condattr_t *, clockid_t);
+int pthread_condattr_setpshared(pthread_condattr_t *, int);
+int pthread_condattr_getclock(const pthread_condattr_t *__restrict, clockid_t *__restrict);
+int pthread_condattr_getpshared(const pthread_condattr_t *__restrict, int *__restrict);
+
+int pthread_rwlockattr_init(pthread_rwlockattr_t *);
+int pthread_rwlockattr_destroy(pthread_rwlockattr_t *);
+int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, int);
+int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *__restrict, int *__restrict);
+
+int pthread_barrierattr_destroy(pthread_barrierattr_t *);
+int pthread_barrierattr_getpshared(const pthread_barrierattr_t *__restrict, int *__restrict);
+int pthread_barrierattr_init(pthread_barrierattr_t *);
+int pthread_barrierattr_setpshared(pthread_barrierattr_t *, int);
+
+int pthread_atfork(void (*)(void), void (*)(void), void (*)(void));
+
+int pthread_getconcurrency(void);
+int pthread_setconcurrency(int);
+
+int pthread_getcpuclockid(pthread_t, clockid_t *);
+
+struct __ptcb {
+	void (*__f)(void *);
+	void *__x;
+	struct __ptcb *__next;
+};
+
+void _pthread_cleanup_push(struct __ptcb *, void (*)(void *), void *);
+void _pthread_cleanup_pop(struct __ptcb *, int);
+
+#define pthread_cleanup_push(f, x) do { struct __ptcb __cb; _pthread_cleanup_push(&__cb, f, x);
+#define pthread_cleanup_pop(r) _pthread_cleanup_pop(&__cb, (r)); } while(0)
+
+#ifdef _GNU_SOURCE
+struct cpu_set_t;
+int pthread_getaffinity_np(pthread_t, size_t, struct cpu_set_t *);
+int pthread_setaffinity_np(pthread_t, size_t, const struct cpu_set_t *);
+int pthread_getattr_np(pthread_t, pthread_attr_t *);
+int pthread_setname_np(pthread_t, const char *);
+int pthread_getname_np(pthread_t, char *, size_t);
+int pthread_getattr_default_np(pthread_attr_t *);
+int pthread_setattr_default_np(const pthread_attr_t *);
+int pthread_tryjoin_np(pthread_t, void **);
+int pthread_timedjoin_np(pthread_t, void **, const struct timespec *);
+#endif
+
+#if _REDIR_TIME64
+__REDIR(pthread_mutex_timedlock, __pthread_mutex_timedlock_time64);
+__REDIR(pthread_cond_timedwait, __pthread_cond_timedwait_time64);
+__REDIR(pthread_rwlock_timedrdlock, __pthread_rwlock_timedrdlock_time64);
+__REDIR(pthread_rwlock_timedwrlock, __pthread_rwlock_timedwrlock_time64);
+#ifdef _GNU_SOURCE
+__REDIR(pthread_timedjoin_np, __pthread_timedjoin_np_time64);
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/pty.h b/i686-linux-musl/include/pty.h
new file mode 100644
index 0000000..db63853
--- /dev/null
+++ b/i686-linux-musl/include/pty.h
@@ -0,0 +1,18 @@
+#ifndef	_PTY_H
+#define	_PTY_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <termios.h>
+#include <sys/ioctl.h>
+
+int openpty(int *, int *, char *, const struct termios *, const struct winsize *);
+int forkpty(int *, char *, const struct termios *, const struct winsize *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/pwd.h b/i686-linux-musl/include/pwd.h
new file mode 100644
index 0000000..4f470b5
--- /dev/null
+++ b/i686-linux-musl/include/pwd.h
@@ -0,0 +1,50 @@
+#ifndef _PWD_H
+#define _PWD_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_size_t
+#define __NEED_uid_t
+#define __NEED_gid_t
+
+#ifdef _GNU_SOURCE
+#define __NEED_FILE
+#endif
+
+#include <bits/alltypes.h>
+
+struct passwd {
+	char *pw_name;
+	char *pw_passwd;
+	uid_t pw_uid;
+	gid_t pw_gid;
+	char *pw_gecos;
+	char *pw_dir;
+	char *pw_shell;
+};
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+void setpwent (void);
+void endpwent (void);
+struct passwd *getpwent (void);
+#endif
+
+struct passwd *getpwuid (uid_t);
+struct passwd *getpwnam (const char *);
+int getpwuid_r (uid_t, struct passwd *, char *, size_t, struct passwd **);
+int getpwnam_r (const char *, struct passwd *, char *, size_t, struct passwd **);
+
+#ifdef _GNU_SOURCE
+struct passwd *fgetpwent(FILE *);
+int putpwent(const struct passwd *, FILE *);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/rdma/bnxt_re-abi.h b/i686-linux-musl/include/rdma/bnxt_re-abi.h
new file mode 100644
index 0000000..62ba685
--- /dev/null
+++ b/i686-linux-musl/include/rdma/bnxt_re-abi.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 __BNXT_RE_UVERBS_ABI_H__
+#define __BNXT_RE_UVERBS_ABI_H__
+#include <linux/types.h>
+#define BNXT_RE_ABI_VERSION 1
+#define BNXT_RE_CHIP_ID0_CHIP_NUM_SFT 0x00
+#define BNXT_RE_CHIP_ID0_CHIP_REV_SFT 0x10
+#define BNXT_RE_CHIP_ID0_CHIP_MET_SFT 0x18
+enum {
+  BNXT_RE_UCNTX_CMASK_HAVE_CCTX = 0x1ULL,
+  BNXT_RE_UCNTX_CMASK_HAVE_MODE = 0x02ULL,
+};
+enum bnxt_re_wqe_mode {
+  BNXT_QPLIB_WQE_MODE_STATIC = 0x00,
+  BNXT_QPLIB_WQE_MODE_VARIABLE = 0x01,
+  BNXT_QPLIB_WQE_MODE_INVALID = 0x02,
+};
+struct bnxt_re_uctx_resp {
+  __u32 dev_id;
+  __u32 max_qp;
+  __u32 pg_size;
+  __u32 cqe_sz;
+  __u32 max_cqd;
+  __u32 rsvd;
+  __aligned_u64 comp_mask;
+  __u32 chip_id0;
+  __u32 chip_id1;
+  __u32 mode;
+  __u32 rsvd1;
+};
+struct bnxt_re_pd_resp {
+  __u32 pdid;
+  __u32 dpi;
+  __u64 dbr;
+} __attribute__((packed, aligned(4)));
+struct bnxt_re_cq_req {
+  __aligned_u64 cq_va;
+  __aligned_u64 cq_handle;
+};
+struct bnxt_re_cq_resp {
+  __u32 cqid;
+  __u32 tail;
+  __u32 phase;
+  __u32 rsvd;
+};
+struct bnxt_re_qp_req {
+  __aligned_u64 qpsva;
+  __aligned_u64 qprva;
+  __aligned_u64 qp_handle;
+};
+struct bnxt_re_qp_resp {
+  __u32 qpid;
+  __u32 rsvd;
+};
+struct bnxt_re_srq_req {
+  __aligned_u64 srqva;
+  __aligned_u64 srq_handle;
+};
+struct bnxt_re_srq_resp {
+  __u32 srqid;
+};
+enum bnxt_re_shpg_offt {
+  BNXT_RE_BEG_RESV_OFFT = 0x00,
+  BNXT_RE_AVID_OFFT = 0x10,
+  BNXT_RE_AVID_SIZE = 0x04,
+  BNXT_RE_END_RESV_OFFT = 0xFF0
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/cxgb4-abi.h b/i686-linux-musl/include/rdma/cxgb4-abi.h
new file mode 100644
index 0000000..5433ce6
--- /dev/null
+++ b/i686-linux-musl/include/rdma/cxgb4-abi.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 CXGB4_ABI_USER_H
+#define CXGB4_ABI_USER_H
+#include <linux/types.h>
+#define C4IW_UVERBS_ABI_VERSION 3
+enum {
+  C4IW_64B_CQE = (1 << 0)
+};
+struct c4iw_create_cq {
+  __u32 flags;
+  __u32 reserved;
+};
+struct c4iw_create_cq_resp {
+  __aligned_u64 key;
+  __aligned_u64 gts_key;
+  __aligned_u64 memsize;
+  __u32 cqid;
+  __u32 size;
+  __u32 qid_mask;
+  __u32 flags;
+};
+enum {
+  C4IW_QPF_ONCHIP = (1 << 0),
+  C4IW_QPF_WRITE_W_IMM = (1 << 1)
+};
+struct c4iw_create_qp_resp {
+  __aligned_u64 ma_sync_key;
+  __aligned_u64 sq_key;
+  __aligned_u64 rq_key;
+  __aligned_u64 sq_db_gts_key;
+  __aligned_u64 rq_db_gts_key;
+  __aligned_u64 sq_memsize;
+  __aligned_u64 rq_memsize;
+  __u32 sqid;
+  __u32 rqid;
+  __u32 sq_size;
+  __u32 rq_size;
+  __u32 qid_mask;
+  __u32 flags;
+};
+struct c4iw_create_srq_resp {
+  __aligned_u64 srq_key;
+  __aligned_u64 srq_db_gts_key;
+  __aligned_u64 srq_memsize;
+  __u32 srqid;
+  __u32 srq_size;
+  __u32 rqt_abs_idx;
+  __u32 qid_mask;
+  __u32 flags;
+  __u32 reserved;
+};
+enum {
+  T4_SRQ_LIMIT_SUPPORT = 1 << 0,
+};
+struct c4iw_alloc_ucontext_resp {
+  __aligned_u64 status_page_key;
+  __u32 status_page_size;
+  __u32 reserved;
+};
+struct c4iw_alloc_pd_resp {
+  __u32 pdid;
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/efa-abi.h b/i686-linux-musl/include/rdma/efa-abi.h
new file mode 100644
index 0000000..4b6842b
--- /dev/null
+++ b/i686-linux-musl/include/rdma/efa-abi.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 EFA_ABI_USER_H
+#define EFA_ABI_USER_H
+#include <linux/types.h>
+#define EFA_UVERBS_ABI_VERSION 1
+enum {
+  EFA_ALLOC_UCONTEXT_CMD_COMP_TX_BATCH = 1 << 0,
+  EFA_ALLOC_UCONTEXT_CMD_COMP_MIN_SQ_WR = 1 << 1,
+};
+struct efa_ibv_alloc_ucontext_cmd {
+  __u32 comp_mask;
+  __u8 reserved_20[4];
+};
+enum efa_ibv_user_cmds_supp_udata {
+  EFA_USER_CMDS_SUPP_UDATA_QUERY_DEVICE = 1 << 0,
+  EFA_USER_CMDS_SUPP_UDATA_CREATE_AH = 1 << 1,
+};
+struct efa_ibv_alloc_ucontext_resp {
+  __u32 comp_mask;
+  __u32 cmds_supp_udata_mask;
+  __u16 sub_cqs_per_cq;
+  __u16 inline_buf_size;
+  __u32 max_llq_size;
+  __u16 max_tx_batch;
+  __u16 min_sq_wr;
+  __u8 reserved_a0[4];
+};
+struct efa_ibv_alloc_pd_resp {
+  __u32 comp_mask;
+  __u16 pdn;
+  __u8 reserved_30[2];
+};
+enum {
+  EFA_CREATE_CQ_WITH_COMPLETION_CHANNEL = 1 << 0,
+};
+struct efa_ibv_create_cq {
+  __u32 comp_mask;
+  __u32 cq_entry_size;
+  __u16 num_sub_cqs;
+  __u8 flags;
+  __u8 reserved_58[5];
+};
+enum {
+  EFA_CREATE_CQ_RESP_DB_OFF = 1 << 0,
+};
+struct efa_ibv_create_cq_resp {
+  __u32 comp_mask;
+  __u8 reserved_20[4];
+  __aligned_u64 q_mmap_key;
+  __aligned_u64 q_mmap_size;
+  __u16 cq_idx;
+  __u8 reserved_d0[2];
+  __u32 db_off;
+  __aligned_u64 db_mmap_key;
+};
+enum {
+  EFA_QP_DRIVER_TYPE_SRD = 0,
+};
+struct efa_ibv_create_qp {
+  __u32 comp_mask;
+  __u32 rq_ring_size;
+  __u32 sq_ring_size;
+  __u32 driver_qp_type;
+};
+struct efa_ibv_create_qp_resp {
+  __u32 comp_mask;
+  __u32 rq_db_offset;
+  __u32 sq_db_offset;
+  __u32 llq_desc_offset;
+  __aligned_u64 rq_mmap_key;
+  __aligned_u64 rq_mmap_size;
+  __aligned_u64 rq_db_mmap_key;
+  __aligned_u64 sq_db_mmap_key;
+  __aligned_u64 llq_desc_mmap_key;
+  __u16 send_sub_cq_idx;
+  __u16 recv_sub_cq_idx;
+  __u8 reserved_1e0[4];
+};
+struct efa_ibv_create_ah_resp {
+  __u32 comp_mask;
+  __u16 efa_address_handle;
+  __u8 reserved_30[2];
+};
+enum {
+  EFA_QUERY_DEVICE_CAPS_RDMA_READ = 1 << 0,
+  EFA_QUERY_DEVICE_CAPS_RNR_RETRY = 1 << 1,
+  EFA_QUERY_DEVICE_CAPS_CQ_NOTIFICATIONS = 1 << 2,
+};
+struct efa_ibv_ex_query_device_resp {
+  __u32 comp_mask;
+  __u32 max_sq_wr;
+  __u32 max_rq_wr;
+  __u16 max_sq_sge;
+  __u16 max_rq_sge;
+  __u32 max_rdma_size;
+  __u32 device_caps;
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/hfi/hfi1_ioctl.h b/i686-linux-musl/include/rdma/hfi/hfi1_ioctl.h
new file mode 100644
index 0000000..a430650
--- /dev/null
+++ b/i686-linux-musl/include/rdma/hfi/hfi1_ioctl.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__HFI1_IOCTL_H
+#define _LINUX__HFI1_IOCTL_H
+#include <linux/types.h>
+struct hfi1_user_info {
+  __u32 userversion;
+  __u32 pad;
+  __u16 subctxt_cnt;
+  __u16 subctxt_id;
+  __u8 uuid[16];
+};
+struct hfi1_ctxt_info {
+  __aligned_u64 runtime_flags;
+  __u32 rcvegr_size;
+  __u16 num_active;
+  __u16 unit;
+  __u16 ctxt;
+  __u16 subctxt;
+  __u16 rcvtids;
+  __u16 credits;
+  __u16 numa_node;
+  __u16 rec_cpu;
+  __u16 send_ctxt;
+  __u16 egrtids;
+  __u16 rcvhdrq_cnt;
+  __u16 rcvhdrq_entsize;
+  __u16 sdma_ring_size;
+};
+struct hfi1_tid_info {
+  __aligned_u64 vaddr;
+  __aligned_u64 tidlist;
+  __u32 tidcnt;
+  __u32 length;
+};
+struct hfi1_base_info {
+  __u32 hw_version;
+  __u32 sw_version;
+  __u16 jkey;
+  __u16 padding1;
+  __u32 bthqp;
+  __aligned_u64 sc_credits_addr;
+  __aligned_u64 pio_bufbase_sop;
+  __aligned_u64 pio_bufbase;
+  __aligned_u64 rcvhdr_bufbase;
+  __aligned_u64 rcvegr_bufbase;
+  __aligned_u64 sdma_comp_bufbase;
+  __aligned_u64 user_regbase;
+  __aligned_u64 events_bufbase;
+  __aligned_u64 status_bufbase;
+  __aligned_u64 rcvhdrtail_base;
+  __aligned_u64 subctxt_uregbase;
+  __aligned_u64 subctxt_rcvegrbuf;
+  __aligned_u64 subctxt_rcvhdrbuf;
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/hfi/hfi1_user.h b/i686-linux-musl/include/rdma/hfi/hfi1_user.h
new file mode 100644
index 0000000..3352907
--- /dev/null
+++ b/i686-linux-musl/include/rdma/hfi/hfi1_user.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__HFI1_USER_H
+#define _LINUX__HFI1_USER_H
+#include <linux/types.h>
+#include <rdma/rdma_user_ioctl.h>
+#define HFI1_USER_SWMAJOR 6
+#define HFI1_USER_SWMINOR 3
+#define HFI1_SWMAJOR_SHIFT 16
+#define HFI1_CAP_DMA_RTAIL (1UL << 0)
+#define HFI1_CAP_SDMA (1UL << 1)
+#define HFI1_CAP_SDMA_AHG (1UL << 2)
+#define HFI1_CAP_EXTENDED_PSN (1UL << 3)
+#define HFI1_CAP_HDRSUPP (1UL << 4)
+#define HFI1_CAP_TID_RDMA (1UL << 5)
+#define HFI1_CAP_USE_SDMA_HEAD (1UL << 6)
+#define HFI1_CAP_MULTI_PKT_EGR (1UL << 7)
+#define HFI1_CAP_NODROP_RHQ_FULL (1UL << 8)
+#define HFI1_CAP_NODROP_EGR_FULL (1UL << 9)
+#define HFI1_CAP_TID_UNMAP (1UL << 10)
+#define HFI1_CAP_PRINT_UNIMPL (1UL << 11)
+#define HFI1_CAP_ALLOW_PERM_JKEY (1UL << 12)
+#define HFI1_CAP_NO_INTEGRITY (1UL << 13)
+#define HFI1_CAP_PKEY_CHECK (1UL << 14)
+#define HFI1_CAP_STATIC_RATE_CTRL (1UL << 15)
+#define HFI1_CAP_OPFN (1UL << 16)
+#define HFI1_CAP_SDMA_HEAD_CHECK (1UL << 17)
+#define HFI1_CAP_EARLY_CREDIT_RETURN (1UL << 18)
+#define HFI1_CAP_AIP (1UL << 19)
+#define HFI1_RCVHDR_ENTSIZE_2 (1UL << 0)
+#define HFI1_RCVHDR_ENTSIZE_16 (1UL << 1)
+#define HFI1_RCVDHR_ENTSIZE_32 (1UL << 2)
+#define _HFI1_EVENT_FROZEN_BIT 0
+#define _HFI1_EVENT_LINKDOWN_BIT 1
+#define _HFI1_EVENT_LID_CHANGE_BIT 2
+#define _HFI1_EVENT_LMC_CHANGE_BIT 3
+#define _HFI1_EVENT_SL2VL_CHANGE_BIT 4
+#define _HFI1_EVENT_TID_MMU_NOTIFY_BIT 5
+#define _HFI1_MAX_EVENT_BIT _HFI1_EVENT_TID_MMU_NOTIFY_BIT
+#define HFI1_EVENT_FROZEN (1UL << _HFI1_EVENT_FROZEN_BIT)
+#define HFI1_EVENT_LINKDOWN (1UL << _HFI1_EVENT_LINKDOWN_BIT)
+#define HFI1_EVENT_LID_CHANGE (1UL << _HFI1_EVENT_LID_CHANGE_BIT)
+#define HFI1_EVENT_LMC_CHANGE (1UL << _HFI1_EVENT_LMC_CHANGE_BIT)
+#define HFI1_EVENT_SL2VL_CHANGE (1UL << _HFI1_EVENT_SL2VL_CHANGE_BIT)
+#define HFI1_EVENT_TID_MMU_NOTIFY (1UL << _HFI1_EVENT_TID_MMU_NOTIFY_BIT)
+#define HFI1_STATUS_INITTED 0x1
+#define HFI1_STATUS_CHIP_PRESENT 0x20
+#define HFI1_STATUS_IB_READY 0x40
+#define HFI1_STATUS_IB_CONF 0x80
+#define HFI1_STATUS_HWERROR 0x200
+#define HFI1_MAX_SHARED_CTXTS 8
+#define HFI1_POLL_TYPE_ANYRCV 0x0
+#define HFI1_POLL_TYPE_URGENT 0x1
+enum hfi1_sdma_comp_state {
+  FREE = 0,
+  QUEUED,
+  COMPLETE,
+  ERROR
+};
+struct hfi1_sdma_comp_entry {
+  __u32 status;
+  __u32 errcode;
+};
+struct hfi1_status {
+  __aligned_u64 dev;
+  __aligned_u64 port;
+  char freezemsg[0];
+};
+enum sdma_req_opcode {
+  EXPECTED = 0,
+  EAGER
+};
+#define HFI1_SDMA_REQ_VERSION_MASK 0xF
+#define HFI1_SDMA_REQ_VERSION_SHIFT 0x0
+#define HFI1_SDMA_REQ_OPCODE_MASK 0xF
+#define HFI1_SDMA_REQ_OPCODE_SHIFT 0x4
+#define HFI1_SDMA_REQ_IOVCNT_MASK 0xFF
+#define HFI1_SDMA_REQ_IOVCNT_SHIFT 0x8
+struct sdma_req_info {
+  __u16 ctrl;
+  __u16 npkts;
+  __u16 fragsize;
+  __u16 comp_idx;
+} __attribute__((__packed__));
+struct hfi1_kdeth_header {
+  __le32 ver_tid_offset;
+  __le16 jkey;
+  __le16 hcrc;
+  __le32 swdata[7];
+} __attribute__((__packed__));
+struct hfi1_pkt_header {
+  __le16 pbc[4];
+  __be16 lrh[4];
+  __be32 bth[3];
+  struct hfi1_kdeth_header kdeth;
+} __attribute__((__packed__));
+enum hfi1_ureg {
+  ur_rcvhdrtail = 0,
+  ur_rcvhdrhead = 1,
+  ur_rcvegrindextail = 2,
+  ur_rcvegrindexhead = 3,
+  ur_rcvegroffsettail = 4,
+  ur_maxreg,
+  ur_rcvtidflowtable = 256
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/hns-abi.h b/i686-linux-musl/include/rdma/hns-abi.h
new file mode 100644
index 0000000..40ec2ec
--- /dev/null
+++ b/i686-linux-musl/include/rdma/hns-abi.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 HNS_ABI_USER_H
+#define HNS_ABI_USER_H
+#include <linux/types.h>
+struct hns_roce_ib_create_cq {
+  __aligned_u64 buf_addr;
+  __aligned_u64 db_addr;
+  __u32 cqe_size;
+  __u32 reserved;
+};
+enum hns_roce_cq_cap_flags {
+  HNS_ROCE_CQ_FLAG_RECORD_DB = 1 << 0,
+};
+struct hns_roce_ib_create_cq_resp {
+  __aligned_u64 cqn;
+  __aligned_u64 cap_flags;
+};
+struct hns_roce_ib_create_srq {
+  __aligned_u64 buf_addr;
+  __aligned_u64 db_addr;
+  __aligned_u64 que_addr;
+};
+struct hns_roce_ib_create_srq_resp {
+  __u32 srqn;
+  __u32 reserved;
+};
+struct hns_roce_ib_create_qp {
+  __aligned_u64 buf_addr;
+  __aligned_u64 db_addr;
+  __u8 log_sq_bb_count;
+  __u8 log_sq_stride;
+  __u8 sq_no_prefetch;
+  __u8 reserved[5];
+  __aligned_u64 sdb_addr;
+};
+enum hns_roce_qp_cap_flags {
+  HNS_ROCE_QP_CAP_RQ_RECORD_DB = 1 << 0,
+  HNS_ROCE_QP_CAP_SQ_RECORD_DB = 1 << 1,
+  HNS_ROCE_QP_CAP_OWNER_DB = 1 << 2,
+};
+struct hns_roce_ib_create_qp_resp {
+  __aligned_u64 cap_flags;
+};
+struct hns_roce_ib_alloc_ucontext_resp {
+  __u32 qp_tab_size;
+  __u32 cqe_size;
+  __u32 srq_tab_size;
+  __u32 reserved;
+};
+struct hns_roce_ib_alloc_pd_resp {
+  __u32 pdn;
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/ib_user_ioctl_cmds.h b/i686-linux-musl/include/rdma/ib_user_ioctl_cmds.h
new file mode 100644
index 0000000..f96b4e8
--- /dev/null
+++ b/i686-linux-musl/include/rdma/ib_user_ioctl_cmds.h
@@ -0,0 +1,313 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef IB_USER_IOCTL_CMDS_H
+#define IB_USER_IOCTL_CMDS_H
+#define UVERBS_ID_NS_MASK 0xF000
+#define UVERBS_ID_NS_SHIFT 12
+#define UVERBS_UDATA_DRIVER_DATA_NS 1
+#define UVERBS_UDATA_DRIVER_DATA_FLAG (1UL << UVERBS_ID_NS_SHIFT)
+enum uverbs_default_objects {
+  UVERBS_OBJECT_DEVICE,
+  UVERBS_OBJECT_PD,
+  UVERBS_OBJECT_COMP_CHANNEL,
+  UVERBS_OBJECT_CQ,
+  UVERBS_OBJECT_QP,
+  UVERBS_OBJECT_SRQ,
+  UVERBS_OBJECT_AH,
+  UVERBS_OBJECT_MR,
+  UVERBS_OBJECT_MW,
+  UVERBS_OBJECT_FLOW,
+  UVERBS_OBJECT_XRCD,
+  UVERBS_OBJECT_RWQ_IND_TBL,
+  UVERBS_OBJECT_WQ,
+  UVERBS_OBJECT_FLOW_ACTION,
+  UVERBS_OBJECT_DM,
+  UVERBS_OBJECT_COUNTERS,
+  UVERBS_OBJECT_ASYNC_EVENT,
+};
+enum {
+  UVERBS_ATTR_UHW_IN = UVERBS_UDATA_DRIVER_DATA_FLAG,
+  UVERBS_ATTR_UHW_OUT,
+};
+enum uverbs_methods_device {
+  UVERBS_METHOD_INVOKE_WRITE,
+  UVERBS_METHOD_INFO_HANDLES,
+  UVERBS_METHOD_QUERY_PORT,
+  UVERBS_METHOD_GET_CONTEXT,
+  UVERBS_METHOD_QUERY_CONTEXT,
+  UVERBS_METHOD_QUERY_GID_TABLE,
+  UVERBS_METHOD_QUERY_GID_ENTRY,
+};
+enum uverbs_attrs_invoke_write_cmd_attr_ids {
+  UVERBS_ATTR_CORE_IN,
+  UVERBS_ATTR_CORE_OUT,
+  UVERBS_ATTR_WRITE_CMD,
+};
+enum uverbs_attrs_query_port_cmd_attr_ids {
+  UVERBS_ATTR_QUERY_PORT_PORT_NUM,
+  UVERBS_ATTR_QUERY_PORT_RESP,
+};
+enum uverbs_attrs_get_context_attr_ids {
+  UVERBS_ATTR_GET_CONTEXT_NUM_COMP_VECTORS,
+  UVERBS_ATTR_GET_CONTEXT_CORE_SUPPORT,
+};
+enum uverbs_attrs_query_context_attr_ids {
+  UVERBS_ATTR_QUERY_CONTEXT_NUM_COMP_VECTORS,
+  UVERBS_ATTR_QUERY_CONTEXT_CORE_SUPPORT,
+};
+enum uverbs_attrs_create_cq_cmd_attr_ids {
+  UVERBS_ATTR_CREATE_CQ_HANDLE,
+  UVERBS_ATTR_CREATE_CQ_CQE,
+  UVERBS_ATTR_CREATE_CQ_USER_HANDLE,
+  UVERBS_ATTR_CREATE_CQ_COMP_CHANNEL,
+  UVERBS_ATTR_CREATE_CQ_COMP_VECTOR,
+  UVERBS_ATTR_CREATE_CQ_FLAGS,
+  UVERBS_ATTR_CREATE_CQ_RESP_CQE,
+  UVERBS_ATTR_CREATE_CQ_EVENT_FD,
+};
+enum uverbs_attrs_destroy_cq_cmd_attr_ids {
+  UVERBS_ATTR_DESTROY_CQ_HANDLE,
+  UVERBS_ATTR_DESTROY_CQ_RESP,
+};
+enum uverbs_attrs_create_flow_action_esp {
+  UVERBS_ATTR_CREATE_FLOW_ACTION_ESP_HANDLE,
+  UVERBS_ATTR_FLOW_ACTION_ESP_ATTRS,
+  UVERBS_ATTR_FLOW_ACTION_ESP_ESN,
+  UVERBS_ATTR_FLOW_ACTION_ESP_KEYMAT,
+  UVERBS_ATTR_FLOW_ACTION_ESP_REPLAY,
+  UVERBS_ATTR_FLOW_ACTION_ESP_ENCAP,
+};
+enum uverbs_attrs_modify_flow_action_esp {
+  UVERBS_ATTR_MODIFY_FLOW_ACTION_ESP_HANDLE = UVERBS_ATTR_CREATE_FLOW_ACTION_ESP_HANDLE,
+};
+enum uverbs_attrs_destroy_flow_action_esp {
+  UVERBS_ATTR_DESTROY_FLOW_ACTION_HANDLE,
+};
+enum uverbs_attrs_create_qp_cmd_attr_ids {
+  UVERBS_ATTR_CREATE_QP_HANDLE,
+  UVERBS_ATTR_CREATE_QP_XRCD_HANDLE,
+  UVERBS_ATTR_CREATE_QP_PD_HANDLE,
+  UVERBS_ATTR_CREATE_QP_SRQ_HANDLE,
+  UVERBS_ATTR_CREATE_QP_SEND_CQ_HANDLE,
+  UVERBS_ATTR_CREATE_QP_RECV_CQ_HANDLE,
+  UVERBS_ATTR_CREATE_QP_IND_TABLE_HANDLE,
+  UVERBS_ATTR_CREATE_QP_USER_HANDLE,
+  UVERBS_ATTR_CREATE_QP_CAP,
+  UVERBS_ATTR_CREATE_QP_TYPE,
+  UVERBS_ATTR_CREATE_QP_FLAGS,
+  UVERBS_ATTR_CREATE_QP_SOURCE_QPN,
+  UVERBS_ATTR_CREATE_QP_EVENT_FD,
+  UVERBS_ATTR_CREATE_QP_RESP_CAP,
+  UVERBS_ATTR_CREATE_QP_RESP_QP_NUM,
+};
+enum uverbs_attrs_destroy_qp_cmd_attr_ids {
+  UVERBS_ATTR_DESTROY_QP_HANDLE,
+  UVERBS_ATTR_DESTROY_QP_RESP,
+};
+enum uverbs_methods_qp {
+  UVERBS_METHOD_QP_CREATE,
+  UVERBS_METHOD_QP_DESTROY,
+};
+enum uverbs_attrs_create_srq_cmd_attr_ids {
+  UVERBS_ATTR_CREATE_SRQ_HANDLE,
+  UVERBS_ATTR_CREATE_SRQ_PD_HANDLE,
+  UVERBS_ATTR_CREATE_SRQ_XRCD_HANDLE,
+  UVERBS_ATTR_CREATE_SRQ_CQ_HANDLE,
+  UVERBS_ATTR_CREATE_SRQ_USER_HANDLE,
+  UVERBS_ATTR_CREATE_SRQ_MAX_WR,
+  UVERBS_ATTR_CREATE_SRQ_MAX_SGE,
+  UVERBS_ATTR_CREATE_SRQ_LIMIT,
+  UVERBS_ATTR_CREATE_SRQ_MAX_NUM_TAGS,
+  UVERBS_ATTR_CREATE_SRQ_TYPE,
+  UVERBS_ATTR_CREATE_SRQ_EVENT_FD,
+  UVERBS_ATTR_CREATE_SRQ_RESP_MAX_WR,
+  UVERBS_ATTR_CREATE_SRQ_RESP_MAX_SGE,
+  UVERBS_ATTR_CREATE_SRQ_RESP_SRQ_NUM,
+};
+enum uverbs_attrs_destroy_srq_cmd_attr_ids {
+  UVERBS_ATTR_DESTROY_SRQ_HANDLE,
+  UVERBS_ATTR_DESTROY_SRQ_RESP,
+};
+enum uverbs_methods_srq {
+  UVERBS_METHOD_SRQ_CREATE,
+  UVERBS_METHOD_SRQ_DESTROY,
+};
+enum uverbs_methods_cq {
+  UVERBS_METHOD_CQ_CREATE,
+  UVERBS_METHOD_CQ_DESTROY,
+};
+enum uverbs_attrs_create_wq_cmd_attr_ids {
+  UVERBS_ATTR_CREATE_WQ_HANDLE,
+  UVERBS_ATTR_CREATE_WQ_PD_HANDLE,
+  UVERBS_ATTR_CREATE_WQ_CQ_HANDLE,
+  UVERBS_ATTR_CREATE_WQ_USER_HANDLE,
+  UVERBS_ATTR_CREATE_WQ_TYPE,
+  UVERBS_ATTR_CREATE_WQ_EVENT_FD,
+  UVERBS_ATTR_CREATE_WQ_MAX_WR,
+  UVERBS_ATTR_CREATE_WQ_MAX_SGE,
+  UVERBS_ATTR_CREATE_WQ_FLAGS,
+  UVERBS_ATTR_CREATE_WQ_RESP_MAX_WR,
+  UVERBS_ATTR_CREATE_WQ_RESP_MAX_SGE,
+  UVERBS_ATTR_CREATE_WQ_RESP_WQ_NUM,
+};
+enum uverbs_attrs_destroy_wq_cmd_attr_ids {
+  UVERBS_ATTR_DESTROY_WQ_HANDLE,
+  UVERBS_ATTR_DESTROY_WQ_RESP,
+};
+enum uverbs_methods_wq {
+  UVERBS_METHOD_WQ_CREATE,
+  UVERBS_METHOD_WQ_DESTROY,
+};
+enum uverbs_methods_actions_flow_action_ops {
+  UVERBS_METHOD_FLOW_ACTION_ESP_CREATE,
+  UVERBS_METHOD_FLOW_ACTION_DESTROY,
+  UVERBS_METHOD_FLOW_ACTION_ESP_MODIFY,
+};
+enum uverbs_attrs_alloc_dm_cmd_attr_ids {
+  UVERBS_ATTR_ALLOC_DM_HANDLE,
+  UVERBS_ATTR_ALLOC_DM_LENGTH,
+  UVERBS_ATTR_ALLOC_DM_ALIGNMENT,
+};
+enum uverbs_attrs_free_dm_cmd_attr_ids {
+  UVERBS_ATTR_FREE_DM_HANDLE,
+};
+enum uverbs_methods_dm {
+  UVERBS_METHOD_DM_ALLOC,
+  UVERBS_METHOD_DM_FREE,
+};
+enum uverbs_attrs_reg_dm_mr_cmd_attr_ids {
+  UVERBS_ATTR_REG_DM_MR_HANDLE,
+  UVERBS_ATTR_REG_DM_MR_OFFSET,
+  UVERBS_ATTR_REG_DM_MR_LENGTH,
+  UVERBS_ATTR_REG_DM_MR_PD_HANDLE,
+  UVERBS_ATTR_REG_DM_MR_ACCESS_FLAGS,
+  UVERBS_ATTR_REG_DM_MR_DM_HANDLE,
+  UVERBS_ATTR_REG_DM_MR_RESP_LKEY,
+  UVERBS_ATTR_REG_DM_MR_RESP_RKEY,
+};
+enum uverbs_methods_mr {
+  UVERBS_METHOD_DM_MR_REG,
+  UVERBS_METHOD_MR_DESTROY,
+  UVERBS_METHOD_ADVISE_MR,
+  UVERBS_METHOD_QUERY_MR,
+  UVERBS_METHOD_REG_DMABUF_MR,
+};
+enum uverbs_attrs_mr_destroy_ids {
+  UVERBS_ATTR_DESTROY_MR_HANDLE,
+};
+enum uverbs_attrs_advise_mr_cmd_attr_ids {
+  UVERBS_ATTR_ADVISE_MR_PD_HANDLE,
+  UVERBS_ATTR_ADVISE_MR_ADVICE,
+  UVERBS_ATTR_ADVISE_MR_FLAGS,
+  UVERBS_ATTR_ADVISE_MR_SGE_LIST,
+};
+enum uverbs_attrs_query_mr_cmd_attr_ids {
+  UVERBS_ATTR_QUERY_MR_HANDLE,
+  UVERBS_ATTR_QUERY_MR_RESP_LKEY,
+  UVERBS_ATTR_QUERY_MR_RESP_RKEY,
+  UVERBS_ATTR_QUERY_MR_RESP_LENGTH,
+  UVERBS_ATTR_QUERY_MR_RESP_IOVA,
+};
+enum uverbs_attrs_reg_dmabuf_mr_cmd_attr_ids {
+  UVERBS_ATTR_REG_DMABUF_MR_HANDLE,
+  UVERBS_ATTR_REG_DMABUF_MR_PD_HANDLE,
+  UVERBS_ATTR_REG_DMABUF_MR_OFFSET,
+  UVERBS_ATTR_REG_DMABUF_MR_LENGTH,
+  UVERBS_ATTR_REG_DMABUF_MR_IOVA,
+  UVERBS_ATTR_REG_DMABUF_MR_FD,
+  UVERBS_ATTR_REG_DMABUF_MR_ACCESS_FLAGS,
+  UVERBS_ATTR_REG_DMABUF_MR_RESP_LKEY,
+  UVERBS_ATTR_REG_DMABUF_MR_RESP_RKEY,
+};
+enum uverbs_attrs_create_counters_cmd_attr_ids {
+  UVERBS_ATTR_CREATE_COUNTERS_HANDLE,
+};
+enum uverbs_attrs_destroy_counters_cmd_attr_ids {
+  UVERBS_ATTR_DESTROY_COUNTERS_HANDLE,
+};
+enum uverbs_attrs_read_counters_cmd_attr_ids {
+  UVERBS_ATTR_READ_COUNTERS_HANDLE,
+  UVERBS_ATTR_READ_COUNTERS_BUFF,
+  UVERBS_ATTR_READ_COUNTERS_FLAGS,
+};
+enum uverbs_methods_actions_counters_ops {
+  UVERBS_METHOD_COUNTERS_CREATE,
+  UVERBS_METHOD_COUNTERS_DESTROY,
+  UVERBS_METHOD_COUNTERS_READ,
+};
+enum uverbs_attrs_info_handles_id {
+  UVERBS_ATTR_INFO_OBJECT_ID,
+  UVERBS_ATTR_INFO_TOTAL_HANDLES,
+  UVERBS_ATTR_INFO_HANDLES_LIST,
+};
+enum uverbs_methods_pd {
+  UVERBS_METHOD_PD_DESTROY,
+};
+enum uverbs_attrs_pd_destroy_ids {
+  UVERBS_ATTR_DESTROY_PD_HANDLE,
+};
+enum uverbs_methods_mw {
+  UVERBS_METHOD_MW_DESTROY,
+};
+enum uverbs_attrs_mw_destroy_ids {
+  UVERBS_ATTR_DESTROY_MW_HANDLE,
+};
+enum uverbs_methods_xrcd {
+  UVERBS_METHOD_XRCD_DESTROY,
+};
+enum uverbs_attrs_xrcd_destroy_ids {
+  UVERBS_ATTR_DESTROY_XRCD_HANDLE,
+};
+enum uverbs_methods_ah {
+  UVERBS_METHOD_AH_DESTROY,
+};
+enum uverbs_attrs_ah_destroy_ids {
+  UVERBS_ATTR_DESTROY_AH_HANDLE,
+};
+enum uverbs_methods_rwq_ind_tbl {
+  UVERBS_METHOD_RWQ_IND_TBL_DESTROY,
+};
+enum uverbs_attrs_rwq_ind_tbl_destroy_ids {
+  UVERBS_ATTR_DESTROY_RWQ_IND_TBL_HANDLE,
+};
+enum uverbs_methods_flow {
+  UVERBS_METHOD_FLOW_DESTROY,
+};
+enum uverbs_attrs_flow_destroy_ids {
+  UVERBS_ATTR_DESTROY_FLOW_HANDLE,
+};
+enum uverbs_method_async_event {
+  UVERBS_METHOD_ASYNC_EVENT_ALLOC,
+};
+enum uverbs_attrs_async_event_create {
+  UVERBS_ATTR_ASYNC_EVENT_ALLOC_FD_HANDLE,
+};
+enum uverbs_attrs_query_gid_table_cmd_attr_ids {
+  UVERBS_ATTR_QUERY_GID_TABLE_ENTRY_SIZE,
+  UVERBS_ATTR_QUERY_GID_TABLE_FLAGS,
+  UVERBS_ATTR_QUERY_GID_TABLE_RESP_ENTRIES,
+  UVERBS_ATTR_QUERY_GID_TABLE_RESP_NUM_ENTRIES,
+};
+enum uverbs_attrs_query_gid_entry_cmd_attr_ids {
+  UVERBS_ATTR_QUERY_GID_ENTRY_PORT,
+  UVERBS_ATTR_QUERY_GID_ENTRY_GID_INDEX,
+  UVERBS_ATTR_QUERY_GID_ENTRY_FLAGS,
+  UVERBS_ATTR_QUERY_GID_ENTRY_RESP_ENTRY,
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/ib_user_ioctl_verbs.h b/i686-linux-musl/include/rdma/ib_user_ioctl_verbs.h
new file mode 100644
index 0000000..3b94907
--- /dev/null
+++ b/i686-linux-musl/include/rdma/ib_user_ioctl_verbs.h
@@ -0,0 +1,207 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef IB_USER_IOCTL_VERBS_H
+#define IB_USER_IOCTL_VERBS_H
+#include <linux/types.h>
+#include <rdma/ib_user_verbs.h>
+#ifndef RDMA_UAPI_PTR
+#define RDMA_UAPI_PTR(_type,_name) __aligned_u64 _name
+#endif
+#define IB_UVERBS_ACCESS_OPTIONAL_FIRST (1 << 20)
+#define IB_UVERBS_ACCESS_OPTIONAL_LAST (1 << 29)
+enum ib_uverbs_core_support {
+  IB_UVERBS_CORE_SUPPORT_OPTIONAL_MR_ACCESS = 1 << 0,
+};
+enum ib_uverbs_access_flags {
+  IB_UVERBS_ACCESS_LOCAL_WRITE = 1 << 0,
+  IB_UVERBS_ACCESS_REMOTE_WRITE = 1 << 1,
+  IB_UVERBS_ACCESS_REMOTE_READ = 1 << 2,
+  IB_UVERBS_ACCESS_REMOTE_ATOMIC = 1 << 3,
+  IB_UVERBS_ACCESS_MW_BIND = 1 << 4,
+  IB_UVERBS_ACCESS_ZERO_BASED = 1 << 5,
+  IB_UVERBS_ACCESS_ON_DEMAND = 1 << 6,
+  IB_UVERBS_ACCESS_HUGETLB = 1 << 7,
+  IB_UVERBS_ACCESS_RELAXED_ORDERING = IB_UVERBS_ACCESS_OPTIONAL_FIRST,
+  IB_UVERBS_ACCESS_OPTIONAL_RANGE = ((IB_UVERBS_ACCESS_OPTIONAL_LAST << 1) - 1) & ~(IB_UVERBS_ACCESS_OPTIONAL_FIRST - 1)
+};
+enum ib_uverbs_srq_type {
+  IB_UVERBS_SRQT_BASIC,
+  IB_UVERBS_SRQT_XRC,
+  IB_UVERBS_SRQT_TM,
+};
+enum ib_uverbs_wq_type {
+  IB_UVERBS_WQT_RQ,
+};
+enum ib_uverbs_wq_flags {
+  IB_UVERBS_WQ_FLAGS_CVLAN_STRIPPING = 1 << 0,
+  IB_UVERBS_WQ_FLAGS_SCATTER_FCS = 1 << 1,
+  IB_UVERBS_WQ_FLAGS_DELAY_DROP = 1 << 2,
+  IB_UVERBS_WQ_FLAGS_PCI_WRITE_END_PADDING = 1 << 3,
+};
+enum ib_uverbs_qp_type {
+  IB_UVERBS_QPT_RC = 2,
+  IB_UVERBS_QPT_UC,
+  IB_UVERBS_QPT_UD,
+  IB_UVERBS_QPT_RAW_PACKET = 8,
+  IB_UVERBS_QPT_XRC_INI,
+  IB_UVERBS_QPT_XRC_TGT,
+  IB_UVERBS_QPT_DRIVER = 0xFF,
+};
+enum ib_uverbs_qp_create_flags {
+  IB_UVERBS_QP_CREATE_BLOCK_MULTICAST_LOOPBACK = 1 << 1,
+  IB_UVERBS_QP_CREATE_SCATTER_FCS = 1 << 8,
+  IB_UVERBS_QP_CREATE_CVLAN_STRIPPING = 1 << 9,
+  IB_UVERBS_QP_CREATE_PCI_WRITE_END_PADDING = 1 << 11,
+  IB_UVERBS_QP_CREATE_SQ_SIG_ALL = 1 << 12,
+};
+enum ib_uverbs_query_port_cap_flags {
+  IB_UVERBS_PCF_SM = 1 << 1,
+  IB_UVERBS_PCF_NOTICE_SUP = 1 << 2,
+  IB_UVERBS_PCF_TRAP_SUP = 1 << 3,
+  IB_UVERBS_PCF_OPT_IPD_SUP = 1 << 4,
+  IB_UVERBS_PCF_AUTO_MIGR_SUP = 1 << 5,
+  IB_UVERBS_PCF_SL_MAP_SUP = 1 << 6,
+  IB_UVERBS_PCF_MKEY_NVRAM = 1 << 7,
+  IB_UVERBS_PCF_PKEY_NVRAM = 1 << 8,
+  IB_UVERBS_PCF_LED_INFO_SUP = 1 << 9,
+  IB_UVERBS_PCF_SM_DISABLED = 1 << 10,
+  IB_UVERBS_PCF_SYS_IMAGE_GUID_SUP = 1 << 11,
+  IB_UVERBS_PCF_PKEY_SW_EXT_PORT_TRAP_SUP = 1 << 12,
+  IB_UVERBS_PCF_EXTENDED_SPEEDS_SUP = 1 << 14,
+  IB_UVERBS_PCF_CM_SUP = 1 << 16,
+  IB_UVERBS_PCF_SNMP_TUNNEL_SUP = 1 << 17,
+  IB_UVERBS_PCF_REINIT_SUP = 1 << 18,
+  IB_UVERBS_PCF_DEVICE_MGMT_SUP = 1 << 19,
+  IB_UVERBS_PCF_VENDOR_CLASS_SUP = 1 << 20,
+  IB_UVERBS_PCF_DR_NOTICE_SUP = 1 << 21,
+  IB_UVERBS_PCF_CAP_MASK_NOTICE_SUP = 1 << 22,
+  IB_UVERBS_PCF_BOOT_MGMT_SUP = 1 << 23,
+  IB_UVERBS_PCF_LINK_LATENCY_SUP = 1 << 24,
+  IB_UVERBS_PCF_CLIENT_REG_SUP = 1 << 25,
+  IB_UVERBS_PCF_LINK_SPEED_WIDTH_TABLE_SUP = 1 << 27,
+  IB_UVERBS_PCF_VENDOR_SPECIFIC_MADS_TABLE_SUP = 1 << 28,
+  IB_UVERBS_PCF_MCAST_PKEY_TRAP_SUPPRESSION_SUP = 1 << 29,
+  IB_UVERBS_PCF_MCAST_FDB_TOP_SUP = 1 << 30,
+  IB_UVERBS_PCF_HIERARCHY_INFO_SUP = 1ULL << 31,
+  IB_UVERBS_PCF_IP_BASED_GIDS = 1 << 26,
+};
+enum ib_uverbs_query_port_flags {
+  IB_UVERBS_QPF_GRH_REQUIRED = 1 << 0,
+};
+enum ib_uverbs_flow_action_esp_keymat {
+  IB_UVERBS_FLOW_ACTION_ESP_KEYMAT_AES_GCM,
+};
+enum ib_uverbs_flow_action_esp_keymat_aes_gcm_iv_algo {
+  IB_UVERBS_FLOW_ACTION_IV_ALGO_SEQ,
+};
+struct ib_uverbs_flow_action_esp_keymat_aes_gcm {
+  __aligned_u64 iv;
+  __u32 iv_algo;
+  __u32 salt;
+  __u32 icv_len;
+  __u32 key_len;
+  __u32 aes_key[256 / 32];
+};
+enum ib_uverbs_flow_action_esp_replay {
+  IB_UVERBS_FLOW_ACTION_ESP_REPLAY_NONE,
+  IB_UVERBS_FLOW_ACTION_ESP_REPLAY_BMP,
+};
+struct ib_uverbs_flow_action_esp_replay_bmp {
+  __u32 size;
+};
+enum ib_uverbs_flow_action_esp_flags {
+  IB_UVERBS_FLOW_ACTION_ESP_FLAGS_INLINE_CRYPTO = 0UL << 0,
+  IB_UVERBS_FLOW_ACTION_ESP_FLAGS_FULL_OFFLOAD = 1UL << 0,
+  IB_UVERBS_FLOW_ACTION_ESP_FLAGS_TUNNEL = 0UL << 1,
+  IB_UVERBS_FLOW_ACTION_ESP_FLAGS_TRANSPORT = 1UL << 1,
+  IB_UVERBS_FLOW_ACTION_ESP_FLAGS_DECRYPT = 0UL << 2,
+  IB_UVERBS_FLOW_ACTION_ESP_FLAGS_ENCRYPT = 1UL << 2,
+  IB_UVERBS_FLOW_ACTION_ESP_FLAGS_ESN_NEW_WINDOW = 1UL << 3,
+};
+struct ib_uverbs_flow_action_esp_encap {
+  RDMA_UAPI_PTR(void *, val_ptr);
+  RDMA_UAPI_PTR(struct ib_uverbs_flow_action_esp_encap *, next_ptr);
+  __u16 len;
+  __u16 type;
+};
+struct ib_uverbs_flow_action_esp {
+  __u32 spi;
+  __u32 seq;
+  __u32 tfc_pad;
+  __u32 flags;
+  __aligned_u64 hard_limit_pkts;
+};
+enum ib_uverbs_read_counters_flags {
+  IB_UVERBS_READ_COUNTERS_PREFER_CACHED = 1 << 0,
+};
+enum ib_uverbs_advise_mr_advice {
+  IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH,
+  IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_WRITE,
+  IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_NO_FAULT,
+};
+enum ib_uverbs_advise_mr_flag {
+  IB_UVERBS_ADVISE_MR_FLAG_FLUSH = 1 << 0,
+};
+struct ib_uverbs_query_port_resp_ex {
+  struct ib_uverbs_query_port_resp legacy_resp;
+  __u16 port_cap_flags2;
+  __u8 reserved[6];
+};
+struct ib_uverbs_qp_cap {
+  __u32 max_send_wr;
+  __u32 max_recv_wr;
+  __u32 max_send_sge;
+  __u32 max_recv_sge;
+  __u32 max_inline_data;
+};
+enum rdma_driver_id {
+  RDMA_DRIVER_UNKNOWN,
+  RDMA_DRIVER_MLX5,
+  RDMA_DRIVER_MLX4,
+  RDMA_DRIVER_CXGB3,
+  RDMA_DRIVER_CXGB4,
+  RDMA_DRIVER_MTHCA,
+  RDMA_DRIVER_BNXT_RE,
+  RDMA_DRIVER_OCRDMA,
+  RDMA_DRIVER_NES,
+  RDMA_DRIVER_I40IW,
+  RDMA_DRIVER_IRDMA = RDMA_DRIVER_I40IW,
+  RDMA_DRIVER_VMW_PVRDMA,
+  RDMA_DRIVER_QEDR,
+  RDMA_DRIVER_HNS,
+  RDMA_DRIVER_USNIC,
+  RDMA_DRIVER_RXE,
+  RDMA_DRIVER_HFI1,
+  RDMA_DRIVER_QIB,
+  RDMA_DRIVER_EFA,
+  RDMA_DRIVER_SIW,
+};
+enum ib_uverbs_gid_type {
+  IB_UVERBS_GID_TYPE_IB,
+  IB_UVERBS_GID_TYPE_ROCE_V1,
+  IB_UVERBS_GID_TYPE_ROCE_V2,
+};
+struct ib_uverbs_gid_entry {
+  __aligned_u64 gid[2];
+  __u32 gid_index;
+  __u32 port_num;
+  __u32 gid_type;
+  __u32 netdev_ifindex;
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/ib_user_mad.h b/i686-linux-musl/include/rdma/ib_user_mad.h
new file mode 100644
index 0000000..04b9f08
--- /dev/null
+++ b/i686-linux-musl/include/rdma/ib_user_mad.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 IB_USER_MAD_H
+#define IB_USER_MAD_H
+#include <linux/types.h>
+#include <rdma/rdma_user_ioctl.h>
+#define IB_USER_MAD_ABI_VERSION 5
+struct ib_user_mad_hdr_old {
+  __u32 id;
+  __u32 status;
+  __u32 timeout_ms;
+  __u32 retries;
+  __u32 length;
+  __be32 qpn;
+  __be32 qkey;
+  __be16 lid;
+  __u8 sl;
+  __u8 path_bits;
+  __u8 grh_present;
+  __u8 gid_index;
+  __u8 hop_limit;
+  __u8 traffic_class;
+  __u8 gid[16];
+  __be32 flow_label;
+};
+struct ib_user_mad_hdr {
+  __u32 id;
+  __u32 status;
+  __u32 timeout_ms;
+  __u32 retries;
+  __u32 length;
+  __be32 qpn;
+  __be32 qkey;
+  __be16 lid;
+  __u8 sl;
+  __u8 path_bits;
+  __u8 grh_present;
+  __u8 gid_index;
+  __u8 hop_limit;
+  __u8 traffic_class;
+  __u8 gid[16];
+  __be32 flow_label;
+  __u16 pkey_index;
+  __u8 reserved[6];
+};
+struct ib_user_mad {
+  struct ib_user_mad_hdr hdr;
+  __aligned_u64 data[];
+};
+typedef unsigned long __attribute__((aligned(4))) packed_ulong;
+#define IB_USER_MAD_LONGS_PER_METHOD_MASK (128 / (8 * sizeof(long)))
+struct ib_user_mad_reg_req {
+  __u32 id;
+  packed_ulong method_mask[IB_USER_MAD_LONGS_PER_METHOD_MASK];
+  __u8 qpn;
+  __u8 mgmt_class;
+  __u8 mgmt_class_version;
+  __u8 oui[3];
+  __u8 rmpp_version;
+};
+enum {
+  IB_USER_MAD_USER_RMPP = (1 << 0),
+};
+#define IB_USER_MAD_REG_FLAGS_CAP (IB_USER_MAD_USER_RMPP)
+struct ib_user_mad_reg_req2 {
+  __u32 id;
+  __u32 qpn;
+  __u8 mgmt_class;
+  __u8 mgmt_class_version;
+  __u16 res;
+  __u32 flags;
+  __aligned_u64 method_mask[2];
+  __u32 oui;
+  __u8 rmpp_version;
+  __u8 reserved[3];
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/ib_user_sa.h b/i686-linux-musl/include/rdma/ib_user_sa.h
new file mode 100644
index 0000000..c999320
--- /dev/null
+++ b/i686-linux-musl/include/rdma/ib_user_sa.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 IB_USER_SA_H
+#define IB_USER_SA_H
+#include <linux/types.h>
+enum {
+  IB_PATH_GMP = 1,
+  IB_PATH_PRIMARY = (1 << 1),
+  IB_PATH_ALTERNATE = (1 << 2),
+  IB_PATH_OUTBOUND = (1 << 3),
+  IB_PATH_INBOUND = (1 << 4),
+  IB_PATH_INBOUND_REVERSE = (1 << 5),
+  IB_PATH_BIDIRECTIONAL = IB_PATH_OUTBOUND | IB_PATH_INBOUND_REVERSE
+};
+struct ib_path_rec_data {
+  __u32 flags;
+  __u32 reserved;
+  __u32 path_rec[16];
+};
+struct ib_user_path_rec {
+  __u8 dgid[16];
+  __u8 sgid[16];
+  __be16 dlid;
+  __be16 slid;
+  __u32 raw_traffic;
+  __be32 flow_label;
+  __u32 reversible;
+  __u32 mtu;
+  __be16 pkey;
+  __u8 hop_limit;
+  __u8 traffic_class;
+  __u8 numb_path;
+  __u8 sl;
+  __u8 mtu_selector;
+  __u8 rate_selector;
+  __u8 rate;
+  __u8 packet_life_time_selector;
+  __u8 packet_life_time;
+  __u8 preference;
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/ib_user_verbs.h b/i686-linux-musl/include/rdma/ib_user_verbs.h
new file mode 100644
index 0000000..d9ac9e0
--- /dev/null
+++ b/i686-linux-musl/include/rdma/ib_user_verbs.h
@@ -0,0 +1,1082 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef IB_USER_VERBS_H
+#define IB_USER_VERBS_H
+#include <linux/types.h>
+#define IB_USER_VERBS_ABI_VERSION 6
+#define IB_USER_VERBS_CMD_THRESHOLD 50
+enum ib_uverbs_write_cmds {
+  IB_USER_VERBS_CMD_GET_CONTEXT,
+  IB_USER_VERBS_CMD_QUERY_DEVICE,
+  IB_USER_VERBS_CMD_QUERY_PORT,
+  IB_USER_VERBS_CMD_ALLOC_PD,
+  IB_USER_VERBS_CMD_DEALLOC_PD,
+  IB_USER_VERBS_CMD_CREATE_AH,
+  IB_USER_VERBS_CMD_MODIFY_AH,
+  IB_USER_VERBS_CMD_QUERY_AH,
+  IB_USER_VERBS_CMD_DESTROY_AH,
+  IB_USER_VERBS_CMD_REG_MR,
+  IB_USER_VERBS_CMD_REG_SMR,
+  IB_USER_VERBS_CMD_REREG_MR,
+  IB_USER_VERBS_CMD_QUERY_MR,
+  IB_USER_VERBS_CMD_DEREG_MR,
+  IB_USER_VERBS_CMD_ALLOC_MW,
+  IB_USER_VERBS_CMD_BIND_MW,
+  IB_USER_VERBS_CMD_DEALLOC_MW,
+  IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL,
+  IB_USER_VERBS_CMD_CREATE_CQ,
+  IB_USER_VERBS_CMD_RESIZE_CQ,
+  IB_USER_VERBS_CMD_DESTROY_CQ,
+  IB_USER_VERBS_CMD_POLL_CQ,
+  IB_USER_VERBS_CMD_PEEK_CQ,
+  IB_USER_VERBS_CMD_REQ_NOTIFY_CQ,
+  IB_USER_VERBS_CMD_CREATE_QP,
+  IB_USER_VERBS_CMD_QUERY_QP,
+  IB_USER_VERBS_CMD_MODIFY_QP,
+  IB_USER_VERBS_CMD_DESTROY_QP,
+  IB_USER_VERBS_CMD_POST_SEND,
+  IB_USER_VERBS_CMD_POST_RECV,
+  IB_USER_VERBS_CMD_ATTACH_MCAST,
+  IB_USER_VERBS_CMD_DETACH_MCAST,
+  IB_USER_VERBS_CMD_CREATE_SRQ,
+  IB_USER_VERBS_CMD_MODIFY_SRQ,
+  IB_USER_VERBS_CMD_QUERY_SRQ,
+  IB_USER_VERBS_CMD_DESTROY_SRQ,
+  IB_USER_VERBS_CMD_POST_SRQ_RECV,
+  IB_USER_VERBS_CMD_OPEN_XRCD,
+  IB_USER_VERBS_CMD_CLOSE_XRCD,
+  IB_USER_VERBS_CMD_CREATE_XSRQ,
+  IB_USER_VERBS_CMD_OPEN_QP,
+};
+enum {
+  IB_USER_VERBS_EX_CMD_QUERY_DEVICE = IB_USER_VERBS_CMD_QUERY_DEVICE,
+  IB_USER_VERBS_EX_CMD_CREATE_CQ = IB_USER_VERBS_CMD_CREATE_CQ,
+  IB_USER_VERBS_EX_CMD_CREATE_QP = IB_USER_VERBS_CMD_CREATE_QP,
+  IB_USER_VERBS_EX_CMD_MODIFY_QP = IB_USER_VERBS_CMD_MODIFY_QP,
+  IB_USER_VERBS_EX_CMD_CREATE_FLOW = IB_USER_VERBS_CMD_THRESHOLD,
+  IB_USER_VERBS_EX_CMD_DESTROY_FLOW,
+  IB_USER_VERBS_EX_CMD_CREATE_WQ,
+  IB_USER_VERBS_EX_CMD_MODIFY_WQ,
+  IB_USER_VERBS_EX_CMD_DESTROY_WQ,
+  IB_USER_VERBS_EX_CMD_CREATE_RWQ_IND_TBL,
+  IB_USER_VERBS_EX_CMD_DESTROY_RWQ_IND_TBL,
+  IB_USER_VERBS_EX_CMD_MODIFY_CQ
+};
+struct ib_uverbs_async_event_desc {
+  __aligned_u64 element;
+  __u32 event_type;
+  __u32 reserved;
+};
+struct ib_uverbs_comp_event_desc {
+  __aligned_u64 cq_handle;
+};
+struct ib_uverbs_cq_moderation_caps {
+  __u16 max_cq_moderation_count;
+  __u16 max_cq_moderation_period;
+  __u32 reserved;
+};
+#define IB_USER_VERBS_CMD_COMMAND_MASK 0xff
+#define IB_USER_VERBS_CMD_FLAG_EXTENDED 0x80000000u
+struct ib_uverbs_cmd_hdr {
+  __u32 command;
+  __u16 in_words;
+  __u16 out_words;
+};
+struct ib_uverbs_ex_cmd_hdr {
+  __aligned_u64 response;
+  __u16 provider_in_words;
+  __u16 provider_out_words;
+  __u32 cmd_hdr_reserved;
+};
+struct ib_uverbs_get_context {
+  __aligned_u64 response;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_get_context_resp {
+  __u32 async_fd;
+  __u32 num_comp_vectors;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_query_device {
+  __aligned_u64 response;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_query_device_resp {
+  __aligned_u64 fw_ver;
+  __be64 node_guid;
+  __be64 sys_image_guid;
+  __aligned_u64 max_mr_size;
+  __aligned_u64 page_size_cap;
+  __u32 vendor_id;
+  __u32 vendor_part_id;
+  __u32 hw_ver;
+  __u32 max_qp;
+  __u32 max_qp_wr;
+  __u32 device_cap_flags;
+  __u32 max_sge;
+  __u32 max_sge_rd;
+  __u32 max_cq;
+  __u32 max_cqe;
+  __u32 max_mr;
+  __u32 max_pd;
+  __u32 max_qp_rd_atom;
+  __u32 max_ee_rd_atom;
+  __u32 max_res_rd_atom;
+  __u32 max_qp_init_rd_atom;
+  __u32 max_ee_init_rd_atom;
+  __u32 atomic_cap;
+  __u32 max_ee;
+  __u32 max_rdd;
+  __u32 max_mw;
+  __u32 max_raw_ipv6_qp;
+  __u32 max_raw_ethy_qp;
+  __u32 max_mcast_grp;
+  __u32 max_mcast_qp_attach;
+  __u32 max_total_mcast_qp_attach;
+  __u32 max_ah;
+  __u32 max_fmr;
+  __u32 max_map_per_fmr;
+  __u32 max_srq;
+  __u32 max_srq_wr;
+  __u32 max_srq_sge;
+  __u16 max_pkeys;
+  __u8 local_ca_ack_delay;
+  __u8 phys_port_cnt;
+  __u8 reserved[4];
+};
+struct ib_uverbs_ex_query_device {
+  __u32 comp_mask;
+  __u32 reserved;
+};
+struct ib_uverbs_odp_caps {
+  __aligned_u64 general_caps;
+  struct {
+    __u32 rc_odp_caps;
+    __u32 uc_odp_caps;
+    __u32 ud_odp_caps;
+  } per_transport_caps;
+  __u32 reserved;
+};
+struct ib_uverbs_rss_caps {
+  __u32 supported_qpts;
+  __u32 max_rwq_indirection_tables;
+  __u32 max_rwq_indirection_table_size;
+  __u32 reserved;
+};
+struct ib_uverbs_tm_caps {
+  __u32 max_rndv_hdr_size;
+  __u32 max_num_tags;
+  __u32 flags;
+  __u32 max_ops;
+  __u32 max_sge;
+  __u32 reserved;
+};
+struct ib_uverbs_ex_query_device_resp {
+  struct ib_uverbs_query_device_resp base;
+  __u32 comp_mask;
+  __u32 response_length;
+  struct ib_uverbs_odp_caps odp_caps;
+  __aligned_u64 timestamp_mask;
+  __aligned_u64 hca_core_clock;
+  __aligned_u64 device_cap_flags_ex;
+  struct ib_uverbs_rss_caps rss_caps;
+  __u32 max_wq_type_rq;
+  __u32 raw_packet_caps;
+  struct ib_uverbs_tm_caps tm_caps;
+  struct ib_uverbs_cq_moderation_caps cq_moderation_caps;
+  __aligned_u64 max_dm_size;
+  __u32 xrc_odp_caps;
+  __u32 reserved;
+};
+struct ib_uverbs_query_port {
+  __aligned_u64 response;
+  __u8 port_num;
+  __u8 reserved[7];
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_query_port_resp {
+  __u32 port_cap_flags;
+  __u32 max_msg_sz;
+  __u32 bad_pkey_cntr;
+  __u32 qkey_viol_cntr;
+  __u32 gid_tbl_len;
+  __u16 pkey_tbl_len;
+  __u16 lid;
+  __u16 sm_lid;
+  __u8 state;
+  __u8 max_mtu;
+  __u8 active_mtu;
+  __u8 lmc;
+  __u8 max_vl_num;
+  __u8 sm_sl;
+  __u8 subnet_timeout;
+  __u8 init_type_reply;
+  __u8 active_width;
+  __u8 active_speed;
+  __u8 phys_state;
+  __u8 link_layer;
+  __u8 flags;
+  __u8 reserved;
+};
+struct ib_uverbs_alloc_pd {
+  __aligned_u64 response;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_alloc_pd_resp {
+  __u32 pd_handle;
+  __u32 driver_data[0];
+};
+struct ib_uverbs_dealloc_pd {
+  __u32 pd_handle;
+};
+struct ib_uverbs_open_xrcd {
+  __aligned_u64 response;
+  __u32 fd;
+  __u32 oflags;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_open_xrcd_resp {
+  __u32 xrcd_handle;
+  __u32 driver_data[0];
+};
+struct ib_uverbs_close_xrcd {
+  __u32 xrcd_handle;
+};
+struct ib_uverbs_reg_mr {
+  __aligned_u64 response;
+  __aligned_u64 start;
+  __aligned_u64 length;
+  __aligned_u64 hca_va;
+  __u32 pd_handle;
+  __u32 access_flags;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_reg_mr_resp {
+  __u32 mr_handle;
+  __u32 lkey;
+  __u32 rkey;
+  __u32 driver_data[0];
+};
+struct ib_uverbs_rereg_mr {
+  __aligned_u64 response;
+  __u32 mr_handle;
+  __u32 flags;
+  __aligned_u64 start;
+  __aligned_u64 length;
+  __aligned_u64 hca_va;
+  __u32 pd_handle;
+  __u32 access_flags;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_rereg_mr_resp {
+  __u32 lkey;
+  __u32 rkey;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_dereg_mr {
+  __u32 mr_handle;
+};
+struct ib_uverbs_alloc_mw {
+  __aligned_u64 response;
+  __u32 pd_handle;
+  __u8 mw_type;
+  __u8 reserved[3];
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_alloc_mw_resp {
+  __u32 mw_handle;
+  __u32 rkey;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_dealloc_mw {
+  __u32 mw_handle;
+};
+struct ib_uverbs_create_comp_channel {
+  __aligned_u64 response;
+};
+struct ib_uverbs_create_comp_channel_resp {
+  __u32 fd;
+};
+struct ib_uverbs_create_cq {
+  __aligned_u64 response;
+  __aligned_u64 user_handle;
+  __u32 cqe;
+  __u32 comp_vector;
+  __s32 comp_channel;
+  __u32 reserved;
+  __aligned_u64 driver_data[0];
+};
+enum ib_uverbs_ex_create_cq_flags {
+  IB_UVERBS_CQ_FLAGS_TIMESTAMP_COMPLETION = 1 << 0,
+  IB_UVERBS_CQ_FLAGS_IGNORE_OVERRUN = 1 << 1,
+};
+struct ib_uverbs_ex_create_cq {
+  __aligned_u64 user_handle;
+  __u32 cqe;
+  __u32 comp_vector;
+  __s32 comp_channel;
+  __u32 comp_mask;
+  __u32 flags;
+  __u32 reserved;
+};
+struct ib_uverbs_create_cq_resp {
+  __u32 cq_handle;
+  __u32 cqe;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_ex_create_cq_resp {
+  struct ib_uverbs_create_cq_resp base;
+  __u32 comp_mask;
+  __u32 response_length;
+};
+struct ib_uverbs_resize_cq {
+  __aligned_u64 response;
+  __u32 cq_handle;
+  __u32 cqe;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_resize_cq_resp {
+  __u32 cqe;
+  __u32 reserved;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_poll_cq {
+  __aligned_u64 response;
+  __u32 cq_handle;
+  __u32 ne;
+};
+enum ib_uverbs_wc_opcode {
+  IB_UVERBS_WC_SEND = 0,
+  IB_UVERBS_WC_RDMA_WRITE = 1,
+  IB_UVERBS_WC_RDMA_READ = 2,
+  IB_UVERBS_WC_COMP_SWAP = 3,
+  IB_UVERBS_WC_FETCH_ADD = 4,
+  IB_UVERBS_WC_BIND_MW = 5,
+  IB_UVERBS_WC_LOCAL_INV = 6,
+  IB_UVERBS_WC_TSO = 7,
+};
+struct ib_uverbs_wc {
+  __aligned_u64 wr_id;
+  __u32 status;
+  __u32 opcode;
+  __u32 vendor_err;
+  __u32 byte_len;
+  union {
+    __be32 imm_data;
+    __u32 invalidate_rkey;
+  } ex;
+  __u32 qp_num;
+  __u32 src_qp;
+  __u32 wc_flags;
+  __u16 pkey_index;
+  __u16 slid;
+  __u8 sl;
+  __u8 dlid_path_bits;
+  __u8 port_num;
+  __u8 reserved;
+};
+struct ib_uverbs_poll_cq_resp {
+  __u32 count;
+  __u32 reserved;
+  struct ib_uverbs_wc wc[0];
+};
+struct ib_uverbs_req_notify_cq {
+  __u32 cq_handle;
+  __u32 solicited_only;
+};
+struct ib_uverbs_destroy_cq {
+  __aligned_u64 response;
+  __u32 cq_handle;
+  __u32 reserved;
+};
+struct ib_uverbs_destroy_cq_resp {
+  __u32 comp_events_reported;
+  __u32 async_events_reported;
+};
+struct ib_uverbs_global_route {
+  __u8 dgid[16];
+  __u32 flow_label;
+  __u8 sgid_index;
+  __u8 hop_limit;
+  __u8 traffic_class;
+  __u8 reserved;
+};
+struct ib_uverbs_ah_attr {
+  struct ib_uverbs_global_route grh;
+  __u16 dlid;
+  __u8 sl;
+  __u8 src_path_bits;
+  __u8 static_rate;
+  __u8 is_global;
+  __u8 port_num;
+  __u8 reserved;
+};
+struct ib_uverbs_qp_attr {
+  __u32 qp_attr_mask;
+  __u32 qp_state;
+  __u32 cur_qp_state;
+  __u32 path_mtu;
+  __u32 path_mig_state;
+  __u32 qkey;
+  __u32 rq_psn;
+  __u32 sq_psn;
+  __u32 dest_qp_num;
+  __u32 qp_access_flags;
+  struct ib_uverbs_ah_attr ah_attr;
+  struct ib_uverbs_ah_attr alt_ah_attr;
+  __u32 max_send_wr;
+  __u32 max_recv_wr;
+  __u32 max_send_sge;
+  __u32 max_recv_sge;
+  __u32 max_inline_data;
+  __u16 pkey_index;
+  __u16 alt_pkey_index;
+  __u8 en_sqd_async_notify;
+  __u8 sq_draining;
+  __u8 max_rd_atomic;
+  __u8 max_dest_rd_atomic;
+  __u8 min_rnr_timer;
+  __u8 port_num;
+  __u8 timeout;
+  __u8 retry_cnt;
+  __u8 rnr_retry;
+  __u8 alt_port_num;
+  __u8 alt_timeout;
+  __u8 reserved[5];
+};
+struct ib_uverbs_create_qp {
+  __aligned_u64 response;
+  __aligned_u64 user_handle;
+  __u32 pd_handle;
+  __u32 send_cq_handle;
+  __u32 recv_cq_handle;
+  __u32 srq_handle;
+  __u32 max_send_wr;
+  __u32 max_recv_wr;
+  __u32 max_send_sge;
+  __u32 max_recv_sge;
+  __u32 max_inline_data;
+  __u8 sq_sig_all;
+  __u8 qp_type;
+  __u8 is_srq;
+  __u8 reserved;
+  __aligned_u64 driver_data[0];
+};
+enum ib_uverbs_create_qp_mask {
+  IB_UVERBS_CREATE_QP_MASK_IND_TABLE = 1UL << 0,
+};
+enum {
+  IB_UVERBS_CREATE_QP_SUP_COMP_MASK = IB_UVERBS_CREATE_QP_MASK_IND_TABLE,
+};
+struct ib_uverbs_ex_create_qp {
+  __aligned_u64 user_handle;
+  __u32 pd_handle;
+  __u32 send_cq_handle;
+  __u32 recv_cq_handle;
+  __u32 srq_handle;
+  __u32 max_send_wr;
+  __u32 max_recv_wr;
+  __u32 max_send_sge;
+  __u32 max_recv_sge;
+  __u32 max_inline_data;
+  __u8 sq_sig_all;
+  __u8 qp_type;
+  __u8 is_srq;
+  __u8 reserved;
+  __u32 comp_mask;
+  __u32 create_flags;
+  __u32 rwq_ind_tbl_handle;
+  __u32 source_qpn;
+};
+struct ib_uverbs_open_qp {
+  __aligned_u64 response;
+  __aligned_u64 user_handle;
+  __u32 pd_handle;
+  __u32 qpn;
+  __u8 qp_type;
+  __u8 reserved[7];
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_create_qp_resp {
+  __u32 qp_handle;
+  __u32 qpn;
+  __u32 max_send_wr;
+  __u32 max_recv_wr;
+  __u32 max_send_sge;
+  __u32 max_recv_sge;
+  __u32 max_inline_data;
+  __u32 reserved;
+  __u32 driver_data[0];
+};
+struct ib_uverbs_ex_create_qp_resp {
+  struct ib_uverbs_create_qp_resp base;
+  __u32 comp_mask;
+  __u32 response_length;
+};
+struct ib_uverbs_qp_dest {
+  __u8 dgid[16];
+  __u32 flow_label;
+  __u16 dlid;
+  __u16 reserved;
+  __u8 sgid_index;
+  __u8 hop_limit;
+  __u8 traffic_class;
+  __u8 sl;
+  __u8 src_path_bits;
+  __u8 static_rate;
+  __u8 is_global;
+  __u8 port_num;
+};
+struct ib_uverbs_query_qp {
+  __aligned_u64 response;
+  __u32 qp_handle;
+  __u32 attr_mask;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_query_qp_resp {
+  struct ib_uverbs_qp_dest dest;
+  struct ib_uverbs_qp_dest alt_dest;
+  __u32 max_send_wr;
+  __u32 max_recv_wr;
+  __u32 max_send_sge;
+  __u32 max_recv_sge;
+  __u32 max_inline_data;
+  __u32 qkey;
+  __u32 rq_psn;
+  __u32 sq_psn;
+  __u32 dest_qp_num;
+  __u32 qp_access_flags;
+  __u16 pkey_index;
+  __u16 alt_pkey_index;
+  __u8 qp_state;
+  __u8 cur_qp_state;
+  __u8 path_mtu;
+  __u8 path_mig_state;
+  __u8 sq_draining;
+  __u8 max_rd_atomic;
+  __u8 max_dest_rd_atomic;
+  __u8 min_rnr_timer;
+  __u8 port_num;
+  __u8 timeout;
+  __u8 retry_cnt;
+  __u8 rnr_retry;
+  __u8 alt_port_num;
+  __u8 alt_timeout;
+  __u8 sq_sig_all;
+  __u8 reserved[5];
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_modify_qp {
+  struct ib_uverbs_qp_dest dest;
+  struct ib_uverbs_qp_dest alt_dest;
+  __u32 qp_handle;
+  __u32 attr_mask;
+  __u32 qkey;
+  __u32 rq_psn;
+  __u32 sq_psn;
+  __u32 dest_qp_num;
+  __u32 qp_access_flags;
+  __u16 pkey_index;
+  __u16 alt_pkey_index;
+  __u8 qp_state;
+  __u8 cur_qp_state;
+  __u8 path_mtu;
+  __u8 path_mig_state;
+  __u8 en_sqd_async_notify;
+  __u8 max_rd_atomic;
+  __u8 max_dest_rd_atomic;
+  __u8 min_rnr_timer;
+  __u8 port_num;
+  __u8 timeout;
+  __u8 retry_cnt;
+  __u8 rnr_retry;
+  __u8 alt_port_num;
+  __u8 alt_timeout;
+  __u8 reserved[2];
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_ex_modify_qp {
+  struct ib_uverbs_modify_qp base;
+  __u32 rate_limit;
+  __u32 reserved;
+};
+struct ib_uverbs_ex_modify_qp_resp {
+  __u32 comp_mask;
+  __u32 response_length;
+};
+struct ib_uverbs_destroy_qp {
+  __aligned_u64 response;
+  __u32 qp_handle;
+  __u32 reserved;
+};
+struct ib_uverbs_destroy_qp_resp {
+  __u32 events_reported;
+};
+struct ib_uverbs_sge {
+  __aligned_u64 addr;
+  __u32 length;
+  __u32 lkey;
+};
+enum ib_uverbs_wr_opcode {
+  IB_UVERBS_WR_RDMA_WRITE = 0,
+  IB_UVERBS_WR_RDMA_WRITE_WITH_IMM = 1,
+  IB_UVERBS_WR_SEND = 2,
+  IB_UVERBS_WR_SEND_WITH_IMM = 3,
+  IB_UVERBS_WR_RDMA_READ = 4,
+  IB_UVERBS_WR_ATOMIC_CMP_AND_SWP = 5,
+  IB_UVERBS_WR_ATOMIC_FETCH_AND_ADD = 6,
+  IB_UVERBS_WR_LOCAL_INV = 7,
+  IB_UVERBS_WR_BIND_MW = 8,
+  IB_UVERBS_WR_SEND_WITH_INV = 9,
+  IB_UVERBS_WR_TSO = 10,
+  IB_UVERBS_WR_RDMA_READ_WITH_INV = 11,
+  IB_UVERBS_WR_MASKED_ATOMIC_CMP_AND_SWP = 12,
+  IB_UVERBS_WR_MASKED_ATOMIC_FETCH_AND_ADD = 13,
+};
+struct ib_uverbs_send_wr {
+  __aligned_u64 wr_id;
+  __u32 num_sge;
+  __u32 opcode;
+  __u32 send_flags;
+  union {
+    __be32 imm_data;
+    __u32 invalidate_rkey;
+  } ex;
+  union {
+    struct {
+      __aligned_u64 remote_addr;
+      __u32 rkey;
+      __u32 reserved;
+    } rdma;
+    struct {
+      __aligned_u64 remote_addr;
+      __aligned_u64 compare_add;
+      __aligned_u64 swap;
+      __u32 rkey;
+      __u32 reserved;
+    } atomic;
+    struct {
+      __u32 ah;
+      __u32 remote_qpn;
+      __u32 remote_qkey;
+      __u32 reserved;
+    } ud;
+  } wr;
+};
+struct ib_uverbs_post_send {
+  __aligned_u64 response;
+  __u32 qp_handle;
+  __u32 wr_count;
+  __u32 sge_count;
+  __u32 wqe_size;
+  struct ib_uverbs_send_wr send_wr[0];
+};
+struct ib_uverbs_post_send_resp {
+  __u32 bad_wr;
+};
+struct ib_uverbs_recv_wr {
+  __aligned_u64 wr_id;
+  __u32 num_sge;
+  __u32 reserved;
+};
+struct ib_uverbs_post_recv {
+  __aligned_u64 response;
+  __u32 qp_handle;
+  __u32 wr_count;
+  __u32 sge_count;
+  __u32 wqe_size;
+  struct ib_uverbs_recv_wr recv_wr[0];
+};
+struct ib_uverbs_post_recv_resp {
+  __u32 bad_wr;
+};
+struct ib_uverbs_post_srq_recv {
+  __aligned_u64 response;
+  __u32 srq_handle;
+  __u32 wr_count;
+  __u32 sge_count;
+  __u32 wqe_size;
+  struct ib_uverbs_recv_wr recv[0];
+};
+struct ib_uverbs_post_srq_recv_resp {
+  __u32 bad_wr;
+};
+struct ib_uverbs_create_ah {
+  __aligned_u64 response;
+  __aligned_u64 user_handle;
+  __u32 pd_handle;
+  __u32 reserved;
+  struct ib_uverbs_ah_attr attr;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_create_ah_resp {
+  __u32 ah_handle;
+  __u32 driver_data[0];
+};
+struct ib_uverbs_destroy_ah {
+  __u32 ah_handle;
+};
+struct ib_uverbs_attach_mcast {
+  __u8 gid[16];
+  __u32 qp_handle;
+  __u16 mlid;
+  __u16 reserved;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_detach_mcast {
+  __u8 gid[16];
+  __u32 qp_handle;
+  __u16 mlid;
+  __u16 reserved;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_flow_spec_hdr {
+  __u32 type;
+  __u16 size;
+  __u16 reserved;
+  __aligned_u64 flow_spec_data[0];
+};
+struct ib_uverbs_flow_eth_filter {
+  __u8 dst_mac[6];
+  __u8 src_mac[6];
+  __be16 ether_type;
+  __be16 vlan_tag;
+};
+struct ib_uverbs_flow_spec_eth {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  struct ib_uverbs_flow_eth_filter val;
+  struct ib_uverbs_flow_eth_filter mask;
+};
+struct ib_uverbs_flow_ipv4_filter {
+  __be32 src_ip;
+  __be32 dst_ip;
+  __u8 proto;
+  __u8 tos;
+  __u8 ttl;
+  __u8 flags;
+};
+struct ib_uverbs_flow_spec_ipv4 {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  struct ib_uverbs_flow_ipv4_filter val;
+  struct ib_uverbs_flow_ipv4_filter mask;
+};
+struct ib_uverbs_flow_tcp_udp_filter {
+  __be16 dst_port;
+  __be16 src_port;
+};
+struct ib_uverbs_flow_spec_tcp_udp {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  struct ib_uverbs_flow_tcp_udp_filter val;
+  struct ib_uverbs_flow_tcp_udp_filter mask;
+};
+struct ib_uverbs_flow_ipv6_filter {
+  __u8 src_ip[16];
+  __u8 dst_ip[16];
+  __be32 flow_label;
+  __u8 next_hdr;
+  __u8 traffic_class;
+  __u8 hop_limit;
+  __u8 reserved;
+};
+struct ib_uverbs_flow_spec_ipv6 {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  struct ib_uverbs_flow_ipv6_filter val;
+  struct ib_uverbs_flow_ipv6_filter mask;
+};
+struct ib_uverbs_flow_spec_action_tag {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  __u32 tag_id;
+  __u32 reserved1;
+};
+struct ib_uverbs_flow_spec_action_drop {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+};
+struct ib_uverbs_flow_spec_action_handle {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  __u32 handle;
+  __u32 reserved1;
+};
+struct ib_uverbs_flow_spec_action_count {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  __u32 handle;
+  __u32 reserved1;
+};
+struct ib_uverbs_flow_tunnel_filter {
+  __be32 tunnel_id;
+};
+struct ib_uverbs_flow_spec_tunnel {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  struct ib_uverbs_flow_tunnel_filter val;
+  struct ib_uverbs_flow_tunnel_filter mask;
+};
+struct ib_uverbs_flow_spec_esp_filter {
+  __u32 spi;
+  __u32 seq;
+};
+struct ib_uverbs_flow_spec_esp {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  struct ib_uverbs_flow_spec_esp_filter val;
+  struct ib_uverbs_flow_spec_esp_filter mask;
+};
+struct ib_uverbs_flow_gre_filter {
+  __be16 c_ks_res0_ver;
+  __be16 protocol;
+  __be32 key;
+};
+struct ib_uverbs_flow_spec_gre {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  struct ib_uverbs_flow_gre_filter val;
+  struct ib_uverbs_flow_gre_filter mask;
+};
+struct ib_uverbs_flow_mpls_filter {
+  __be32 label;
+};
+struct ib_uverbs_flow_spec_mpls {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  struct ib_uverbs_flow_mpls_filter val;
+  struct ib_uverbs_flow_mpls_filter mask;
+};
+struct ib_uverbs_flow_attr {
+  __u32 type;
+  __u16 size;
+  __u16 priority;
+  __u8 num_of_specs;
+  __u8 reserved[2];
+  __u8 port;
+  __u32 flags;
+  struct ib_uverbs_flow_spec_hdr flow_specs[0];
+};
+struct ib_uverbs_create_flow {
+  __u32 comp_mask;
+  __u32 qp_handle;
+  struct ib_uverbs_flow_attr flow_attr;
+};
+struct ib_uverbs_create_flow_resp {
+  __u32 comp_mask;
+  __u32 flow_handle;
+};
+struct ib_uverbs_destroy_flow {
+  __u32 comp_mask;
+  __u32 flow_handle;
+};
+struct ib_uverbs_create_srq {
+  __aligned_u64 response;
+  __aligned_u64 user_handle;
+  __u32 pd_handle;
+  __u32 max_wr;
+  __u32 max_sge;
+  __u32 srq_limit;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_create_xsrq {
+  __aligned_u64 response;
+  __aligned_u64 user_handle;
+  __u32 srq_type;
+  __u32 pd_handle;
+  __u32 max_wr;
+  __u32 max_sge;
+  __u32 srq_limit;
+  __u32 max_num_tags;
+  __u32 xrcd_handle;
+  __u32 cq_handle;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_create_srq_resp {
+  __u32 srq_handle;
+  __u32 max_wr;
+  __u32 max_sge;
+  __u32 srqn;
+  __u32 driver_data[0];
+};
+struct ib_uverbs_modify_srq {
+  __u32 srq_handle;
+  __u32 attr_mask;
+  __u32 max_wr;
+  __u32 srq_limit;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_query_srq {
+  __aligned_u64 response;
+  __u32 srq_handle;
+  __u32 reserved;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_query_srq_resp {
+  __u32 max_wr;
+  __u32 max_sge;
+  __u32 srq_limit;
+  __u32 reserved;
+};
+struct ib_uverbs_destroy_srq {
+  __aligned_u64 response;
+  __u32 srq_handle;
+  __u32 reserved;
+};
+struct ib_uverbs_destroy_srq_resp {
+  __u32 events_reported;
+};
+struct ib_uverbs_ex_create_wq {
+  __u32 comp_mask;
+  __u32 wq_type;
+  __aligned_u64 user_handle;
+  __u32 pd_handle;
+  __u32 cq_handle;
+  __u32 max_wr;
+  __u32 max_sge;
+  __u32 create_flags;
+  __u32 reserved;
+};
+struct ib_uverbs_ex_create_wq_resp {
+  __u32 comp_mask;
+  __u32 response_length;
+  __u32 wq_handle;
+  __u32 max_wr;
+  __u32 max_sge;
+  __u32 wqn;
+};
+struct ib_uverbs_ex_destroy_wq {
+  __u32 comp_mask;
+  __u32 wq_handle;
+};
+struct ib_uverbs_ex_destroy_wq_resp {
+  __u32 comp_mask;
+  __u32 response_length;
+  __u32 events_reported;
+  __u32 reserved;
+};
+struct ib_uverbs_ex_modify_wq {
+  __u32 attr_mask;
+  __u32 wq_handle;
+  __u32 wq_state;
+  __u32 curr_wq_state;
+  __u32 flags;
+  __u32 flags_mask;
+};
+#define IB_USER_VERBS_MAX_LOG_IND_TBL_SIZE 0x0d
+struct ib_uverbs_ex_create_rwq_ind_table {
+  __u32 comp_mask;
+  __u32 log_ind_tbl_size;
+  __u32 wq_handles[0];
+};
+struct ib_uverbs_ex_create_rwq_ind_table_resp {
+  __u32 comp_mask;
+  __u32 response_length;
+  __u32 ind_tbl_handle;
+  __u32 ind_tbl_num;
+};
+struct ib_uverbs_ex_destroy_rwq_ind_table {
+  __u32 comp_mask;
+  __u32 ind_tbl_handle;
+};
+struct ib_uverbs_cq_moderation {
+  __u16 cq_count;
+  __u16 cq_period;
+};
+struct ib_uverbs_ex_modify_cq {
+  __u32 cq_handle;
+  __u32 attr_mask;
+  struct ib_uverbs_cq_moderation attr;
+  __u32 reserved;
+};
+#define IB_DEVICE_NAME_MAX 64
+#endif
diff --git a/i686-linux-musl/include/rdma/irdma-abi.h b/i686-linux-musl/include/rdma/irdma-abi.h
new file mode 100644
index 0000000..b6840cf
--- /dev/null
+++ b/i686-linux-musl/include/rdma/irdma-abi.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 IRDMA_ABI_H
+#define IRDMA_ABI_H
+#include <linux/types.h>
+#define IRDMA_ABI_VER 5
+enum irdma_memreg_type {
+  IRDMA_MEMREG_TYPE_MEM = 0,
+  IRDMA_MEMREG_TYPE_QP = 1,
+  IRDMA_MEMREG_TYPE_CQ = 2,
+};
+struct irdma_alloc_ucontext_req {
+  __u32 rsvd32;
+  __u8 userspace_ver;
+  __u8 rsvd8[3];
+};
+struct irdma_alloc_ucontext_resp {
+  __u32 max_pds;
+  __u32 max_qps;
+  __u32 wq_size;
+  __u8 kernel_ver;
+  __u8 rsvd[3];
+  __aligned_u64 feature_flags;
+  __aligned_u64 db_mmap_key;
+  __u32 max_hw_wq_frags;
+  __u32 max_hw_read_sges;
+  __u32 max_hw_inline;
+  __u32 max_hw_rq_quanta;
+  __u32 max_hw_wq_quanta;
+  __u32 min_hw_cq_size;
+  __u32 max_hw_cq_size;
+  __u16 max_hw_sq_chunk;
+  __u8 hw_rev;
+  __u8 rsvd2;
+};
+struct irdma_alloc_pd_resp {
+  __u32 pd_id;
+  __u8 rsvd[4];
+};
+struct irdma_resize_cq_req {
+  __aligned_u64 user_cq_buffer;
+};
+struct irdma_create_cq_req {
+  __aligned_u64 user_cq_buf;
+  __aligned_u64 user_shadow_area;
+};
+struct irdma_create_qp_req {
+  __aligned_u64 user_wqe_bufs;
+  __aligned_u64 user_compl_ctx;
+};
+struct irdma_mem_reg_req {
+  __u16 reg_type;
+  __u16 cq_pages;
+  __u16 rq_pages;
+  __u16 sq_pages;
+};
+struct irdma_modify_qp_req {
+  __u8 sq_flush;
+  __u8 rq_flush;
+  __u8 rsvd[6];
+};
+struct irdma_create_cq_resp {
+  __u32 cq_id;
+  __u32 cq_size;
+};
+struct irdma_create_qp_resp {
+  __u32 qp_id;
+  __u32 actual_sq_size;
+  __u32 actual_rq_size;
+  __u32 irdma_drv_opt;
+  __u16 push_idx;
+  __u8 lsmm;
+  __u8 rsvd;
+  __u32 qp_caps;
+};
+struct irdma_modify_qp_resp {
+  __aligned_u64 push_wqe_mmap_key;
+  __aligned_u64 push_db_mmap_key;
+  __u16 push_offset;
+  __u8 push_valid;
+  __u8 rsvd[5];
+};
+struct irdma_create_ah_resp {
+  __u32 ah_id;
+  __u8 rsvd[4];
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/mlx4-abi.h b/i686-linux-musl/include/rdma/mlx4-abi.h
new file mode 100644
index 0000000..121762b
--- /dev/null
+++ b/i686-linux-musl/include/rdma/mlx4-abi.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 MLX4_ABI_USER_H
+#define MLX4_ABI_USER_H
+#include <linux/types.h>
+#define MLX4_IB_UVERBS_NO_DEV_CAPS_ABI_VERSION 3
+#define MLX4_IB_UVERBS_ABI_VERSION 4
+struct mlx4_ib_alloc_ucontext_resp_v3 {
+  __u32 qp_tab_size;
+  __u16 bf_reg_size;
+  __u16 bf_regs_per_page;
+};
+enum {
+  MLX4_USER_DEV_CAP_LARGE_CQE = 1L << 0,
+};
+struct mlx4_ib_alloc_ucontext_resp {
+  __u32 dev_caps;
+  __u32 qp_tab_size;
+  __u16 bf_reg_size;
+  __u16 bf_regs_per_page;
+  __u32 cqe_size;
+};
+struct mlx4_ib_alloc_pd_resp {
+  __u32 pdn;
+  __u32 reserved;
+};
+struct mlx4_ib_create_cq {
+  __aligned_u64 buf_addr;
+  __aligned_u64 db_addr;
+};
+struct mlx4_ib_create_cq_resp {
+  __u32 cqn;
+  __u32 reserved;
+};
+struct mlx4_ib_resize_cq {
+  __aligned_u64 buf_addr;
+};
+struct mlx4_ib_create_srq {
+  __aligned_u64 buf_addr;
+  __aligned_u64 db_addr;
+};
+struct mlx4_ib_create_srq_resp {
+  __u32 srqn;
+  __u32 reserved;
+};
+struct mlx4_ib_create_qp_rss {
+  __aligned_u64 rx_hash_fields_mask;
+  __u8 rx_hash_function;
+  __u8 reserved[7];
+  __u8 rx_hash_key[40];
+  __u32 comp_mask;
+  __u32 reserved1;
+};
+struct mlx4_ib_create_qp {
+  __aligned_u64 buf_addr;
+  __aligned_u64 db_addr;
+  __u8 log_sq_bb_count;
+  __u8 log_sq_stride;
+  __u8 sq_no_prefetch;
+  __u8 reserved;
+  __u32 inl_recv_sz;
+};
+struct mlx4_ib_create_wq {
+  __aligned_u64 buf_addr;
+  __aligned_u64 db_addr;
+  __u8 log_range_size;
+  __u8 reserved[3];
+  __u32 comp_mask;
+};
+struct mlx4_ib_modify_wq {
+  __u32 comp_mask;
+  __u32 reserved;
+};
+struct mlx4_ib_create_rwq_ind_tbl_resp {
+  __u32 response_length;
+  __u32 reserved;
+};
+enum mlx4_ib_rx_hash_function_flags {
+  MLX4_IB_RX_HASH_FUNC_TOEPLITZ = 1 << 0,
+};
+enum mlx4_ib_rx_hash_fields {
+  MLX4_IB_RX_HASH_SRC_IPV4 = 1 << 0,
+  MLX4_IB_RX_HASH_DST_IPV4 = 1 << 1,
+  MLX4_IB_RX_HASH_SRC_IPV6 = 1 << 2,
+  MLX4_IB_RX_HASH_DST_IPV6 = 1 << 3,
+  MLX4_IB_RX_HASH_SRC_PORT_TCP = 1 << 4,
+  MLX4_IB_RX_HASH_DST_PORT_TCP = 1 << 5,
+  MLX4_IB_RX_HASH_SRC_PORT_UDP = 1 << 6,
+  MLX4_IB_RX_HASH_DST_PORT_UDP = 1 << 7,
+  MLX4_IB_RX_HASH_INNER = 1ULL << 31,
+};
+struct mlx4_ib_rss_caps {
+  __aligned_u64 rx_hash_fields_mask;
+  __u8 rx_hash_function;
+  __u8 reserved[7];
+};
+enum query_device_resp_mask {
+  MLX4_IB_QUERY_DEV_RESP_MASK_CORE_CLOCK_OFFSET = 1UL << 0,
+};
+struct mlx4_ib_tso_caps {
+  __u32 max_tso;
+  __u32 supported_qpts;
+};
+struct mlx4_uverbs_ex_query_device_resp {
+  __u32 comp_mask;
+  __u32 response_length;
+  __aligned_u64 hca_core_clock_offset;
+  __u32 max_inl_recv_sz;
+  __u32 reserved;
+  struct mlx4_ib_rss_caps rss_caps;
+  struct mlx4_ib_tso_caps tso_caps;
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/mlx5-abi.h b/i686-linux-musl/include/rdma/mlx5-abi.h
new file mode 100644
index 0000000..aadb20e
--- /dev/null
+++ b/i686-linux-musl/include/rdma/mlx5-abi.h
@@ -0,0 +1,397 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef MLX5_ABI_USER_H
+#define MLX5_ABI_USER_H
+#include <linux/types.h>
+#include <linux/if_ether.h>
+#include <rdma/ib_user_ioctl_verbs.h>
+enum {
+  MLX5_QP_FLAG_SIGNATURE = 1 << 0,
+  MLX5_QP_FLAG_SCATTER_CQE = 1 << 1,
+  MLX5_QP_FLAG_TUNNEL_OFFLOADS = 1 << 2,
+  MLX5_QP_FLAG_BFREG_INDEX = 1 << 3,
+  MLX5_QP_FLAG_TYPE_DCT = 1 << 4,
+  MLX5_QP_FLAG_TYPE_DCI = 1 << 5,
+  MLX5_QP_FLAG_TIR_ALLOW_SELF_LB_UC = 1 << 6,
+  MLX5_QP_FLAG_TIR_ALLOW_SELF_LB_MC = 1 << 7,
+  MLX5_QP_FLAG_ALLOW_SCATTER_CQE = 1 << 8,
+  MLX5_QP_FLAG_PACKET_BASED_CREDIT_MODE = 1 << 9,
+  MLX5_QP_FLAG_UAR_PAGE_INDEX = 1 << 10,
+  MLX5_QP_FLAG_DCI_STREAM = 1 << 11,
+};
+enum {
+  MLX5_SRQ_FLAG_SIGNATURE = 1 << 0,
+};
+enum {
+  MLX5_WQ_FLAG_SIGNATURE = 1 << 0,
+};
+#define MLX5_IB_UVERBS_ABI_VERSION 1
+struct mlx5_ib_alloc_ucontext_req {
+  __u32 total_num_bfregs;
+  __u32 num_low_latency_bfregs;
+};
+enum mlx5_lib_caps {
+  MLX5_LIB_CAP_4K_UAR = (__u64) 1 << 0,
+  MLX5_LIB_CAP_DYN_UAR = (__u64) 1 << 1,
+};
+enum mlx5_ib_alloc_uctx_v2_flags {
+  MLX5_IB_ALLOC_UCTX_DEVX = 1 << 0,
+};
+struct mlx5_ib_alloc_ucontext_req_v2 {
+  __u32 total_num_bfregs;
+  __u32 num_low_latency_bfregs;
+  __u32 flags;
+  __u32 comp_mask;
+  __u8 max_cqe_version;
+  __u8 reserved0;
+  __u16 reserved1;
+  __u32 reserved2;
+  __aligned_u64 lib_caps;
+};
+enum mlx5_ib_alloc_ucontext_resp_mask {
+  MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_CORE_CLOCK_OFFSET = 1UL << 0,
+  MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_DUMP_FILL_MKEY = 1UL << 1,
+  MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_ECE = 1UL << 2,
+  MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_SQD2RTS = 1UL << 3,
+  MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_REAL_TIME_TS = 1UL << 4,
+};
+enum mlx5_user_cmds_supp_uhw {
+  MLX5_USER_CMDS_SUPP_UHW_QUERY_DEVICE = 1 << 0,
+  MLX5_USER_CMDS_SUPP_UHW_CREATE_AH = 1 << 1,
+};
+enum mlx5_user_inline_mode {
+  MLX5_USER_INLINE_MODE_NA,
+  MLX5_USER_INLINE_MODE_NONE,
+  MLX5_USER_INLINE_MODE_L2,
+  MLX5_USER_INLINE_MODE_IP,
+  MLX5_USER_INLINE_MODE_TCP_UDP,
+};
+enum {
+  MLX5_USER_ALLOC_UCONTEXT_FLOW_ACTION_FLAGS_ESP_AES_GCM = 1 << 0,
+  MLX5_USER_ALLOC_UCONTEXT_FLOW_ACTION_FLAGS_ESP_AES_GCM_REQ_METADATA = 1 << 1,
+  MLX5_USER_ALLOC_UCONTEXT_FLOW_ACTION_FLAGS_ESP_AES_GCM_SPI_STEERING = 1 << 2,
+  MLX5_USER_ALLOC_UCONTEXT_FLOW_ACTION_FLAGS_ESP_AES_GCM_FULL_OFFLOAD = 1 << 3,
+  MLX5_USER_ALLOC_UCONTEXT_FLOW_ACTION_FLAGS_ESP_AES_GCM_TX_IV_IS_ESN = 1 << 4,
+};
+struct mlx5_ib_alloc_ucontext_resp {
+  __u32 qp_tab_size;
+  __u32 bf_reg_size;
+  __u32 tot_bfregs;
+  __u32 cache_line_size;
+  __u16 max_sq_desc_sz;
+  __u16 max_rq_desc_sz;
+  __u32 max_send_wqebb;
+  __u32 max_recv_wr;
+  __u32 max_srq_recv_wr;
+  __u16 num_ports;
+  __u16 flow_action_flags;
+  __u32 comp_mask;
+  __u32 response_length;
+  __u8 cqe_version;
+  __u8 cmds_supp_uhw;
+  __u8 eth_min_inline;
+  __u8 clock_info_versions;
+  __aligned_u64 hca_core_clock_offset;
+  __u32 log_uar_size;
+  __u32 num_uars_per_page;
+  __u32 num_dyn_bfregs;
+  __u32 dump_fill_mkey;
+};
+struct mlx5_ib_alloc_pd_resp {
+  __u32 pdn;
+};
+struct mlx5_ib_tso_caps {
+  __u32 max_tso;
+  __u32 supported_qpts;
+};
+struct mlx5_ib_rss_caps {
+  __aligned_u64 rx_hash_fields_mask;
+  __u8 rx_hash_function;
+  __u8 reserved[7];
+};
+enum mlx5_ib_cqe_comp_res_format {
+  MLX5_IB_CQE_RES_FORMAT_HASH = 1 << 0,
+  MLX5_IB_CQE_RES_FORMAT_CSUM = 1 << 1,
+  MLX5_IB_CQE_RES_FORMAT_CSUM_STRIDX = 1 << 2,
+};
+struct mlx5_ib_cqe_comp_caps {
+  __u32 max_num;
+  __u32 supported_format;
+};
+enum mlx5_ib_packet_pacing_cap_flags {
+  MLX5_IB_PP_SUPPORT_BURST = 1 << 0,
+};
+struct mlx5_packet_pacing_caps {
+  __u32 qp_rate_limit_min;
+  __u32 qp_rate_limit_max;
+  __u32 supported_qpts;
+  __u8 cap_flags;
+  __u8 reserved[3];
+};
+enum mlx5_ib_mpw_caps {
+  MPW_RESERVED = 1 << 0,
+  MLX5_IB_ALLOW_MPW = 1 << 1,
+  MLX5_IB_SUPPORT_EMPW = 1 << 2,
+};
+enum mlx5_ib_sw_parsing_offloads {
+  MLX5_IB_SW_PARSING = 1 << 0,
+  MLX5_IB_SW_PARSING_CSUM = 1 << 1,
+  MLX5_IB_SW_PARSING_LSO = 1 << 2,
+};
+struct mlx5_ib_sw_parsing_caps {
+  __u32 sw_parsing_offloads;
+  __u32 supported_qpts;
+};
+struct mlx5_ib_striding_rq_caps {
+  __u32 min_single_stride_log_num_of_bytes;
+  __u32 max_single_stride_log_num_of_bytes;
+  __u32 min_single_wqe_log_num_of_strides;
+  __u32 max_single_wqe_log_num_of_strides;
+  __u32 supported_qpts;
+  __u32 reserved;
+};
+struct mlx5_ib_dci_streams_caps {
+  __u8 max_log_num_concurent;
+  __u8 max_log_num_errored;
+};
+enum mlx5_ib_query_dev_resp_flags {
+  MLX5_IB_QUERY_DEV_RESP_FLAGS_CQE_128B_COMP = 1 << 0,
+  MLX5_IB_QUERY_DEV_RESP_FLAGS_CQE_128B_PAD = 1 << 1,
+  MLX5_IB_QUERY_DEV_RESP_PACKET_BASED_CREDIT_MODE = 1 << 2,
+  MLX5_IB_QUERY_DEV_RESP_FLAGS_SCAT2CQE_DCT = 1 << 3,
+};
+enum mlx5_ib_tunnel_offloads {
+  MLX5_IB_TUNNELED_OFFLOADS_VXLAN = 1 << 0,
+  MLX5_IB_TUNNELED_OFFLOADS_GRE = 1 << 1,
+  MLX5_IB_TUNNELED_OFFLOADS_GENEVE = 1 << 2,
+  MLX5_IB_TUNNELED_OFFLOADS_MPLS_GRE = 1 << 3,
+  MLX5_IB_TUNNELED_OFFLOADS_MPLS_UDP = 1 << 4,
+};
+struct mlx5_ib_query_device_resp {
+  __u32 comp_mask;
+  __u32 response_length;
+  struct mlx5_ib_tso_caps tso_caps;
+  struct mlx5_ib_rss_caps rss_caps;
+  struct mlx5_ib_cqe_comp_caps cqe_comp_caps;
+  struct mlx5_packet_pacing_caps packet_pacing_caps;
+  __u32 mlx5_ib_support_multi_pkt_send_wqes;
+  __u32 flags;
+  struct mlx5_ib_sw_parsing_caps sw_parsing_caps;
+  struct mlx5_ib_striding_rq_caps striding_rq_caps;
+  __u32 tunnel_offloads_caps;
+  struct mlx5_ib_dci_streams_caps dci_streams_caps;
+  __u16 reserved;
+};
+enum mlx5_ib_create_cq_flags {
+  MLX5_IB_CREATE_CQ_FLAGS_CQE_128B_PAD = 1 << 0,
+  MLX5_IB_CREATE_CQ_FLAGS_UAR_PAGE_INDEX = 1 << 1,
+  MLX5_IB_CREATE_CQ_FLAGS_REAL_TIME_TS = 1 << 2,
+};
+struct mlx5_ib_create_cq {
+  __aligned_u64 buf_addr;
+  __aligned_u64 db_addr;
+  __u32 cqe_size;
+  __u8 cqe_comp_en;
+  __u8 cqe_comp_res_format;
+  __u16 flags;
+  __u16 uar_page_index;
+  __u16 reserved0;
+  __u32 reserved1;
+};
+struct mlx5_ib_create_cq_resp {
+  __u32 cqn;
+  __u32 reserved;
+};
+struct mlx5_ib_resize_cq {
+  __aligned_u64 buf_addr;
+  __u16 cqe_size;
+  __u16 reserved0;
+  __u32 reserved1;
+};
+struct mlx5_ib_create_srq {
+  __aligned_u64 buf_addr;
+  __aligned_u64 db_addr;
+  __u32 flags;
+  __u32 reserved0;
+  __u32 uidx;
+  __u32 reserved1;
+};
+struct mlx5_ib_create_srq_resp {
+  __u32 srqn;
+  __u32 reserved;
+};
+struct mlx5_ib_create_qp_dci_streams {
+  __u8 log_num_concurent;
+  __u8 log_num_errored;
+};
+struct mlx5_ib_create_qp {
+  __aligned_u64 buf_addr;
+  __aligned_u64 db_addr;
+  __u32 sq_wqe_count;
+  __u32 rq_wqe_count;
+  __u32 rq_wqe_shift;
+  __u32 flags;
+  __u32 uidx;
+  __u32 bfreg_index;
+  union {
+    __aligned_u64 sq_buf_addr;
+    __aligned_u64 access_key;
+  };
+  __u32 ece_options;
+  struct mlx5_ib_create_qp_dci_streams dci_streams;
+  __u16 reserved;
+};
+enum mlx5_rx_hash_function_flags {
+  MLX5_RX_HASH_FUNC_TOEPLITZ = 1 << 0,
+};
+enum mlx5_rx_hash_fields {
+  MLX5_RX_HASH_SRC_IPV4 = 1 << 0,
+  MLX5_RX_HASH_DST_IPV4 = 1 << 1,
+  MLX5_RX_HASH_SRC_IPV6 = 1 << 2,
+  MLX5_RX_HASH_DST_IPV6 = 1 << 3,
+  MLX5_RX_HASH_SRC_PORT_TCP = 1 << 4,
+  MLX5_RX_HASH_DST_PORT_TCP = 1 << 5,
+  MLX5_RX_HASH_SRC_PORT_UDP = 1 << 6,
+  MLX5_RX_HASH_DST_PORT_UDP = 1 << 7,
+  MLX5_RX_HASH_IPSEC_SPI = 1 << 8,
+  MLX5_RX_HASH_INNER = (1UL << 31),
+};
+struct mlx5_ib_create_qp_rss {
+  __aligned_u64 rx_hash_fields_mask;
+  __u8 rx_hash_function;
+  __u8 rx_key_len;
+  __u8 reserved[6];
+  __u8 rx_hash_key[128];
+  __u32 comp_mask;
+  __u32 flags;
+};
+enum mlx5_ib_create_qp_resp_mask {
+  MLX5_IB_CREATE_QP_RESP_MASK_TIRN = 1UL << 0,
+  MLX5_IB_CREATE_QP_RESP_MASK_TISN = 1UL << 1,
+  MLX5_IB_CREATE_QP_RESP_MASK_RQN = 1UL << 2,
+  MLX5_IB_CREATE_QP_RESP_MASK_SQN = 1UL << 3,
+  MLX5_IB_CREATE_QP_RESP_MASK_TIR_ICM_ADDR = 1UL << 4,
+};
+struct mlx5_ib_create_qp_resp {
+  __u32 bfreg_index;
+  __u32 ece_options;
+  __u32 comp_mask;
+  __u32 tirn;
+  __u32 tisn;
+  __u32 rqn;
+  __u32 sqn;
+  __u32 reserved1;
+  __u64 tir_icm_addr;
+};
+struct mlx5_ib_alloc_mw {
+  __u32 comp_mask;
+  __u8 num_klms;
+  __u8 reserved1;
+  __u16 reserved2;
+};
+enum mlx5_ib_create_wq_mask {
+  MLX5_IB_CREATE_WQ_STRIDING_RQ = (1 << 0),
+};
+struct mlx5_ib_create_wq {
+  __aligned_u64 buf_addr;
+  __aligned_u64 db_addr;
+  __u32 rq_wqe_count;
+  __u32 rq_wqe_shift;
+  __u32 user_index;
+  __u32 flags;
+  __u32 comp_mask;
+  __u32 single_stride_log_num_of_bytes;
+  __u32 single_wqe_log_num_of_strides;
+  __u32 two_byte_shift_en;
+};
+struct mlx5_ib_create_ah_resp {
+  __u32 response_length;
+  __u8 dmac[ETH_ALEN];
+  __u8 reserved[6];
+};
+struct mlx5_ib_burst_info {
+  __u32 max_burst_sz;
+  __u16 typical_pkt_sz;
+  __u16 reserved;
+};
+struct mlx5_ib_modify_qp {
+  __u32 comp_mask;
+  struct mlx5_ib_burst_info burst_info;
+  __u32 ece_options;
+};
+struct mlx5_ib_modify_qp_resp {
+  __u32 response_length;
+  __u32 dctn;
+  __u32 ece_options;
+  __u32 reserved;
+};
+struct mlx5_ib_create_wq_resp {
+  __u32 response_length;
+  __u32 reserved;
+};
+struct mlx5_ib_create_rwq_ind_tbl_resp {
+  __u32 response_length;
+  __u32 reserved;
+};
+struct mlx5_ib_modify_wq {
+  __u32 comp_mask;
+  __u32 reserved;
+};
+struct mlx5_ib_clock_info {
+  __u32 sign;
+  __u32 resv;
+  __aligned_u64 nsec;
+  __aligned_u64 cycles;
+  __aligned_u64 frac;
+  __u32 mult;
+  __u32 shift;
+  __aligned_u64 mask;
+  __aligned_u64 overflow_period;
+};
+enum mlx5_ib_mmap_cmd {
+  MLX5_IB_MMAP_REGULAR_PAGE = 0,
+  MLX5_IB_MMAP_GET_CONTIGUOUS_PAGES = 1,
+  MLX5_IB_MMAP_WC_PAGE = 2,
+  MLX5_IB_MMAP_NC_PAGE = 3,
+  MLX5_IB_MMAP_CORE_CLOCK = 5,
+  MLX5_IB_MMAP_ALLOC_WC = 6,
+  MLX5_IB_MMAP_CLOCK_INFO = 7,
+  MLX5_IB_MMAP_DEVICE_MEM = 8,
+};
+enum {
+  MLX5_IB_CLOCK_INFO_KERNEL_UPDATING = 1,
+};
+enum {
+  MLX5_IB_CLOCK_INFO_V1 = 0,
+};
+struct mlx5_ib_flow_counters_desc {
+  __u32 description;
+  __u32 index;
+};
+struct mlx5_ib_flow_counters_data {
+  RDMA_UAPI_PTR(struct mlx5_ib_flow_counters_desc *, counters_data);
+  __u32 ncounters;
+  __u32 reserved;
+};
+struct mlx5_ib_create_flow {
+  __u32 ncounters_data;
+  __u32 reserved;
+  struct mlx5_ib_flow_counters_data data[];
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/mlx5_user_ioctl_cmds.h b/i686-linux-musl/include/rdma/mlx5_user_ioctl_cmds.h
new file mode 100644
index 0000000..dad5c17
--- /dev/null
+++ b/i686-linux-musl/include/rdma/mlx5_user_ioctl_cmds.h
@@ -0,0 +1,263 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef MLX5_USER_IOCTL_CMDS_H
+#define MLX5_USER_IOCTL_CMDS_H
+#include <linux/types.h>
+#include <rdma/ib_user_ioctl_cmds.h>
+enum mlx5_ib_create_flow_action_attrs {
+  MLX5_IB_ATTR_CREATE_FLOW_ACTION_FLAGS = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_dm_methods {
+  MLX5_IB_METHOD_DM_MAP_OP_ADDR = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_DM_QUERY,
+};
+enum mlx5_ib_dm_map_op_addr_attrs {
+  MLX5_IB_ATTR_DM_MAP_OP_ADDR_REQ_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DM_MAP_OP_ADDR_REQ_OP,
+  MLX5_IB_ATTR_DM_MAP_OP_ADDR_RESP_START_OFFSET,
+  MLX5_IB_ATTR_DM_MAP_OP_ADDR_RESP_PAGE_INDEX,
+};
+enum mlx5_ib_query_dm_attrs {
+  MLX5_IB_ATTR_QUERY_DM_REQ_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_QUERY_DM_RESP_START_OFFSET,
+  MLX5_IB_ATTR_QUERY_DM_RESP_PAGE_INDEX,
+  MLX5_IB_ATTR_QUERY_DM_RESP_LENGTH,
+};
+enum mlx5_ib_alloc_dm_attrs {
+  MLX5_IB_ATTR_ALLOC_DM_RESP_START_OFFSET = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_ALLOC_DM_RESP_PAGE_INDEX,
+  MLX5_IB_ATTR_ALLOC_DM_REQ_TYPE,
+};
+enum mlx5_ib_devx_methods {
+  MLX5_IB_METHOD_DEVX_OTHER = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_DEVX_QUERY_UAR,
+  MLX5_IB_METHOD_DEVX_QUERY_EQN,
+  MLX5_IB_METHOD_DEVX_SUBSCRIBE_EVENT,
+};
+enum mlx5_ib_devx_other_attrs {
+  MLX5_IB_ATTR_DEVX_OTHER_CMD_IN = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DEVX_OTHER_CMD_OUT,
+};
+enum mlx5_ib_devx_obj_create_attrs {
+  MLX5_IB_ATTR_DEVX_OBJ_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DEVX_OBJ_CREATE_CMD_IN,
+  MLX5_IB_ATTR_DEVX_OBJ_CREATE_CMD_OUT,
+};
+enum mlx5_ib_devx_query_uar_attrs {
+  MLX5_IB_ATTR_DEVX_QUERY_UAR_USER_IDX = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DEVX_QUERY_UAR_DEV_IDX,
+};
+enum mlx5_ib_devx_obj_destroy_attrs {
+  MLX5_IB_ATTR_DEVX_OBJ_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_devx_obj_modify_attrs {
+  MLX5_IB_ATTR_DEVX_OBJ_MODIFY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DEVX_OBJ_MODIFY_CMD_IN,
+  MLX5_IB_ATTR_DEVX_OBJ_MODIFY_CMD_OUT,
+};
+enum mlx5_ib_devx_obj_query_attrs {
+  MLX5_IB_ATTR_DEVX_OBJ_QUERY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DEVX_OBJ_QUERY_CMD_IN,
+  MLX5_IB_ATTR_DEVX_OBJ_QUERY_CMD_OUT,
+};
+enum mlx5_ib_devx_obj_query_async_attrs {
+  MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_CMD_IN,
+  MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_FD,
+  MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_WR_ID,
+  MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_OUT_LEN,
+};
+enum mlx5_ib_devx_subscribe_event_attrs {
+  MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_FD_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_OBJ_HANDLE,
+  MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_TYPE_NUM_LIST,
+  MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_FD_NUM,
+  MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_COOKIE,
+};
+enum mlx5_ib_devx_query_eqn_attrs {
+  MLX5_IB_ATTR_DEVX_QUERY_EQN_USER_VEC = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DEVX_QUERY_EQN_DEV_EQN,
+};
+enum mlx5_ib_devx_obj_methods {
+  MLX5_IB_METHOD_DEVX_OBJ_CREATE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_DEVX_OBJ_DESTROY,
+  MLX5_IB_METHOD_DEVX_OBJ_MODIFY,
+  MLX5_IB_METHOD_DEVX_OBJ_QUERY,
+  MLX5_IB_METHOD_DEVX_OBJ_ASYNC_QUERY,
+};
+enum mlx5_ib_var_alloc_attrs {
+  MLX5_IB_ATTR_VAR_OBJ_ALLOC_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_VAR_OBJ_ALLOC_MMAP_OFFSET,
+  MLX5_IB_ATTR_VAR_OBJ_ALLOC_MMAP_LENGTH,
+  MLX5_IB_ATTR_VAR_OBJ_ALLOC_PAGE_ID,
+};
+enum mlx5_ib_var_obj_destroy_attrs {
+  MLX5_IB_ATTR_VAR_OBJ_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_var_obj_methods {
+  MLX5_IB_METHOD_VAR_OBJ_ALLOC = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_VAR_OBJ_DESTROY,
+};
+enum mlx5_ib_uar_alloc_attrs {
+  MLX5_IB_ATTR_UAR_OBJ_ALLOC_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_UAR_OBJ_ALLOC_TYPE,
+  MLX5_IB_ATTR_UAR_OBJ_ALLOC_MMAP_OFFSET,
+  MLX5_IB_ATTR_UAR_OBJ_ALLOC_MMAP_LENGTH,
+  MLX5_IB_ATTR_UAR_OBJ_ALLOC_PAGE_ID,
+};
+enum mlx5_ib_uar_obj_destroy_attrs {
+  MLX5_IB_ATTR_UAR_OBJ_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_uar_obj_methods {
+  MLX5_IB_METHOD_UAR_OBJ_ALLOC = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_UAR_OBJ_DESTROY,
+};
+enum mlx5_ib_devx_umem_reg_attrs {
+  MLX5_IB_ATTR_DEVX_UMEM_REG_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DEVX_UMEM_REG_ADDR,
+  MLX5_IB_ATTR_DEVX_UMEM_REG_LEN,
+  MLX5_IB_ATTR_DEVX_UMEM_REG_ACCESS,
+  MLX5_IB_ATTR_DEVX_UMEM_REG_OUT_ID,
+  MLX5_IB_ATTR_DEVX_UMEM_REG_PGSZ_BITMAP,
+};
+enum mlx5_ib_devx_umem_dereg_attrs {
+  MLX5_IB_ATTR_DEVX_UMEM_DEREG_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_pp_obj_methods {
+  MLX5_IB_METHOD_PP_OBJ_ALLOC = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_PP_OBJ_DESTROY,
+};
+enum mlx5_ib_pp_alloc_attrs {
+  MLX5_IB_ATTR_PP_OBJ_ALLOC_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_PP_OBJ_ALLOC_CTX,
+  MLX5_IB_ATTR_PP_OBJ_ALLOC_FLAGS,
+  MLX5_IB_ATTR_PP_OBJ_ALLOC_INDEX,
+};
+enum mlx5_ib_pp_obj_destroy_attrs {
+  MLX5_IB_ATTR_PP_OBJ_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_devx_umem_methods {
+  MLX5_IB_METHOD_DEVX_UMEM_REG = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_DEVX_UMEM_DEREG,
+};
+enum mlx5_ib_devx_async_cmd_fd_alloc_attrs {
+  MLX5_IB_ATTR_DEVX_ASYNC_CMD_FD_ALLOC_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_devx_async_event_fd_alloc_attrs {
+  MLX5_IB_ATTR_DEVX_ASYNC_EVENT_FD_ALLOC_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DEVX_ASYNC_EVENT_FD_ALLOC_FLAGS,
+};
+enum mlx5_ib_devx_async_cmd_fd_methods {
+  MLX5_IB_METHOD_DEVX_ASYNC_CMD_FD_ALLOC = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_devx_async_event_fd_methods {
+  MLX5_IB_METHOD_DEVX_ASYNC_EVENT_FD_ALLOC = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_objects {
+  MLX5_IB_OBJECT_DEVX = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_OBJECT_DEVX_OBJ,
+  MLX5_IB_OBJECT_DEVX_UMEM,
+  MLX5_IB_OBJECT_FLOW_MATCHER,
+  MLX5_IB_OBJECT_DEVX_ASYNC_CMD_FD,
+  MLX5_IB_OBJECT_DEVX_ASYNC_EVENT_FD,
+  MLX5_IB_OBJECT_VAR,
+  MLX5_IB_OBJECT_PP,
+  MLX5_IB_OBJECT_UAR,
+};
+enum mlx5_ib_flow_matcher_create_attrs {
+  MLX5_IB_ATTR_FLOW_MATCHER_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_FLOW_MATCHER_MATCH_MASK,
+  MLX5_IB_ATTR_FLOW_MATCHER_FLOW_TYPE,
+  MLX5_IB_ATTR_FLOW_MATCHER_MATCH_CRITERIA,
+  MLX5_IB_ATTR_FLOW_MATCHER_FLOW_FLAGS,
+  MLX5_IB_ATTR_FLOW_MATCHER_FT_TYPE,
+};
+enum mlx5_ib_flow_matcher_destroy_attrs {
+  MLX5_IB_ATTR_FLOW_MATCHER_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_flow_matcher_methods {
+  MLX5_IB_METHOD_FLOW_MATCHER_CREATE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_FLOW_MATCHER_DESTROY,
+};
+enum mlx5_ib_device_query_context_attrs {
+  MLX5_IB_ATTR_QUERY_CONTEXT_RESP_UCTX = (1U << UVERBS_ID_NS_SHIFT),
+};
+#define MLX5_IB_DW_MATCH_PARAM 0x90
+struct mlx5_ib_match_params {
+  __u32 match_params[MLX5_IB_DW_MATCH_PARAM];
+};
+enum mlx5_ib_flow_type {
+  MLX5_IB_FLOW_TYPE_NORMAL,
+  MLX5_IB_FLOW_TYPE_SNIFFER,
+  MLX5_IB_FLOW_TYPE_ALL_DEFAULT,
+  MLX5_IB_FLOW_TYPE_MC_DEFAULT,
+};
+enum mlx5_ib_create_flow_flags {
+  MLX5_IB_ATTR_CREATE_FLOW_FLAGS_DEFAULT_MISS = 1 << 0,
+  MLX5_IB_ATTR_CREATE_FLOW_FLAGS_DROP = 1 << 1,
+};
+enum mlx5_ib_create_flow_attrs {
+  MLX5_IB_ATTR_CREATE_FLOW_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_CREATE_FLOW_MATCH_VALUE,
+  MLX5_IB_ATTR_CREATE_FLOW_DEST_QP,
+  MLX5_IB_ATTR_CREATE_FLOW_DEST_DEVX,
+  MLX5_IB_ATTR_CREATE_FLOW_MATCHER,
+  MLX5_IB_ATTR_CREATE_FLOW_ARR_FLOW_ACTIONS,
+  MLX5_IB_ATTR_CREATE_FLOW_TAG,
+  MLX5_IB_ATTR_CREATE_FLOW_ARR_COUNTERS_DEVX,
+  MLX5_IB_ATTR_CREATE_FLOW_ARR_COUNTERS_DEVX_OFFSET,
+  MLX5_IB_ATTR_CREATE_FLOW_FLAGS,
+};
+enum mlx5_ib_destroy_flow_attrs {
+  MLX5_IB_ATTR_DESTROY_FLOW_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_flow_methods {
+  MLX5_IB_METHOD_CREATE_FLOW = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_DESTROY_FLOW,
+};
+enum mlx5_ib_flow_action_methods {
+  MLX5_IB_METHOD_FLOW_ACTION_CREATE_MODIFY_HEADER = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_FLOW_ACTION_CREATE_PACKET_REFORMAT,
+};
+enum mlx5_ib_create_flow_action_create_modify_header_attrs {
+  MLX5_IB_ATTR_CREATE_MODIFY_HEADER_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_CREATE_MODIFY_HEADER_ACTIONS_PRM,
+  MLX5_IB_ATTR_CREATE_MODIFY_HEADER_FT_TYPE,
+};
+enum mlx5_ib_create_flow_action_create_packet_reformat_attrs {
+  MLX5_IB_ATTR_CREATE_PACKET_REFORMAT_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_CREATE_PACKET_REFORMAT_TYPE,
+  MLX5_IB_ATTR_CREATE_PACKET_REFORMAT_FT_TYPE,
+  MLX5_IB_ATTR_CREATE_PACKET_REFORMAT_DATA_BUF,
+};
+enum mlx5_ib_query_pd_attrs {
+  MLX5_IB_ATTR_QUERY_PD_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_QUERY_PD_RESP_PDN,
+};
+enum mlx5_ib_pd_methods {
+  MLX5_IB_METHOD_PD_QUERY = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_device_methods {
+  MLX5_IB_METHOD_QUERY_PORT = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_query_port_attrs {
+  MLX5_IB_ATTR_QUERY_PORT_PORT_NUM = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_QUERY_PORT,
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/mlx5_user_ioctl_verbs.h b/i686-linux-musl/include/rdma/mlx5_user_ioctl_verbs.h
new file mode 100644
index 0000000..c3c3f89
--- /dev/null
+++ b/i686-linux-musl/include/rdma/mlx5_user_ioctl_verbs.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 MLX5_USER_IOCTL_VERBS_H
+#define MLX5_USER_IOCTL_VERBS_H
+#include <linux/types.h>
+enum mlx5_ib_uapi_flow_action_flags {
+  MLX5_IB_UAPI_FLOW_ACTION_FLAGS_REQUIRE_METADATA = 1 << 0,
+};
+enum mlx5_ib_uapi_flow_table_type {
+  MLX5_IB_UAPI_FLOW_TABLE_TYPE_NIC_RX = 0x0,
+  MLX5_IB_UAPI_FLOW_TABLE_TYPE_NIC_TX = 0x1,
+  MLX5_IB_UAPI_FLOW_TABLE_TYPE_FDB = 0x2,
+  MLX5_IB_UAPI_FLOW_TABLE_TYPE_RDMA_RX = 0x3,
+  MLX5_IB_UAPI_FLOW_TABLE_TYPE_RDMA_TX = 0x4,
+};
+enum mlx5_ib_uapi_flow_action_packet_reformat_type {
+  MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L2_TUNNEL_TO_L2 = 0x0,
+  MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L2_TO_L2_TUNNEL = 0x1,
+  MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L3_TUNNEL_TO_L2 = 0x2,
+  MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L2_TO_L3_TUNNEL = 0x3,
+};
+struct mlx5_ib_uapi_devx_async_cmd_hdr {
+  __aligned_u64 wr_id;
+  __u8 out_data[];
+};
+enum mlx5_ib_uapi_dm_type {
+  MLX5_IB_UAPI_DM_TYPE_MEMIC,
+  MLX5_IB_UAPI_DM_TYPE_STEERING_SW_ICM,
+  MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_SW_ICM,
+};
+enum mlx5_ib_uapi_devx_create_event_channel_flags {
+  MLX5_IB_UAPI_DEVX_CR_EV_CH_FLAGS_OMIT_DATA = 1 << 0,
+};
+struct mlx5_ib_uapi_devx_async_event_hdr {
+  __aligned_u64 cookie;
+  __u8 out_data[];
+};
+enum mlx5_ib_uapi_pp_alloc_flags {
+  MLX5_IB_UAPI_PP_ALLOC_FLAGS_DEDICATED_INDEX = 1 << 0,
+};
+enum mlx5_ib_uapi_uar_alloc_type {
+  MLX5_IB_UAPI_UAR_ALLOC_TYPE_BF = 0x0,
+  MLX5_IB_UAPI_UAR_ALLOC_TYPE_NC = 0x1,
+};
+enum mlx5_ib_uapi_query_port_flags {
+  MLX5_IB_UAPI_QUERY_PORT_VPORT = 1 << 0,
+  MLX5_IB_UAPI_QUERY_PORT_VPORT_VHCA_ID = 1 << 1,
+  MLX5_IB_UAPI_QUERY_PORT_VPORT_STEERING_ICM_RX = 1 << 2,
+  MLX5_IB_UAPI_QUERY_PORT_VPORT_STEERING_ICM_TX = 1 << 3,
+  MLX5_IB_UAPI_QUERY_PORT_VPORT_REG_C0 = 1 << 4,
+  MLX5_IB_UAPI_QUERY_PORT_ESW_OWNER_VHCA_ID = 1 << 5,
+};
+struct mlx5_ib_uapi_reg {
+  __u32 value;
+  __u32 mask;
+};
+struct mlx5_ib_uapi_query_port {
+  __aligned_u64 flags;
+  __u16 vport;
+  __u16 vport_vhca_id;
+  __u16 esw_owner_vhca_id;
+  __u16 rsvd0;
+  __aligned_u64 vport_steering_icm_rx;
+  __aligned_u64 vport_steering_icm_tx;
+  struct mlx5_ib_uapi_reg reg_c0;
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/mthca-abi.h b/i686-linux-musl/include/rdma/mthca-abi.h
new file mode 100644
index 0000000..86224f2
--- /dev/null
+++ b/i686-linux-musl/include/rdma/mthca-abi.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 MTHCA_ABI_USER_H
+#define MTHCA_ABI_USER_H
+#include <linux/types.h>
+#define MTHCA_UVERBS_ABI_VERSION 1
+struct mthca_alloc_ucontext_resp {
+  __u32 qp_tab_size;
+  __u32 uarc_size;
+};
+struct mthca_alloc_pd_resp {
+  __u32 pdn;
+  __u32 reserved;
+};
+#define MTHCA_MR_DMASYNC 0x1
+struct mthca_reg_mr {
+  __u32 mr_attrs;
+  __u32 reserved;
+};
+struct mthca_create_cq {
+  __u32 lkey;
+  __u32 pdn;
+  __aligned_u64 arm_db_page;
+  __aligned_u64 set_db_page;
+  __u32 arm_db_index;
+  __u32 set_db_index;
+};
+struct mthca_create_cq_resp {
+  __u32 cqn;
+  __u32 reserved;
+};
+struct mthca_resize_cq {
+  __u32 lkey;
+  __u32 reserved;
+};
+struct mthca_create_srq {
+  __u32 lkey;
+  __u32 db_index;
+  __aligned_u64 db_page;
+};
+struct mthca_create_srq_resp {
+  __u32 srqn;
+  __u32 reserved;
+};
+struct mthca_create_qp {
+  __u32 lkey;
+  __u32 reserved;
+  __aligned_u64 sq_db_page;
+  __aligned_u64 rq_db_page;
+  __u32 sq_db_index;
+  __u32 rq_db_index;
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/ocrdma-abi.h b/i686-linux-musl/include/rdma/ocrdma-abi.h
new file mode 100644
index 0000000..007f0e1
--- /dev/null
+++ b/i686-linux-musl/include/rdma/ocrdma-abi.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 OCRDMA_ABI_USER_H
+#define OCRDMA_ABI_USER_H
+#include <linux/types.h>
+#define OCRDMA_ABI_VERSION 2
+#define OCRDMA_BE_ROCE_ABI_VERSION 1
+struct ocrdma_alloc_ucontext_resp {
+  __u32 dev_id;
+  __u32 wqe_size;
+  __u32 max_inline_data;
+  __u32 dpp_wqe_size;
+  __aligned_u64 ah_tbl_page;
+  __u32 ah_tbl_len;
+  __u32 rqe_size;
+  __u8 fw_ver[32];
+  __aligned_u64 rsvd1;
+  __aligned_u64 rsvd2;
+};
+struct ocrdma_alloc_pd_ureq {
+  __u32 rsvd[2];
+};
+struct ocrdma_alloc_pd_uresp {
+  __u32 id;
+  __u32 dpp_enabled;
+  __u32 dpp_page_addr_hi;
+  __u32 dpp_page_addr_lo;
+  __u32 rsvd[2];
+};
+struct ocrdma_create_cq_ureq {
+  __u32 dpp_cq;
+  __u32 rsvd;
+};
+#define MAX_CQ_PAGES 8
+struct ocrdma_create_cq_uresp {
+  __u32 cq_id;
+  __u32 page_size;
+  __u32 num_pages;
+  __u32 max_hw_cqe;
+  __aligned_u64 page_addr[MAX_CQ_PAGES];
+  __aligned_u64 db_page_addr;
+  __u32 db_page_size;
+  __u32 phase_change;
+  __aligned_u64 rsvd1;
+  __aligned_u64 rsvd2;
+};
+#define MAX_QP_PAGES 8
+#define MAX_UD_AV_PAGES 8
+struct ocrdma_create_qp_ureq {
+  __u8 enable_dpp_cq;
+  __u8 rsvd;
+  __u16 dpp_cq_id;
+  __u32 rsvd1;
+};
+struct ocrdma_create_qp_uresp {
+  __u16 qp_id;
+  __u16 sq_dbid;
+  __u16 rq_dbid;
+  __u16 resv0;
+  __u32 sq_page_size;
+  __u32 rq_page_size;
+  __u32 num_sq_pages;
+  __u32 num_rq_pages;
+  __aligned_u64 sq_page_addr[MAX_QP_PAGES];
+  __aligned_u64 rq_page_addr[MAX_QP_PAGES];
+  __aligned_u64 db_page_addr;
+  __u32 db_page_size;
+  __u32 dpp_credit;
+  __u32 dpp_offset;
+  __u32 num_wqe_allocated;
+  __u32 num_rqe_allocated;
+  __u32 db_sq_offset;
+  __u32 db_rq_offset;
+  __u32 db_shift;
+  __aligned_u64 rsvd[11];
+};
+struct ocrdma_create_srq_uresp {
+  __u16 rq_dbid;
+  __u16 resv0;
+  __u32 resv1;
+  __u32 rq_page_size;
+  __u32 num_rq_pages;
+  __aligned_u64 rq_page_addr[MAX_QP_PAGES];
+  __aligned_u64 db_page_addr;
+  __u32 db_page_size;
+  __u32 num_rqe_allocated;
+  __u32 db_rq_offset;
+  __u32 db_shift;
+  __aligned_u64 rsvd2;
+  __aligned_u64 rsvd3;
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/qedr-abi.h b/i686-linux-musl/include/rdma/qedr-abi.h
new file mode 100644
index 0000000..bf6dc76
--- /dev/null
+++ b/i686-linux-musl/include/rdma/qedr-abi.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 __QEDR_USER_H__
+#define __QEDR_USER_H__
+#include <linux/types.h>
+#define QEDR_ABI_VERSION (8)
+enum qedr_alloc_ucontext_flags {
+  QEDR_ALLOC_UCTX_EDPM_MODE = 1 << 0,
+  QEDR_ALLOC_UCTX_DB_REC = 1 << 1,
+  QEDR_SUPPORT_DPM_SIZES = 1 << 2,
+};
+struct qedr_alloc_ucontext_req {
+  __u32 context_flags;
+  __u32 reserved;
+};
+#define QEDR_LDPM_MAX_SIZE (8192)
+#define QEDR_EDPM_TRANS_SIZE (64)
+#define QEDR_EDPM_MAX_SIZE (ROCE_REQ_MAX_INLINE_DATA_SIZE)
+enum qedr_rdma_dpm_type {
+  QEDR_DPM_TYPE_NONE = 0,
+  QEDR_DPM_TYPE_ROCE_ENHANCED = 1 << 0,
+  QEDR_DPM_TYPE_ROCE_LEGACY = 1 << 1,
+  QEDR_DPM_TYPE_IWARP_LEGACY = 1 << 2,
+  QEDR_DPM_TYPE_ROCE_EDPM_MODE = 1 << 3,
+  QEDR_DPM_SIZES_SET = 1 << 4,
+};
+struct qedr_alloc_ucontext_resp {
+  __aligned_u64 db_pa;
+  __u32 db_size;
+  __u32 max_send_wr;
+  __u32 max_recv_wr;
+  __u32 max_srq_wr;
+  __u32 sges_per_send_wr;
+  __u32 sges_per_recv_wr;
+  __u32 sges_per_srq_wr;
+  __u32 max_cqes;
+  __u8 dpm_flags;
+  __u8 wids_enabled;
+  __u16 wid_count;
+  __u16 ldpm_limit_size;
+  __u8 edpm_trans_size;
+  __u8 reserved;
+  __u16 edpm_limit_size;
+  __u8 padding[6];
+};
+struct qedr_alloc_pd_ureq {
+  __aligned_u64 rsvd1;
+};
+struct qedr_alloc_pd_uresp {
+  __u32 pd_id;
+  __u32 reserved;
+};
+struct qedr_create_cq_ureq {
+  __aligned_u64 addr;
+  __aligned_u64 len;
+};
+struct qedr_create_cq_uresp {
+  __u32 db_offset;
+  __u16 icid;
+  __u16 reserved;
+  __aligned_u64 db_rec_addr;
+};
+struct qedr_create_qp_ureq {
+  __u32 qp_handle_hi;
+  __u32 qp_handle_lo;
+  __aligned_u64 sq_addr;
+  __aligned_u64 sq_len;
+  __aligned_u64 rq_addr;
+  __aligned_u64 rq_len;
+};
+struct qedr_create_qp_uresp {
+  __u32 qp_id;
+  __u32 atomic_supported;
+  __u32 sq_db_offset;
+  __u16 sq_icid;
+  __u32 rq_db_offset;
+  __u16 rq_icid;
+  __u32 rq_db2_offset;
+  __u32 reserved;
+  __aligned_u64 sq_db_rec_addr;
+  __aligned_u64 rq_db_rec_addr;
+};
+struct qedr_create_srq_ureq {
+  __aligned_u64 prod_pair_addr;
+  __aligned_u64 srq_addr;
+  __aligned_u64 srq_len;
+};
+struct qedr_create_srq_uresp {
+  __u16 srq_id;
+  __u16 reserved0;
+  __u32 reserved1;
+};
+struct qedr_user_db_rec {
+  __aligned_u64 db_data;
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/rdma_netlink.h b/i686-linux-musl/include/rdma/rdma_netlink.h
new file mode 100644
index 0000000..bdb5fdd
--- /dev/null
+++ b/i686-linux-musl/include/rdma/rdma_netlink.h
@@ -0,0 +1,329 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_RDMA_NETLINK_H
+#define _UAPI_RDMA_NETLINK_H
+#include <linux/types.h>
+enum {
+  RDMA_NL_IWCM = 2,
+  RDMA_NL_RSVD,
+  RDMA_NL_LS,
+  RDMA_NL_NLDEV,
+  RDMA_NL_NUM_CLIENTS
+};
+enum {
+  RDMA_NL_GROUP_IWPM = 2,
+  RDMA_NL_GROUP_LS,
+  RDMA_NL_NUM_GROUPS
+};
+#define RDMA_NL_GET_CLIENT(type) ((type & (((1 << 6) - 1) << 10)) >> 10)
+#define RDMA_NL_GET_OP(type) (type & ((1 << 10) - 1))
+#define RDMA_NL_GET_TYPE(client,op) ((client << 10) + op)
+#define IWPM_UABI_VERSION_MIN 3
+#define IWPM_UABI_VERSION 4
+enum {
+  IWPM_FLAGS_NO_PORT_MAP = (1 << 0),
+};
+enum {
+  RDMA_NL_IWPM_REG_PID = 0,
+  RDMA_NL_IWPM_ADD_MAPPING,
+  RDMA_NL_IWPM_QUERY_MAPPING,
+  RDMA_NL_IWPM_REMOVE_MAPPING,
+  RDMA_NL_IWPM_REMOTE_INFO,
+  RDMA_NL_IWPM_HANDLE_ERR,
+  RDMA_NL_IWPM_MAPINFO,
+  RDMA_NL_IWPM_MAPINFO_NUM,
+  RDMA_NL_IWPM_HELLO,
+  RDMA_NL_IWPM_NUM_OPS
+};
+enum {
+  IWPM_NLA_REG_PID_UNSPEC = 0,
+  IWPM_NLA_REG_PID_SEQ,
+  IWPM_NLA_REG_IF_NAME,
+  IWPM_NLA_REG_IBDEV_NAME,
+  IWPM_NLA_REG_ULIB_NAME,
+  IWPM_NLA_REG_PID_MAX
+};
+enum {
+  IWPM_NLA_RREG_PID_UNSPEC = 0,
+  IWPM_NLA_RREG_PID_SEQ,
+  IWPM_NLA_RREG_IBDEV_NAME,
+  IWPM_NLA_RREG_ULIB_NAME,
+  IWPM_NLA_RREG_ULIB_VER,
+  IWPM_NLA_RREG_PID_ERR,
+  IWPM_NLA_RREG_PID_MAX
+};
+enum {
+  IWPM_NLA_MANAGE_MAPPING_UNSPEC = 0,
+  IWPM_NLA_MANAGE_MAPPING_SEQ,
+  IWPM_NLA_MANAGE_ADDR,
+  IWPM_NLA_MANAGE_FLAGS,
+  IWPM_NLA_MANAGE_MAPPING_MAX
+};
+enum {
+  IWPM_NLA_RMANAGE_MAPPING_UNSPEC = 0,
+  IWPM_NLA_RMANAGE_MAPPING_SEQ,
+  IWPM_NLA_RMANAGE_ADDR,
+  IWPM_NLA_RMANAGE_MAPPED_LOC_ADDR,
+  IWPM_NLA_MANAGE_MAPPED_LOC_ADDR = IWPM_NLA_RMANAGE_MAPPED_LOC_ADDR,
+  IWPM_NLA_RMANAGE_MAPPING_ERR,
+  IWPM_NLA_RMANAGE_MAPPING_MAX
+};
+#define IWPM_NLA_MAPINFO_SEND_MAX 3
+#define IWPM_NLA_REMOVE_MAPPING_MAX 3
+enum {
+  IWPM_NLA_QUERY_MAPPING_UNSPEC = 0,
+  IWPM_NLA_QUERY_MAPPING_SEQ,
+  IWPM_NLA_QUERY_LOCAL_ADDR,
+  IWPM_NLA_QUERY_REMOTE_ADDR,
+  IWPM_NLA_QUERY_FLAGS,
+  IWPM_NLA_QUERY_MAPPING_MAX,
+};
+enum {
+  IWPM_NLA_RQUERY_MAPPING_UNSPEC = 0,
+  IWPM_NLA_RQUERY_MAPPING_SEQ,
+  IWPM_NLA_RQUERY_LOCAL_ADDR,
+  IWPM_NLA_RQUERY_REMOTE_ADDR,
+  IWPM_NLA_RQUERY_MAPPED_LOC_ADDR,
+  IWPM_NLA_RQUERY_MAPPED_REM_ADDR,
+  IWPM_NLA_RQUERY_MAPPING_ERR,
+  IWPM_NLA_RQUERY_MAPPING_MAX
+};
+enum {
+  IWPM_NLA_MAPINFO_REQ_UNSPEC = 0,
+  IWPM_NLA_MAPINFO_ULIB_NAME,
+  IWPM_NLA_MAPINFO_ULIB_VER,
+  IWPM_NLA_MAPINFO_REQ_MAX
+};
+enum {
+  IWPM_NLA_MAPINFO_UNSPEC = 0,
+  IWPM_NLA_MAPINFO_LOCAL_ADDR,
+  IWPM_NLA_MAPINFO_MAPPED_ADDR,
+  IWPM_NLA_MAPINFO_FLAGS,
+  IWPM_NLA_MAPINFO_MAX
+};
+enum {
+  IWPM_NLA_MAPINFO_NUM_UNSPEC = 0,
+  IWPM_NLA_MAPINFO_SEQ,
+  IWPM_NLA_MAPINFO_SEND_NUM,
+  IWPM_NLA_MAPINFO_ACK_NUM,
+  IWPM_NLA_MAPINFO_NUM_MAX
+};
+enum {
+  IWPM_NLA_ERR_UNSPEC = 0,
+  IWPM_NLA_ERR_SEQ,
+  IWPM_NLA_ERR_CODE,
+  IWPM_NLA_ERR_MAX
+};
+enum {
+  IWPM_NLA_HELLO_UNSPEC = 0,
+  IWPM_NLA_HELLO_ABI_VERSION,
+  IWPM_NLA_HELLO_MAX
+};
+enum {
+  RDMA_NODE_IB_CA = 1,
+  RDMA_NODE_IB_SWITCH,
+  RDMA_NODE_IB_ROUTER,
+  RDMA_NODE_RNIC,
+  RDMA_NODE_USNIC,
+  RDMA_NODE_USNIC_UDP,
+  RDMA_NODE_UNSPECIFIED,
+};
+enum {
+  RDMA_NL_LS_OP_RESOLVE = 0,
+  RDMA_NL_LS_OP_SET_TIMEOUT,
+  RDMA_NL_LS_OP_IP_RESOLVE,
+  RDMA_NL_LS_NUM_OPS
+};
+#define RDMA_NL_LS_F_ERR 0x0100
+enum {
+  LS_RESOLVE_PATH_USE_ALL = 0,
+  LS_RESOLVE_PATH_USE_UNIDIRECTIONAL,
+  LS_RESOLVE_PATH_USE_GMP,
+  LS_RESOLVE_PATH_USE_MAX
+};
+#define LS_DEVICE_NAME_MAX 64
+struct rdma_ls_resolve_header {
+  __u8 device_name[LS_DEVICE_NAME_MAX];
+  __u8 port_num;
+  __u8 path_use;
+};
+struct rdma_ls_ip_resolve_header {
+  __u32 ifindex;
+};
+#define RDMA_NLA_F_MANDATORY (1 << 13)
+#define RDMA_NLA_TYPE_MASK (~(NLA_F_NESTED | NLA_F_NET_BYTEORDER | RDMA_NLA_F_MANDATORY))
+enum {
+  LS_NLA_TYPE_UNSPEC = 0,
+  LS_NLA_TYPE_PATH_RECORD,
+  LS_NLA_TYPE_TIMEOUT,
+  LS_NLA_TYPE_SERVICE_ID,
+  LS_NLA_TYPE_DGID,
+  LS_NLA_TYPE_SGID,
+  LS_NLA_TYPE_TCLASS,
+  LS_NLA_TYPE_PKEY,
+  LS_NLA_TYPE_QOS_CLASS,
+  LS_NLA_TYPE_IPV4,
+  LS_NLA_TYPE_IPV6,
+  LS_NLA_TYPE_MAX
+};
+struct rdma_nla_ls_gid {
+  __u8 gid[16];
+};
+enum rdma_nldev_command {
+  RDMA_NLDEV_CMD_UNSPEC,
+  RDMA_NLDEV_CMD_GET,
+  RDMA_NLDEV_CMD_SET,
+  RDMA_NLDEV_CMD_NEWLINK,
+  RDMA_NLDEV_CMD_DELLINK,
+  RDMA_NLDEV_CMD_PORT_GET,
+  RDMA_NLDEV_CMD_SYS_GET,
+  RDMA_NLDEV_CMD_SYS_SET,
+  RDMA_NLDEV_CMD_RES_GET = 9,
+  RDMA_NLDEV_CMD_RES_QP_GET,
+  RDMA_NLDEV_CMD_RES_CM_ID_GET,
+  RDMA_NLDEV_CMD_RES_CQ_GET,
+  RDMA_NLDEV_CMD_RES_MR_GET,
+  RDMA_NLDEV_CMD_RES_PD_GET,
+  RDMA_NLDEV_CMD_GET_CHARDEV,
+  RDMA_NLDEV_CMD_STAT_SET,
+  RDMA_NLDEV_CMD_STAT_GET,
+  RDMA_NLDEV_CMD_STAT_DEL,
+  RDMA_NLDEV_CMD_RES_QP_GET_RAW,
+  RDMA_NLDEV_CMD_RES_CQ_GET_RAW,
+  RDMA_NLDEV_CMD_RES_MR_GET_RAW,
+  RDMA_NLDEV_CMD_RES_CTX_GET,
+  RDMA_NLDEV_CMD_RES_SRQ_GET,
+  RDMA_NLDEV_CMD_STAT_GET_STATUS,
+  RDMA_NLDEV_NUM_OPS
+};
+enum rdma_nldev_print_type {
+  RDMA_NLDEV_PRINT_TYPE_UNSPEC,
+  RDMA_NLDEV_PRINT_TYPE_HEX,
+};
+enum rdma_nldev_attr {
+  RDMA_NLDEV_ATTR_UNSPEC,
+  RDMA_NLDEV_ATTR_PAD = RDMA_NLDEV_ATTR_UNSPEC,
+  RDMA_NLDEV_ATTR_DEV_INDEX,
+  RDMA_NLDEV_ATTR_DEV_NAME,
+  RDMA_NLDEV_ATTR_PORT_INDEX,
+  RDMA_NLDEV_ATTR_CAP_FLAGS,
+  RDMA_NLDEV_ATTR_FW_VERSION,
+  RDMA_NLDEV_ATTR_NODE_GUID,
+  RDMA_NLDEV_ATTR_SYS_IMAGE_GUID,
+  RDMA_NLDEV_ATTR_SUBNET_PREFIX,
+  RDMA_NLDEV_ATTR_LID,
+  RDMA_NLDEV_ATTR_SM_LID,
+  RDMA_NLDEV_ATTR_LMC,
+  RDMA_NLDEV_ATTR_PORT_STATE,
+  RDMA_NLDEV_ATTR_PORT_PHYS_STATE,
+  RDMA_NLDEV_ATTR_DEV_NODE_TYPE,
+  RDMA_NLDEV_ATTR_RES_SUMMARY,
+  RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY,
+  RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY_NAME,
+  RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY_CURR,
+  RDMA_NLDEV_ATTR_RES_QP,
+  RDMA_NLDEV_ATTR_RES_QP_ENTRY,
+  RDMA_NLDEV_ATTR_RES_LQPN,
+  RDMA_NLDEV_ATTR_RES_RQPN,
+  RDMA_NLDEV_ATTR_RES_RQ_PSN,
+  RDMA_NLDEV_ATTR_RES_SQ_PSN,
+  RDMA_NLDEV_ATTR_RES_PATH_MIG_STATE,
+  RDMA_NLDEV_ATTR_RES_TYPE,
+  RDMA_NLDEV_ATTR_RES_STATE,
+  RDMA_NLDEV_ATTR_RES_PID,
+  RDMA_NLDEV_ATTR_RES_KERN_NAME,
+  RDMA_NLDEV_ATTR_RES_CM_ID,
+  RDMA_NLDEV_ATTR_RES_CM_ID_ENTRY,
+  RDMA_NLDEV_ATTR_RES_PS,
+  RDMA_NLDEV_ATTR_RES_SRC_ADDR,
+  RDMA_NLDEV_ATTR_RES_DST_ADDR,
+  RDMA_NLDEV_ATTR_RES_CQ,
+  RDMA_NLDEV_ATTR_RES_CQ_ENTRY,
+  RDMA_NLDEV_ATTR_RES_CQE,
+  RDMA_NLDEV_ATTR_RES_USECNT,
+  RDMA_NLDEV_ATTR_RES_POLL_CTX,
+  RDMA_NLDEV_ATTR_RES_MR,
+  RDMA_NLDEV_ATTR_RES_MR_ENTRY,
+  RDMA_NLDEV_ATTR_RES_RKEY,
+  RDMA_NLDEV_ATTR_RES_LKEY,
+  RDMA_NLDEV_ATTR_RES_IOVA,
+  RDMA_NLDEV_ATTR_RES_MRLEN,
+  RDMA_NLDEV_ATTR_RES_PD,
+  RDMA_NLDEV_ATTR_RES_PD_ENTRY,
+  RDMA_NLDEV_ATTR_RES_LOCAL_DMA_LKEY,
+  RDMA_NLDEV_ATTR_RES_UNSAFE_GLOBAL_RKEY,
+  RDMA_NLDEV_ATTR_NDEV_INDEX,
+  RDMA_NLDEV_ATTR_NDEV_NAME,
+  RDMA_NLDEV_ATTR_DRIVER,
+  RDMA_NLDEV_ATTR_DRIVER_ENTRY,
+  RDMA_NLDEV_ATTR_DRIVER_STRING,
+  RDMA_NLDEV_ATTR_DRIVER_PRINT_TYPE,
+  RDMA_NLDEV_ATTR_DRIVER_S32,
+  RDMA_NLDEV_ATTR_DRIVER_U32,
+  RDMA_NLDEV_ATTR_DRIVER_S64,
+  RDMA_NLDEV_ATTR_DRIVER_U64,
+  RDMA_NLDEV_ATTR_RES_PDN,
+  RDMA_NLDEV_ATTR_RES_CQN,
+  RDMA_NLDEV_ATTR_RES_MRN,
+  RDMA_NLDEV_ATTR_RES_CM_IDN,
+  RDMA_NLDEV_ATTR_RES_CTXN,
+  RDMA_NLDEV_ATTR_LINK_TYPE,
+  RDMA_NLDEV_SYS_ATTR_NETNS_MODE,
+  RDMA_NLDEV_ATTR_DEV_PROTOCOL,
+  RDMA_NLDEV_NET_NS_FD,
+  RDMA_NLDEV_ATTR_CHARDEV_TYPE,
+  RDMA_NLDEV_ATTR_CHARDEV_NAME,
+  RDMA_NLDEV_ATTR_CHARDEV_ABI,
+  RDMA_NLDEV_ATTR_CHARDEV,
+  RDMA_NLDEV_ATTR_UVERBS_DRIVER_ID,
+  RDMA_NLDEV_ATTR_STAT_MODE,
+  RDMA_NLDEV_ATTR_STAT_RES,
+  RDMA_NLDEV_ATTR_STAT_AUTO_MODE_MASK,
+  RDMA_NLDEV_ATTR_STAT_COUNTER,
+  RDMA_NLDEV_ATTR_STAT_COUNTER_ENTRY,
+  RDMA_NLDEV_ATTR_STAT_COUNTER_ID,
+  RDMA_NLDEV_ATTR_STAT_HWCOUNTERS,
+  RDMA_NLDEV_ATTR_STAT_HWCOUNTER_ENTRY,
+  RDMA_NLDEV_ATTR_STAT_HWCOUNTER_ENTRY_NAME,
+  RDMA_NLDEV_ATTR_STAT_HWCOUNTER_ENTRY_VALUE,
+  RDMA_NLDEV_ATTR_DEV_DIM,
+  RDMA_NLDEV_ATTR_RES_RAW,
+  RDMA_NLDEV_ATTR_RES_CTX,
+  RDMA_NLDEV_ATTR_RES_CTX_ENTRY,
+  RDMA_NLDEV_ATTR_RES_SRQ,
+  RDMA_NLDEV_ATTR_RES_SRQ_ENTRY,
+  RDMA_NLDEV_ATTR_RES_SRQN,
+  RDMA_NLDEV_ATTR_MIN_RANGE,
+  RDMA_NLDEV_ATTR_MAX_RANGE,
+  RDMA_NLDEV_SYS_ATTR_COPY_ON_FORK,
+  RDMA_NLDEV_ATTR_STAT_HWCOUNTER_INDEX,
+  RDMA_NLDEV_ATTR_STAT_HWCOUNTER_DYNAMIC,
+  RDMA_NLDEV_ATTR_MAX
+};
+enum rdma_nl_counter_mode {
+  RDMA_COUNTER_MODE_NONE,
+  RDMA_COUNTER_MODE_AUTO,
+  RDMA_COUNTER_MODE_MANUAL,
+  RDMA_COUNTER_MODE_MAX,
+};
+enum rdma_nl_counter_mask {
+  RDMA_COUNTER_MASK_QP_TYPE = 1,
+  RDMA_COUNTER_MASK_PID = 1 << 1,
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/rdma_user_cm.h b/i686-linux-musl/include/rdma/rdma_user_cm.h
new file mode 100644
index 0000000..7b1f7ee
--- /dev/null
+++ b/i686-linux-musl/include/rdma/rdma_user_cm.h
@@ -0,0 +1,273 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef RDMA_USER_CM_H
+#define RDMA_USER_CM_H
+#include <linux/types.h>
+#include <linux/socket.h>
+#include <linux/in6.h>
+#include <rdma/ib_user_verbs.h>
+#include <rdma/ib_user_sa.h>
+#define RDMA_USER_CM_ABI_VERSION 4
+#define RDMA_MAX_PRIVATE_DATA 256
+enum {
+  RDMA_USER_CM_CMD_CREATE_ID,
+  RDMA_USER_CM_CMD_DESTROY_ID,
+  RDMA_USER_CM_CMD_BIND_IP,
+  RDMA_USER_CM_CMD_RESOLVE_IP,
+  RDMA_USER_CM_CMD_RESOLVE_ROUTE,
+  RDMA_USER_CM_CMD_QUERY_ROUTE,
+  RDMA_USER_CM_CMD_CONNECT,
+  RDMA_USER_CM_CMD_LISTEN,
+  RDMA_USER_CM_CMD_ACCEPT,
+  RDMA_USER_CM_CMD_REJECT,
+  RDMA_USER_CM_CMD_DISCONNECT,
+  RDMA_USER_CM_CMD_INIT_QP_ATTR,
+  RDMA_USER_CM_CMD_GET_EVENT,
+  RDMA_USER_CM_CMD_GET_OPTION,
+  RDMA_USER_CM_CMD_SET_OPTION,
+  RDMA_USER_CM_CMD_NOTIFY,
+  RDMA_USER_CM_CMD_JOIN_IP_MCAST,
+  RDMA_USER_CM_CMD_LEAVE_MCAST,
+  RDMA_USER_CM_CMD_MIGRATE_ID,
+  RDMA_USER_CM_CMD_QUERY,
+  RDMA_USER_CM_CMD_BIND,
+  RDMA_USER_CM_CMD_RESOLVE_ADDR,
+  RDMA_USER_CM_CMD_JOIN_MCAST
+};
+enum rdma_ucm_port_space {
+  RDMA_PS_IPOIB = 0x0002,
+  RDMA_PS_IB = 0x013F,
+  RDMA_PS_TCP = 0x0106,
+  RDMA_PS_UDP = 0x0111,
+};
+struct rdma_ucm_cmd_hdr {
+  __u32 cmd;
+  __u16 in;
+  __u16 out;
+};
+struct rdma_ucm_create_id {
+  __aligned_u64 uid;
+  __aligned_u64 response;
+  __u16 ps;
+  __u8 qp_type;
+  __u8 reserved[5];
+};
+struct rdma_ucm_create_id_resp {
+  __u32 id;
+};
+struct rdma_ucm_destroy_id {
+  __aligned_u64 response;
+  __u32 id;
+  __u32 reserved;
+};
+struct rdma_ucm_destroy_id_resp {
+  __u32 events_reported;
+};
+struct rdma_ucm_bind_ip {
+  __aligned_u64 response;
+  struct sockaddr_in6 addr;
+  __u32 id;
+};
+struct rdma_ucm_bind {
+  __u32 id;
+  __u16 addr_size;
+  __u16 reserved;
+  struct __kernel_sockaddr_storage addr;
+};
+struct rdma_ucm_resolve_ip {
+  struct sockaddr_in6 src_addr;
+  struct sockaddr_in6 dst_addr;
+  __u32 id;
+  __u32 timeout_ms;
+};
+struct rdma_ucm_resolve_addr {
+  __u32 id;
+  __u32 timeout_ms;
+  __u16 src_size;
+  __u16 dst_size;
+  __u32 reserved;
+  struct __kernel_sockaddr_storage src_addr;
+  struct __kernel_sockaddr_storage dst_addr;
+};
+struct rdma_ucm_resolve_route {
+  __u32 id;
+  __u32 timeout_ms;
+};
+enum {
+  RDMA_USER_CM_QUERY_ADDR,
+  RDMA_USER_CM_QUERY_PATH,
+  RDMA_USER_CM_QUERY_GID
+};
+struct rdma_ucm_query {
+  __aligned_u64 response;
+  __u32 id;
+  __u32 option;
+};
+struct rdma_ucm_query_route_resp {
+  __aligned_u64 node_guid;
+  struct ib_user_path_rec ib_route[2];
+  struct sockaddr_in6 src_addr;
+  struct sockaddr_in6 dst_addr;
+  __u32 num_paths;
+  __u8 port_num;
+  __u8 reserved[3];
+  __u32 ibdev_index;
+  __u32 reserved1;
+};
+struct rdma_ucm_query_addr_resp {
+  __aligned_u64 node_guid;
+  __u8 port_num;
+  __u8 reserved;
+  __u16 pkey;
+  __u16 src_size;
+  __u16 dst_size;
+  struct __kernel_sockaddr_storage src_addr;
+  struct __kernel_sockaddr_storage dst_addr;
+  __u32 ibdev_index;
+  __u32 reserved1;
+};
+struct rdma_ucm_query_path_resp {
+  __u32 num_paths;
+  __u32 reserved;
+  struct ib_path_rec_data path_data[0];
+};
+struct rdma_ucm_conn_param {
+  __u32 qp_num;
+  __u32 qkey;
+  __u8 private_data[RDMA_MAX_PRIVATE_DATA];
+  __u8 private_data_len;
+  __u8 srq;
+  __u8 responder_resources;
+  __u8 initiator_depth;
+  __u8 flow_control;
+  __u8 retry_count;
+  __u8 rnr_retry_count;
+  __u8 valid;
+};
+struct rdma_ucm_ud_param {
+  __u32 qp_num;
+  __u32 qkey;
+  struct ib_uverbs_ah_attr ah_attr;
+  __u8 private_data[RDMA_MAX_PRIVATE_DATA];
+  __u8 private_data_len;
+  __u8 reserved[7];
+};
+struct rdma_ucm_ece {
+  __u32 vendor_id;
+  __u32 attr_mod;
+};
+struct rdma_ucm_connect {
+  struct rdma_ucm_conn_param conn_param;
+  __u32 id;
+  __u32 reserved;
+  struct rdma_ucm_ece ece;
+};
+struct rdma_ucm_listen {
+  __u32 id;
+  __u32 backlog;
+};
+struct rdma_ucm_accept {
+  __aligned_u64 uid;
+  struct rdma_ucm_conn_param conn_param;
+  __u32 id;
+  __u32 reserved;
+  struct rdma_ucm_ece ece;
+};
+struct rdma_ucm_reject {
+  __u32 id;
+  __u8 private_data_len;
+  __u8 reason;
+  __u8 reserved[2];
+  __u8 private_data[RDMA_MAX_PRIVATE_DATA];
+};
+struct rdma_ucm_disconnect {
+  __u32 id;
+};
+struct rdma_ucm_init_qp_attr {
+  __aligned_u64 response;
+  __u32 id;
+  __u32 qp_state;
+};
+struct rdma_ucm_notify {
+  __u32 id;
+  __u32 event;
+};
+struct rdma_ucm_join_ip_mcast {
+  __aligned_u64 response;
+  __aligned_u64 uid;
+  struct sockaddr_in6 addr;
+  __u32 id;
+};
+enum {
+  RDMA_MC_JOIN_FLAG_FULLMEMBER,
+  RDMA_MC_JOIN_FLAG_SENDONLY_FULLMEMBER,
+  RDMA_MC_JOIN_FLAG_RESERVED,
+};
+struct rdma_ucm_join_mcast {
+  __aligned_u64 response;
+  __aligned_u64 uid;
+  __u32 id;
+  __u16 addr_size;
+  __u16 join_flags;
+  struct __kernel_sockaddr_storage addr;
+};
+struct rdma_ucm_get_event {
+  __aligned_u64 response;
+};
+struct rdma_ucm_event_resp {
+  __aligned_u64 uid;
+  __u32 id;
+  __u32 event;
+  __u32 status;
+  union {
+    struct rdma_ucm_conn_param conn;
+    struct rdma_ucm_ud_param ud;
+  } param;
+  __u32 reserved;
+  struct rdma_ucm_ece ece;
+};
+enum {
+  RDMA_OPTION_ID = 0,
+  RDMA_OPTION_IB = 1
+};
+enum {
+  RDMA_OPTION_ID_TOS = 0,
+  RDMA_OPTION_ID_REUSEADDR = 1,
+  RDMA_OPTION_ID_AFONLY = 2,
+  RDMA_OPTION_ID_ACK_TIMEOUT = 3
+};
+enum {
+  RDMA_OPTION_IB_PATH = 1
+};
+struct rdma_ucm_set_option {
+  __aligned_u64 optval;
+  __u32 id;
+  __u32 level;
+  __u32 optname;
+  __u32 optlen;
+};
+struct rdma_ucm_migrate_id {
+  __aligned_u64 response;
+  __u32 id;
+  __u32 fd;
+};
+struct rdma_ucm_migrate_resp {
+  __u32 events_reported;
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/rdma_user_ioctl.h b/i686-linux-musl/include/rdma/rdma_user_ioctl.h
new file mode 100644
index 0000000..2f532d3
--- /dev/null
+++ b/i686-linux-musl/include/rdma/rdma_user_ioctl.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 RDMA_USER_IOCTL_H
+#define RDMA_USER_IOCTL_H
+#include <rdma/ib_user_mad.h>
+#include <rdma/hfi/hfi1_ioctl.h>
+#include <rdma/rdma_user_ioctl_cmds.h>
+#define IB_IOCTL_MAGIC RDMA_IOCTL_MAGIC
+#define IB_USER_MAD_REGISTER_AGENT _IOWR(RDMA_IOCTL_MAGIC, 0x01, struct ib_user_mad_reg_req)
+#define IB_USER_MAD_UNREGISTER_AGENT _IOW(RDMA_IOCTL_MAGIC, 0x02, __u32)
+#define IB_USER_MAD_ENABLE_PKEY _IO(RDMA_IOCTL_MAGIC, 0x03)
+#define IB_USER_MAD_REGISTER_AGENT2 _IOWR(RDMA_IOCTL_MAGIC, 0x04, struct ib_user_mad_reg_req2)
+#define HFI1_IOCTL_ASSIGN_CTXT _IOWR(RDMA_IOCTL_MAGIC, 0xE1, struct hfi1_user_info)
+#define HFI1_IOCTL_CTXT_INFO _IOW(RDMA_IOCTL_MAGIC, 0xE2, struct hfi1_ctxt_info)
+#define HFI1_IOCTL_USER_INFO _IOW(RDMA_IOCTL_MAGIC, 0xE3, struct hfi1_base_info)
+#define HFI1_IOCTL_TID_UPDATE _IOWR(RDMA_IOCTL_MAGIC, 0xE4, struct hfi1_tid_info)
+#define HFI1_IOCTL_TID_FREE _IOWR(RDMA_IOCTL_MAGIC, 0xE5, struct hfi1_tid_info)
+#define HFI1_IOCTL_CREDIT_UPD _IO(RDMA_IOCTL_MAGIC, 0xE6)
+#define HFI1_IOCTL_RECV_CTRL _IOW(RDMA_IOCTL_MAGIC, 0xE8, int)
+#define HFI1_IOCTL_POLL_TYPE _IOW(RDMA_IOCTL_MAGIC, 0xE9, int)
+#define HFI1_IOCTL_ACK_EVENT _IOW(RDMA_IOCTL_MAGIC, 0xEA, unsigned long)
+#define HFI1_IOCTL_SET_PKEY _IOW(RDMA_IOCTL_MAGIC, 0xEB, __u16)
+#define HFI1_IOCTL_CTXT_RESET _IO(RDMA_IOCTL_MAGIC, 0xEC)
+#define HFI1_IOCTL_TID_INVAL_READ _IOWR(RDMA_IOCTL_MAGIC, 0xED, struct hfi1_tid_info)
+#define HFI1_IOCTL_GET_VERS _IOR(RDMA_IOCTL_MAGIC, 0xEE, int)
+#endif
diff --git a/i686-linux-musl/include/rdma/rdma_user_ioctl_cmds.h b/i686-linux-musl/include/rdma/rdma_user_ioctl_cmds.h
new file mode 100644
index 0000000..22adfaa
--- /dev/null
+++ b/i686-linux-musl/include/rdma/rdma_user_ioctl_cmds.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 RDMA_USER_IOCTL_CMDS_H
+#define RDMA_USER_IOCTL_CMDS_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define RDMA_IOCTL_MAGIC 0x1b
+#define RDMA_VERBS_IOCTL _IOWR(RDMA_IOCTL_MAGIC, 1, struct ib_uverbs_ioctl_hdr)
+enum {
+  UVERBS_ATTR_F_MANDATORY = 1U << 0,
+  UVERBS_ATTR_F_VALID_OUTPUT = 1U << 1,
+};
+struct ib_uverbs_attr {
+  __u16 attr_id;
+  __u16 len;
+  __u16 flags;
+  union {
+    struct {
+      __u8 elem_id;
+      __u8 reserved;
+    } enum_data;
+    __u16 reserved;
+  } attr_data;
+  union {
+    __aligned_u64 data;
+    __s64 data_s64;
+  };
+};
+struct ib_uverbs_ioctl_hdr {
+  __u16 length;
+  __u16 object_id;
+  __u16 method_id;
+  __u16 num_attrs;
+  __aligned_u64 reserved1;
+  __u32 driver_id;
+  __u32 reserved2;
+  struct ib_uverbs_attr attrs[0];
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/rdma_user_rxe.h b/i686-linux-musl/include/rdma/rdma_user_rxe.h
new file mode 100644
index 0000000..cdb00c7
--- /dev/null
+++ b/i686-linux-musl/include/rdma/rdma_user_rxe.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 RDMA_USER_RXE_H
+#define RDMA_USER_RXE_H
+#include <linux/types.h>
+#include <linux/socket.h>
+#include <linux/in.h>
+#include <linux/in6.h>
+enum {
+  RXE_NETWORK_TYPE_IPV4 = 1,
+  RXE_NETWORK_TYPE_IPV6 = 2,
+};
+union rxe_gid {
+  __u8 raw[16];
+  struct {
+    __be64 subnet_prefix;
+    __be64 interface_id;
+  } global;
+};
+struct rxe_global_route {
+  union rxe_gid dgid;
+  __u32 flow_label;
+  __u8 sgid_index;
+  __u8 hop_limit;
+  __u8 traffic_class;
+};
+struct rxe_av {
+  __u8 port_num;
+  __u8 network_type;
+  __u8 dmac[6];
+  struct rxe_global_route grh;
+  union {
+    struct sockaddr_in _sockaddr_in;
+    struct sockaddr_in6 _sockaddr_in6;
+  } sgid_addr, dgid_addr;
+};
+struct rxe_send_wr {
+  __aligned_u64 wr_id;
+  __u32 num_sge;
+  __u32 opcode;
+  __u32 send_flags;
+  union {
+    __be32 imm_data;
+    __u32 invalidate_rkey;
+  } ex;
+  union {
+    struct {
+      __aligned_u64 remote_addr;
+      __u32 rkey;
+      __u32 reserved;
+    } rdma;
+    struct {
+      __aligned_u64 remote_addr;
+      __aligned_u64 compare_add;
+      __aligned_u64 swap;
+      __u32 rkey;
+      __u32 reserved;
+    } atomic;
+    struct {
+      __u32 remote_qpn;
+      __u32 remote_qkey;
+      __u16 pkey_index;
+      __u16 reserved;
+      __u32 ah_num;
+      __u32 pad[4];
+      struct rxe_av av;
+    } ud;
+    struct {
+      __aligned_u64 addr;
+      __aligned_u64 length;
+      __u32 mr_lkey;
+      __u32 mw_rkey;
+      __u32 rkey;
+      __u32 access;
+    } mw;
+  } wr;
+};
+struct rxe_sge {
+  __aligned_u64 addr;
+  __u32 length;
+  __u32 lkey;
+};
+struct mminfo {
+  __aligned_u64 offset;
+  __u32 size;
+  __u32 pad;
+};
+struct rxe_dma_info {
+  __u32 length;
+  __u32 resid;
+  __u32 cur_sge;
+  __u32 num_sge;
+  __u32 sge_offset;
+  __u32 reserved;
+  union {
+    __DECLARE_FLEX_ARRAY(__u8, inline_data);
+    __DECLARE_FLEX_ARRAY(struct rxe_sge, sge);
+  };
+};
+struct rxe_send_wqe {
+  struct rxe_send_wr wr;
+  __u32 status;
+  __u32 state;
+  __aligned_u64 iova;
+  __u32 mask;
+  __u32 first_psn;
+  __u32 last_psn;
+  __u32 ack_length;
+  __u32 ssn;
+  __u32 has_rd_atomic;
+  struct rxe_dma_info dma;
+};
+struct rxe_recv_wqe {
+  __aligned_u64 wr_id;
+  __u32 num_sge;
+  __u32 padding;
+  struct rxe_dma_info dma;
+};
+struct rxe_create_ah_resp {
+  __u32 ah_num;
+  __u32 reserved;
+};
+struct rxe_create_cq_resp {
+  struct mminfo mi;
+};
+struct rxe_resize_cq_resp {
+  struct mminfo mi;
+};
+struct rxe_create_qp_resp {
+  struct mminfo rq_mi;
+  struct mminfo sq_mi;
+};
+struct rxe_create_srq_resp {
+  struct mminfo mi;
+  __u32 srq_num;
+  __u32 reserved;
+};
+struct rxe_modify_srq_cmd {
+  __aligned_u64 mmap_info_addr;
+};
+struct rxe_queue_buf {
+  __u32 log2_elem_size;
+  __u32 index_mask;
+  __u32 pad_1[30];
+  __u32 producer_index;
+  __u32 pad_2[31];
+  __u32 consumer_index;
+  __u32 pad_3[31];
+  __u8 data[];
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/rvt-abi.h b/i686-linux-musl/include/rdma/rvt-abi.h
new file mode 100644
index 0000000..49632ee
--- /dev/null
+++ b/i686-linux-musl/include/rdma/rvt-abi.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 RVT_ABI_USER_H
+#define RVT_ABI_USER_H
+#include <linux/types.h>
+#include <rdma/ib_user_verbs.h>
+#ifndef RDMA_ATOMIC_UAPI
+#define RDMA_ATOMIC_UAPI(_type,_name) struct { _type val; } _name
+#endif
+struct rvt_wqe_sge {
+  __aligned_u64 addr;
+  __u32 length;
+  __u32 lkey;
+};
+struct rvt_cq_wc {
+  RDMA_ATOMIC_UAPI(__u32, head);
+  RDMA_ATOMIC_UAPI(__u32, tail);
+  struct ib_uverbs_wc uqueue[];
+};
+struct rvt_rwqe {
+  __u64 wr_id;
+  __u8 num_sge;
+  __u8 padding[7];
+  struct rvt_wqe_sge sg_list[];
+};
+struct rvt_rwq {
+  RDMA_ATOMIC_UAPI(__u32, head);
+  RDMA_ATOMIC_UAPI(__u32, tail);
+  struct rvt_rwqe wq[];
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/siw-abi.h b/i686-linux-musl/include/rdma/siw-abi.h
new file mode 100644
index 0000000..e2363a1
--- /dev/null
+++ b/i686-linux-musl/include/rdma/siw-abi.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 _SIW_USER_H
+#define _SIW_USER_H
+#include <linux/types.h>
+#define SIW_NODE_DESC_COMMON "Software iWARP stack"
+#define SIW_ABI_VERSION 1
+#define SIW_MAX_SGE 6
+#define SIW_UOBJ_MAX_KEY 0x08FFFF
+#define SIW_INVAL_UOBJ_KEY (SIW_UOBJ_MAX_KEY + 1)
+struct siw_uresp_create_cq {
+  __u32 cq_id;
+  __u32 num_cqe;
+  __aligned_u64 cq_key;
+};
+struct siw_uresp_create_qp {
+  __u32 qp_id;
+  __u32 num_sqe;
+  __u32 num_rqe;
+  __u32 pad;
+  __aligned_u64 sq_key;
+  __aligned_u64 rq_key;
+};
+struct siw_ureq_reg_mr {
+  __u8 stag_key;
+  __u8 reserved[3];
+  __u32 pad;
+};
+struct siw_uresp_reg_mr {
+  __u32 stag;
+  __u32 pad;
+};
+struct siw_uresp_create_srq {
+  __u32 num_rqe;
+  __u32 pad;
+  __aligned_u64 srq_key;
+};
+struct siw_uresp_alloc_ctx {
+  __u32 dev_id;
+  __u32 pad;
+};
+enum siw_opcode {
+  SIW_OP_WRITE,
+  SIW_OP_READ,
+  SIW_OP_READ_LOCAL_INV,
+  SIW_OP_SEND,
+  SIW_OP_SEND_WITH_IMM,
+  SIW_OP_SEND_REMOTE_INV,
+  SIW_OP_FETCH_AND_ADD,
+  SIW_OP_COMP_AND_SWAP,
+  SIW_OP_RECEIVE,
+  SIW_OP_READ_RESPONSE,
+  SIW_OP_INVAL_STAG,
+  SIW_OP_REG_MR,
+  SIW_NUM_OPCODES
+};
+struct siw_sge {
+  __aligned_u64 laddr;
+  __u32 length;
+  __u32 lkey;
+};
+#define SIW_MAX_INLINE (sizeof(struct siw_sge) * (SIW_MAX_SGE - 1))
+#if SIW_MAX_SGE < 2
+#error "SIW_MAX_SGE must be at least 2"
+#endif
+enum siw_wqe_flags {
+  SIW_WQE_VALID = 1,
+  SIW_WQE_INLINE = (1 << 1),
+  SIW_WQE_SIGNALLED = (1 << 2),
+  SIW_WQE_SOLICITED = (1 << 3),
+  SIW_WQE_READ_FENCE = (1 << 4),
+  SIW_WQE_REM_INVAL = (1 << 5),
+  SIW_WQE_COMPLETED = (1 << 6)
+};
+struct siw_sqe {
+  __aligned_u64 id;
+  __u16 flags;
+  __u8 num_sge;
+  __u8 opcode;
+  __u32 rkey;
+  union {
+    __aligned_u64 raddr;
+    __aligned_u64 base_mr;
+  };
+  union {
+    struct siw_sge sge[SIW_MAX_SGE];
+    __aligned_u64 access;
+  };
+};
+struct siw_rqe {
+  __aligned_u64 id;
+  __u16 flags;
+  __u8 num_sge;
+  __u8 opcode;
+  __u32 unused;
+  struct siw_sge sge[SIW_MAX_SGE];
+};
+enum siw_notify_flags {
+  SIW_NOTIFY_NOT = (0),
+  SIW_NOTIFY_SOLICITED = (1 << 0),
+  SIW_NOTIFY_NEXT_COMPLETION = (1 << 1),
+  SIW_NOTIFY_MISSED_EVENTS = (1 << 2),
+  SIW_NOTIFY_ALL = SIW_NOTIFY_SOLICITED | SIW_NOTIFY_NEXT_COMPLETION | SIW_NOTIFY_MISSED_EVENTS
+};
+enum siw_wc_status {
+  SIW_WC_SUCCESS,
+  SIW_WC_LOC_LEN_ERR,
+  SIW_WC_LOC_PROT_ERR,
+  SIW_WC_LOC_QP_OP_ERR,
+  SIW_WC_WR_FLUSH_ERR,
+  SIW_WC_BAD_RESP_ERR,
+  SIW_WC_LOC_ACCESS_ERR,
+  SIW_WC_REM_ACCESS_ERR,
+  SIW_WC_REM_INV_REQ_ERR,
+  SIW_WC_GENERAL_ERR,
+  SIW_NUM_WC_STATUS
+};
+struct siw_cqe {
+  __aligned_u64 id;
+  __u8 flags;
+  __u8 opcode;
+  __u16 status;
+  __u32 bytes;
+  union {
+    __aligned_u64 imm_data;
+    __u32 inval_stag;
+  };
+  union {
+    struct ib_qp * base_qp;
+    __aligned_u64 qp_id;
+  };
+};
+struct siw_cq_ctrl {
+  __u32 flags;
+  __u32 pad;
+};
+#endif
diff --git a/i686-linux-musl/include/rdma/vmw_pvrdma-abi.h b/i686-linux-musl/include/rdma/vmw_pvrdma-abi.h
new file mode 100644
index 0000000..f4444c4
--- /dev/null
+++ b/i686-linux-musl/include/rdma/vmw_pvrdma-abi.h
@@ -0,0 +1,249 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __VMW_PVRDMA_ABI_H__
+#define __VMW_PVRDMA_ABI_H__
+#include <linux/types.h>
+#define PVRDMA_UVERBS_ABI_VERSION 3
+#define PVRDMA_UAR_HANDLE_MASK 0x00FFFFFF
+#define PVRDMA_UAR_QP_OFFSET 0
+#define PVRDMA_UAR_QP_SEND (1 << 30)
+#define PVRDMA_UAR_QP_RECV (1 << 31)
+#define PVRDMA_UAR_CQ_OFFSET 4
+#define PVRDMA_UAR_CQ_ARM_SOL (1 << 29)
+#define PVRDMA_UAR_CQ_ARM (1 << 30)
+#define PVRDMA_UAR_CQ_POLL (1 << 31)
+#define PVRDMA_UAR_SRQ_OFFSET 8
+#define PVRDMA_UAR_SRQ_RECV (1 << 30)
+enum pvrdma_wr_opcode {
+  PVRDMA_WR_RDMA_WRITE,
+  PVRDMA_WR_RDMA_WRITE_WITH_IMM,
+  PVRDMA_WR_SEND,
+  PVRDMA_WR_SEND_WITH_IMM,
+  PVRDMA_WR_RDMA_READ,
+  PVRDMA_WR_ATOMIC_CMP_AND_SWP,
+  PVRDMA_WR_ATOMIC_FETCH_AND_ADD,
+  PVRDMA_WR_LSO,
+  PVRDMA_WR_SEND_WITH_INV,
+  PVRDMA_WR_RDMA_READ_WITH_INV,
+  PVRDMA_WR_LOCAL_INV,
+  PVRDMA_WR_FAST_REG_MR,
+  PVRDMA_WR_MASKED_ATOMIC_CMP_AND_SWP,
+  PVRDMA_WR_MASKED_ATOMIC_FETCH_AND_ADD,
+  PVRDMA_WR_BIND_MW,
+  PVRDMA_WR_REG_SIG_MR,
+  PVRDMA_WR_ERROR,
+};
+enum pvrdma_wc_status {
+  PVRDMA_WC_SUCCESS,
+  PVRDMA_WC_LOC_LEN_ERR,
+  PVRDMA_WC_LOC_QP_OP_ERR,
+  PVRDMA_WC_LOC_EEC_OP_ERR,
+  PVRDMA_WC_LOC_PROT_ERR,
+  PVRDMA_WC_WR_FLUSH_ERR,
+  PVRDMA_WC_MW_BIND_ERR,
+  PVRDMA_WC_BAD_RESP_ERR,
+  PVRDMA_WC_LOC_ACCESS_ERR,
+  PVRDMA_WC_REM_INV_REQ_ERR,
+  PVRDMA_WC_REM_ACCESS_ERR,
+  PVRDMA_WC_REM_OP_ERR,
+  PVRDMA_WC_RETRY_EXC_ERR,
+  PVRDMA_WC_RNR_RETRY_EXC_ERR,
+  PVRDMA_WC_LOC_RDD_VIOL_ERR,
+  PVRDMA_WC_REM_INV_RD_REQ_ERR,
+  PVRDMA_WC_REM_ABORT_ERR,
+  PVRDMA_WC_INV_EECN_ERR,
+  PVRDMA_WC_INV_EEC_STATE_ERR,
+  PVRDMA_WC_FATAL_ERR,
+  PVRDMA_WC_RESP_TIMEOUT_ERR,
+  PVRDMA_WC_GENERAL_ERR,
+};
+enum pvrdma_wc_opcode {
+  PVRDMA_WC_SEND,
+  PVRDMA_WC_RDMA_WRITE,
+  PVRDMA_WC_RDMA_READ,
+  PVRDMA_WC_COMP_SWAP,
+  PVRDMA_WC_FETCH_ADD,
+  PVRDMA_WC_BIND_MW,
+  PVRDMA_WC_LSO,
+  PVRDMA_WC_LOCAL_INV,
+  PVRDMA_WC_FAST_REG_MR,
+  PVRDMA_WC_MASKED_COMP_SWAP,
+  PVRDMA_WC_MASKED_FETCH_ADD,
+  PVRDMA_WC_RECV = 1 << 7,
+  PVRDMA_WC_RECV_RDMA_WITH_IMM,
+};
+enum pvrdma_wc_flags {
+  PVRDMA_WC_GRH = 1 << 0,
+  PVRDMA_WC_WITH_IMM = 1 << 1,
+  PVRDMA_WC_WITH_INVALIDATE = 1 << 2,
+  PVRDMA_WC_IP_CSUM_OK = 1 << 3,
+  PVRDMA_WC_WITH_SMAC = 1 << 4,
+  PVRDMA_WC_WITH_VLAN = 1 << 5,
+  PVRDMA_WC_WITH_NETWORK_HDR_TYPE = 1 << 6,
+  PVRDMA_WC_FLAGS_MAX = PVRDMA_WC_WITH_NETWORK_HDR_TYPE,
+};
+enum pvrdma_network_type {
+  PVRDMA_NETWORK_IB,
+  PVRDMA_NETWORK_ROCE_V1 = PVRDMA_NETWORK_IB,
+  PVRDMA_NETWORK_IPV4,
+  PVRDMA_NETWORK_IPV6
+};
+struct pvrdma_alloc_ucontext_resp {
+  __u32 qp_tab_size;
+  __u32 reserved;
+};
+struct pvrdma_alloc_pd_resp {
+  __u32 pdn;
+  __u32 reserved;
+};
+struct pvrdma_create_cq {
+  __aligned_u64 buf_addr;
+  __u32 buf_size;
+  __u32 reserved;
+};
+struct pvrdma_create_cq_resp {
+  __u32 cqn;
+  __u32 reserved;
+};
+struct pvrdma_resize_cq {
+  __aligned_u64 buf_addr;
+  __u32 buf_size;
+  __u32 reserved;
+};
+struct pvrdma_create_srq {
+  __aligned_u64 buf_addr;
+  __u32 buf_size;
+  __u32 reserved;
+};
+struct pvrdma_create_srq_resp {
+  __u32 srqn;
+  __u32 reserved;
+};
+struct pvrdma_create_qp {
+  __aligned_u64 rbuf_addr;
+  __aligned_u64 sbuf_addr;
+  __u32 rbuf_size;
+  __u32 sbuf_size;
+  __aligned_u64 qp_addr;
+};
+struct pvrdma_create_qp_resp {
+  __u32 qpn;
+  __u32 qp_handle;
+};
+struct pvrdma_ex_cmp_swap {
+  __aligned_u64 swap_val;
+  __aligned_u64 compare_val;
+  __aligned_u64 swap_mask;
+  __aligned_u64 compare_mask;
+};
+struct pvrdma_ex_fetch_add {
+  __aligned_u64 add_val;
+  __aligned_u64 field_boundary;
+};
+struct pvrdma_av {
+  __u32 port_pd;
+  __u32 sl_tclass_flowlabel;
+  __u8 dgid[16];
+  __u8 src_path_bits;
+  __u8 gid_index;
+  __u8 stat_rate;
+  __u8 hop_limit;
+  __u8 dmac[6];
+  __u8 reserved[6];
+};
+struct pvrdma_sge {
+  __aligned_u64 addr;
+  __u32 length;
+  __u32 lkey;
+};
+struct pvrdma_rq_wqe_hdr {
+  __aligned_u64 wr_id;
+  __u32 num_sge;
+  __u32 total_len;
+};
+struct pvrdma_sq_wqe_hdr {
+  __aligned_u64 wr_id;
+  __u32 num_sge;
+  __u32 total_len;
+  __u32 opcode;
+  __u32 send_flags;
+  union {
+    __be32 imm_data;
+    __u32 invalidate_rkey;
+  } ex;
+  __u32 reserved;
+  union {
+    struct {
+      __aligned_u64 remote_addr;
+      __u32 rkey;
+      __u8 reserved[4];
+    } rdma;
+    struct {
+      __aligned_u64 remote_addr;
+      __aligned_u64 compare_add;
+      __aligned_u64 swap;
+      __u32 rkey;
+      __u32 reserved;
+    } atomic;
+    struct {
+      __aligned_u64 remote_addr;
+      __u32 log_arg_sz;
+      __u32 rkey;
+      union {
+        struct pvrdma_ex_cmp_swap cmp_swap;
+        struct pvrdma_ex_fetch_add fetch_add;
+      } wr_data;
+    } masked_atomics;
+    struct {
+      __aligned_u64 iova_start;
+      __aligned_u64 pl_pdir_dma;
+      __u32 page_shift;
+      __u32 page_list_len;
+      __u32 length;
+      __u32 access_flags;
+      __u32 rkey;
+      __u32 reserved;
+    } fast_reg;
+    struct {
+      __u32 remote_qpn;
+      __u32 remote_qkey;
+      struct pvrdma_av av;
+    } ud;
+  } wr;
+};
+struct pvrdma_cqe {
+  __aligned_u64 wr_id;
+  __aligned_u64 qp;
+  __u32 opcode;
+  __u32 status;
+  __u32 byte_len;
+  __be32 imm_data;
+  __u32 src_qp;
+  __u32 wc_flags;
+  __u32 vendor_err;
+  __u16 pkey_index;
+  __u16 slid;
+  __u8 sl;
+  __u8 dlid_path_bits;
+  __u8 port_num;
+  __u8 smac[6];
+  __u8 network_hdr_type;
+  __u8 reserved2[6];
+};
+#endif
diff --git a/i686-linux-musl/include/regex.h b/i686-linux-musl/include/regex.h
new file mode 100644
index 0000000..dce2177
--- /dev/null
+++ b/i686-linux-musl/include/regex.h
@@ -0,0 +1,62 @@
+#ifndef _REGEX_H
+#define _REGEX_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_regoff_t
+#define __NEED_size_t
+
+#include <bits/alltypes.h>
+
+typedef struct re_pattern_buffer {
+	size_t re_nsub;
+	void *__opaque, *__padding[4];
+	size_t __nsub2;
+	char __padding2;
+} regex_t;
+
+typedef struct {
+	regoff_t rm_so;
+	regoff_t rm_eo;
+} regmatch_t;
+
+#define REG_EXTENDED    1
+#define REG_ICASE       2
+#define REG_NEWLINE     4
+#define REG_NOSUB       8
+
+#define REG_NOTBOL      1
+#define REG_NOTEOL      2
+
+#define REG_OK          0
+#define REG_NOMATCH     1
+#define REG_BADPAT      2
+#define REG_ECOLLATE    3
+#define REG_ECTYPE      4
+#define REG_EESCAPE     5
+#define REG_ESUBREG     6
+#define REG_EBRACK      7
+#define REG_EPAREN      8
+#define REG_EBRACE      9
+#define REG_BADBR       10
+#define REG_ERANGE      11
+#define REG_ESPACE      12
+#define REG_BADRPT      13
+
+#define REG_ENOSYS      -1
+
+int regcomp(regex_t *__restrict, const char *__restrict, int);
+int regexec(const regex_t *__restrict, const char *__restrict, size_t, regmatch_t *__restrict, int);
+void regfree(regex_t *);
+
+size_t regerror(int, const regex_t *__restrict, char *__restrict, size_t);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/resolv.h b/i686-linux-musl/include/resolv.h
new file mode 100644
index 0000000..8b23ad6
--- /dev/null
+++ b/i686-linux-musl/include/resolv.h
@@ -0,0 +1,142 @@
+#ifndef _RESOLV_H
+#define _RESOLV_H
+
+#include <stdint.h>
+#include <arpa/nameser.h>
+#include <netinet/in.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MAXNS			3
+#define MAXDFLSRCH		3
+#define MAXDNSRCH		6
+#define LOCALDOMAINPARTS	2
+
+#define RES_TIMEOUT		5
+#define MAXRESOLVSORT		10
+#define RES_MAXNDOTS		15
+#define RES_MAXRETRANS		30
+#define RES_MAXRETRY		5
+#define RES_DFLRETRY		2
+#define RES_MAXTIME		65535
+
+/* unused; purely for broken apps */
+typedef struct __res_state {
+	int retrans;
+	int retry;
+	unsigned long options;
+	int nscount;
+	struct sockaddr_in nsaddr_list[MAXNS];
+# define nsaddr	nsaddr_list[0]
+	unsigned short id;
+	char *dnsrch[MAXDNSRCH+1];
+	char defdname[256];
+	unsigned long pfcode;
+	unsigned ndots:4;
+	unsigned nsort:4;
+	unsigned ipv6_unavail:1;
+	unsigned unused:23;
+	struct {
+		struct in_addr addr;
+		uint32_t mask;
+	} sort_list[MAXRESOLVSORT];
+	void *qhook;
+	void *rhook;
+	int res_h_errno;
+	int _vcsock;
+	unsigned _flags;
+	union {
+		char pad[52];
+		struct {
+			uint16_t		nscount;
+			uint16_t		nsmap[MAXNS];
+			int			nssocks[MAXNS];
+			uint16_t		nscount6;
+			uint16_t		nsinit;
+			struct sockaddr_in6	*nsaddrs[MAXNS];
+			unsigned int		_initstamp[2];
+		} _ext;
+	} _u;
+} *res_state;
+
+#define	__RES	19960801
+
+#ifndef _PATH_RESCONF
+#define _PATH_RESCONF        "/etc/resolv.conf"
+#endif
+
+struct res_sym {
+	int number;
+	char *name;
+	char *humanname;
+};
+
+#define	RES_F_VC	0x00000001
+#define	RES_F_CONN	0x00000002
+#define RES_F_EDNS0ERR	0x00000004
+
+#define	RES_EXHAUSTIVE	0x00000001
+
+#define RES_INIT	0x00000001
+#define RES_DEBUG	0x00000002
+#define RES_AAONLY	0x00000004
+#define RES_USEVC	0x00000008
+#define RES_PRIMARY	0x00000010
+#define RES_IGNTC	0x00000020
+#define RES_RECURSE	0x00000040
+#define RES_DEFNAMES	0x00000080
+#define RES_STAYOPEN	0x00000100
+#define RES_DNSRCH	0x00000200
+#define	RES_INSECURE1	0x00000400
+#define	RES_INSECURE2	0x00000800
+#define	RES_NOALIASES	0x00001000
+#define	RES_USE_INET6	0x00002000
+#define RES_ROTATE	0x00004000
+#define	RES_NOCHECKNAME	0x00008000
+#define	RES_KEEPTSIG	0x00010000
+#define	RES_BLAST	0x00020000
+#define RES_USEBSTRING	0x00040000
+#define RES_NOIP6DOTINT	0x00080000
+#define RES_USE_EDNS0	0x00100000
+#define RES_SNGLKUP	0x00200000
+#define RES_SNGLKUPREOP	0x00400000
+#define RES_USE_DNSSEC	0x00800000
+
+#define RES_DEFAULT	(RES_RECURSE|RES_DEFNAMES|RES_DNSRCH|RES_NOIP6DOTINT)
+
+#define RES_PRF_STATS	0x00000001
+#define RES_PRF_UPDATE	0x00000002
+#define RES_PRF_CLASS   0x00000004
+#define RES_PRF_CMD	0x00000008
+#define RES_PRF_QUES	0x00000010
+#define RES_PRF_ANS	0x00000020
+#define RES_PRF_AUTH	0x00000040
+#define RES_PRF_ADD	0x00000080
+#define RES_PRF_HEAD1	0x00000100
+#define RES_PRF_HEAD2	0x00000200
+#define RES_PRF_TTLID	0x00000400
+#define RES_PRF_HEADX	0x00000800
+#define RES_PRF_QUERY	0x00001000
+#define RES_PRF_REPLY	0x00002000
+#define RES_PRF_INIT	0x00004000
+
+struct __res_state *__res_state(void);
+#define _res (*__res_state())
+
+int res_init(void);
+int res_query(const char *, int, int, unsigned char *, int);
+int res_querydomain(const char *, const char *, int, int, unsigned char *, int);
+int res_search(const char *, int, int, unsigned char *, int);
+int res_mkquery(int, const char *, int, int, const unsigned char *, int, const unsigned char*, unsigned char *, int);
+int res_send(const unsigned char *, int, unsigned char *, int);
+int dn_comp(const char *, unsigned char *, int, unsigned char **, unsigned char **);
+int dn_expand(const unsigned char *, const unsigned char *, const unsigned char *, char *, int);
+int dn_skipname(const unsigned char *, const unsigned char *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sched.h b/i686-linux-musl/include/sched.h
new file mode 100644
index 0000000..fda4b48
--- /dev/null
+++ b/i686-linux-musl/include/sched.h
@@ -0,0 +1,148 @@
+#ifndef _SCHED_H
+#define _SCHED_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_struct_timespec
+#define __NEED_pid_t
+#define __NEED_time_t
+
+#ifdef _GNU_SOURCE
+#define __NEED_size_t
+#endif
+
+#include <bits/alltypes.h>
+
+struct sched_param {
+	int sched_priority;
+	int __reserved1;
+#if _REDIR_TIME64
+	long __reserved2[4];
+#else
+	struct {
+		time_t __reserved1;
+		long __reserved2;
+	} __reserved2[2];
+#endif
+	int __reserved3;
+};
+
+int    sched_get_priority_max(int);
+int    sched_get_priority_min(int);
+int    sched_getparam(pid_t, struct sched_param *);
+int    sched_getscheduler(pid_t);
+int    sched_rr_get_interval(pid_t, struct timespec *);
+int    sched_setparam(pid_t, const struct sched_param *);
+int    sched_setscheduler(pid_t, int, const struct sched_param *);
+int     sched_yield(void);
+
+#define SCHED_OTHER 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
+
+#ifdef _GNU_SOURCE
+#define CSIGNAL		0x000000ff
+#define CLONE_NEWTIME	0x00000080
+#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
+int clone (int (*)(void *), void *, int, void *, ...);
+int unshare(int);
+int setns(int, int);
+
+void *memcpy(void *__restrict, const void *__restrict, size_t);
+int memcmp(const void *, const void *, size_t);
+void *memset (void *, int, size_t);
+void *calloc(size_t, size_t);
+void free(void *);
+
+typedef struct cpu_set_t { unsigned long __bits[128/sizeof(long)]; } cpu_set_t;
+int __sched_cpucount(size_t, const cpu_set_t *);
+int sched_getcpu(void);
+int sched_getaffinity(pid_t, size_t, cpu_set_t *);
+int sched_setaffinity(pid_t, size_t, const cpu_set_t *);
+
+#define __CPU_op_S(i, size, set, op) ( (i)/8U >= (size) ? 0 : \
+	(((unsigned long *)(set))[(i)/8/sizeof(long)] op (1UL<<((i)%(8*sizeof(long))))) )
+
+#define CPU_SET_S(i, size, set) __CPU_op_S(i, size, set, |=)
+#define CPU_CLR_S(i, size, set) __CPU_op_S(i, size, set, &=~)
+#define CPU_ISSET_S(i, size, set) __CPU_op_S(i, size, set, &)
+
+#define __CPU_op_func_S(func, op) \
+static __inline void __CPU_##func##_S(size_t __size, cpu_set_t *__dest, \
+	const cpu_set_t *__src1, const cpu_set_t *__src2) \
+{ \
+	size_t __i; \
+	for (__i=0; __i<__size/sizeof(long); __i++) \
+		((unsigned long *)__dest)[__i] = ((unsigned long *)__src1)[__i] \
+			op ((unsigned long *)__src2)[__i] ; \
+}
+
+__CPU_op_func_S(AND, &)
+__CPU_op_func_S(OR, |)
+__CPU_op_func_S(XOR, ^)
+
+#define CPU_AND_S(a,b,c,d) __CPU_AND_S(a,b,c,d)
+#define CPU_OR_S(a,b,c,d) __CPU_OR_S(a,b,c,d)
+#define CPU_XOR_S(a,b,c,d) __CPU_XOR_S(a,b,c,d)
+
+#define CPU_COUNT_S(size,set) __sched_cpucount(size,set)
+#define CPU_ZERO_S(size,set) memset(set,0,size)
+#define CPU_EQUAL_S(size,set1,set2) (!memcmp(set1,set2,size))
+
+#define CPU_ALLOC_SIZE(n) (sizeof(long) * ( (n)/(8*sizeof(long)) \
+	+ ((n)%(8*sizeof(long)) + 8*sizeof(long)-1)/(8*sizeof(long)) ) )
+#define CPU_ALLOC(n) ((cpu_set_t *)calloc(1,CPU_ALLOC_SIZE(n)))
+#define CPU_FREE(set) free(set)
+
+#define CPU_SETSIZE 128
+
+#define CPU_SET(i, set) CPU_SET_S(i,sizeof(cpu_set_t),set)
+#define CPU_CLR(i, set) CPU_CLR_S(i,sizeof(cpu_set_t),set)
+#define CPU_ISSET(i, set) CPU_ISSET_S(i,sizeof(cpu_set_t),set)
+#define CPU_AND(d,s1,s2) CPU_AND_S(sizeof(cpu_set_t),d,s1,s2)
+#define CPU_OR(d,s1,s2) CPU_OR_S(sizeof(cpu_set_t),d,s1,s2)
+#define CPU_XOR(d,s1,s2) CPU_XOR_S(sizeof(cpu_set_t),d,s1,s2)
+#define CPU_COUNT(set) CPU_COUNT_S(sizeof(cpu_set_t),set)
+#define CPU_ZERO(set) CPU_ZERO_S(sizeof(cpu_set_t),set)
+#define CPU_EQUAL(s1,s2) CPU_EQUAL_S(sizeof(cpu_set_t),s1,s2)
+
+#endif
+
+#if _REDIR_TIME64
+__REDIR(sched_rr_get_interval, __sched_rr_get_interval_time64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/scsi/cxlflash_ioctl.h b/i686-linux-musl/include/scsi/cxlflash_ioctl.h
new file mode 100644
index 0000000..9781905
--- /dev/null
+++ b/i686-linux-musl/include/scsi/cxlflash_ioctl.h
@@ -0,0 +1,186 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _CXLFLASH_IOCTL_H
+#define _CXLFLASH_IOCTL_H
+#include <linux/types.h>
+#define CXLFLASH_WWID_LEN 16
+#define DK_CXLFLASH_VERSION_0 0
+struct dk_cxlflash_hdr {
+  __u16 version;
+  __u16 rsvd[3];
+  __u64 flags;
+  __u64 return_flags;
+};
+#define DK_CXLFLASH_ALL_PORTS_ACTIVE 0x0000000000000001ULL
+#define DK_CXLFLASH_APP_CLOSE_ADAP_FD 0x0000000000000002ULL
+#define DK_CXLFLASH_CONTEXT_SQ_CMD_MODE 0x0000000000000004ULL
+#define DK_CXLFLASH_ATTACH_REUSE_CONTEXT 0x8000000000000000ULL
+struct dk_cxlflash_attach {
+  struct dk_cxlflash_hdr hdr;
+  __u64 num_interrupts;
+  __u64 context_id;
+  __u64 mmio_size;
+  __u64 block_size;
+  __u64 adap_fd;
+  __u64 last_lba;
+  __u64 max_xfer;
+  __u64 reserved[8];
+};
+struct dk_cxlflash_detach {
+  struct dk_cxlflash_hdr hdr;
+  __u64 context_id;
+  __u64 reserved[8];
+};
+struct dk_cxlflash_udirect {
+  struct dk_cxlflash_hdr hdr;
+  __u64 context_id;
+  __u64 rsrc_handle;
+  __u64 last_lba;
+  __u64 reserved[8];
+};
+#define DK_CXLFLASH_UVIRTUAL_NEED_WRITE_SAME 0x8000000000000000ULL
+struct dk_cxlflash_uvirtual {
+  struct dk_cxlflash_hdr hdr;
+  __u64 context_id;
+  __u64 lun_size;
+  __u64 rsrc_handle;
+  __u64 last_lba;
+  __u64 reserved[8];
+};
+struct dk_cxlflash_release {
+  struct dk_cxlflash_hdr hdr;
+  __u64 context_id;
+  __u64 rsrc_handle;
+  __u64 reserved[8];
+};
+struct dk_cxlflash_resize {
+  struct dk_cxlflash_hdr hdr;
+  __u64 context_id;
+  __u64 rsrc_handle;
+  __u64 req_size;
+  __u64 last_lba;
+  __u64 reserved[8];
+};
+struct dk_cxlflash_clone {
+  struct dk_cxlflash_hdr hdr;
+  __u64 context_id_src;
+  __u64 context_id_dst;
+  __u64 adap_fd_src;
+  __u64 reserved[8];
+};
+#define DK_CXLFLASH_VERIFY_SENSE_LEN 18
+#define DK_CXLFLASH_VERIFY_HINT_SENSE 0x8000000000000000ULL
+struct dk_cxlflash_verify {
+  struct dk_cxlflash_hdr hdr;
+  __u64 context_id;
+  __u64 rsrc_handle;
+  __u64 hint;
+  __u64 last_lba;
+  __u8 sense_data[DK_CXLFLASH_VERIFY_SENSE_LEN];
+  __u8 pad[6];
+  __u64 reserved[8];
+};
+#define DK_CXLFLASH_RECOVER_AFU_CONTEXT_RESET 0x8000000000000000ULL
+struct dk_cxlflash_recover_afu {
+  struct dk_cxlflash_hdr hdr;
+  __u64 reason;
+  __u64 context_id;
+  __u64 mmio_size;
+  __u64 adap_fd;
+  __u64 reserved[8];
+};
+#define DK_CXLFLASH_MANAGE_LUN_WWID_LEN CXLFLASH_WWID_LEN
+#define DK_CXLFLASH_MANAGE_LUN_ENABLE_SUPERPIPE 0x8000000000000000ULL
+#define DK_CXLFLASH_MANAGE_LUN_DISABLE_SUPERPIPE 0x4000000000000000ULL
+#define DK_CXLFLASH_MANAGE_LUN_ALL_PORTS_ACCESSIBLE 0x2000000000000000ULL
+struct dk_cxlflash_manage_lun {
+  struct dk_cxlflash_hdr hdr;
+  __u8 wwid[DK_CXLFLASH_MANAGE_LUN_WWID_LEN];
+  __u64 reserved[8];
+};
+union cxlflash_ioctls {
+  struct dk_cxlflash_attach attach;
+  struct dk_cxlflash_detach detach;
+  struct dk_cxlflash_udirect udirect;
+  struct dk_cxlflash_uvirtual uvirtual;
+  struct dk_cxlflash_release release;
+  struct dk_cxlflash_resize resize;
+  struct dk_cxlflash_clone clone;
+  struct dk_cxlflash_verify verify;
+  struct dk_cxlflash_recover_afu recover_afu;
+  struct dk_cxlflash_manage_lun manage_lun;
+};
+#define MAX_CXLFLASH_IOCTL_SZ (sizeof(union cxlflash_ioctls))
+#define CXL_MAGIC 0xCA
+#define CXL_IOWR(_n,_s) _IOWR(CXL_MAGIC, _n, struct _s)
+#define DK_CXLFLASH_ATTACH CXL_IOWR(0x80, dk_cxlflash_attach)
+#define DK_CXLFLASH_USER_DIRECT CXL_IOWR(0x81, dk_cxlflash_udirect)
+#define DK_CXLFLASH_RELEASE CXL_IOWR(0x82, dk_cxlflash_release)
+#define DK_CXLFLASH_DETACH CXL_IOWR(0x83, dk_cxlflash_detach)
+#define DK_CXLFLASH_VERIFY CXL_IOWR(0x84, dk_cxlflash_verify)
+#define DK_CXLFLASH_RECOVER_AFU CXL_IOWR(0x85, dk_cxlflash_recover_afu)
+#define DK_CXLFLASH_MANAGE_LUN CXL_IOWR(0x86, dk_cxlflash_manage_lun)
+#define DK_CXLFLASH_USER_VIRTUAL CXL_IOWR(0x87, dk_cxlflash_uvirtual)
+#define DK_CXLFLASH_VLUN_RESIZE CXL_IOWR(0x88, dk_cxlflash_resize)
+#define DK_CXLFLASH_VLUN_CLONE CXL_IOWR(0x89, dk_cxlflash_clone)
+#define HT_CXLFLASH_VERSION_0 0
+struct ht_cxlflash_hdr {
+  __u16 version;
+  __u16 subcmd;
+  __u16 rsvd[2];
+  __u64 flags;
+  __u64 return_flags;
+};
+#define HT_CXLFLASH_HOST_READ 0x0000000000000000ULL
+#define HT_CXLFLASH_HOST_WRITE 0x0000000000000001ULL
+#define HT_CXLFLASH_LUN_PROVISION_SUBCMD_CREATE_LUN 0x0001
+#define HT_CXLFLASH_LUN_PROVISION_SUBCMD_DELETE_LUN 0x0002
+#define HT_CXLFLASH_LUN_PROVISION_SUBCMD_QUERY_PORT 0x0003
+struct ht_cxlflash_lun_provision {
+  struct ht_cxlflash_hdr hdr;
+  __u16 port;
+  __u16 reserved16[3];
+  __u64 size;
+  __u64 lun_id;
+  __u8 wwid[CXLFLASH_WWID_LEN];
+  __u64 max_num_luns;
+  __u64 cur_num_luns;
+  __u64 max_cap_port;
+  __u64 cur_cap_port;
+  __u64 reserved[8];
+};
+#define HT_CXLFLASH_AFU_DEBUG_MAX_DATA_LEN 262144
+#define HT_CXLFLASH_AFU_DEBUG_SUBCMD_LEN 12
+struct ht_cxlflash_afu_debug {
+  struct ht_cxlflash_hdr hdr;
+  __u8 reserved8[4];
+  __u8 afu_subcmd[HT_CXLFLASH_AFU_DEBUG_SUBCMD_LEN];
+  __u64 data_ea;
+  __u32 data_len;
+  __u32 reserved32;
+  __u64 reserved[8];
+};
+union cxlflash_ht_ioctls {
+  struct ht_cxlflash_lun_provision lun_provision;
+  struct ht_cxlflash_afu_debug afu_debug;
+};
+#define MAX_HT_CXLFLASH_IOCTL_SZ (sizeof(union cxlflash_ht_ioctls))
+#define HT_CXLFLASH_LUN_PROVISION CXL_IOWR(0xBF, ht_cxlflash_lun_provision)
+#define HT_CXLFLASH_AFU_DEBUG CXL_IOWR(0xBE, ht_cxlflash_afu_debug)
+#endif
diff --git a/i686-linux-musl/include/scsi/fc/fc_els.h b/i686-linux-musl/include/scsi/fc/fc_els.h
new file mode 100644
index 0000000..04ae5b8
--- /dev/null
+++ b/i686-linux-musl/include/scsi/fc/fc_els.h
@@ -0,0 +1,718 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _FC_ELS_H_
+#define _FC_ELS_H_
+#include <linux/types.h>
+#include <asm/byteorder.h>
+enum fc_els_cmd {
+  ELS_LS_RJT = 0x01,
+  ELS_LS_ACC = 0x02,
+  ELS_PLOGI = 0x03,
+  ELS_FLOGI = 0x04,
+  ELS_LOGO = 0x05,
+  ELS_ABTX = 0x06,
+  ELS_RCS = 0x07,
+  ELS_RES = 0x08,
+  ELS_RSS = 0x09,
+  ELS_RSI = 0x0a,
+  ELS_ESTS = 0x0b,
+  ELS_ESTC = 0x0c,
+  ELS_ADVC = 0x0d,
+  ELS_RTV = 0x0e,
+  ELS_RLS = 0x0f,
+  ELS_ECHO = 0x10,
+  ELS_TEST = 0x11,
+  ELS_RRQ = 0x12,
+  ELS_REC = 0x13,
+  ELS_SRR = 0x14,
+  ELS_FPIN = 0x16,
+  ELS_EDC = 0x17,
+  ELS_RDP = 0x18,
+  ELS_RDF = 0x19,
+  ELS_PRLI = 0x20,
+  ELS_PRLO = 0x21,
+  ELS_SCN = 0x22,
+  ELS_TPLS = 0x23,
+  ELS_TPRLO = 0x24,
+  ELS_LCLM = 0x25,
+  ELS_GAID = 0x30,
+  ELS_FACT = 0x31,
+  ELS_FDACDT = 0x32,
+  ELS_NACT = 0x33,
+  ELS_NDACT = 0x34,
+  ELS_QOSR = 0x40,
+  ELS_RVCS = 0x41,
+  ELS_PDISC = 0x50,
+  ELS_FDISC = 0x51,
+  ELS_ADISC = 0x52,
+  ELS_RNC = 0x53,
+  ELS_FARP_REQ = 0x54,
+  ELS_FARP_REPL = 0x55,
+  ELS_RPS = 0x56,
+  ELS_RPL = 0x57,
+  ELS_RPBC = 0x58,
+  ELS_FAN = 0x60,
+  ELS_RSCN = 0x61,
+  ELS_SCR = 0x62,
+  ELS_RNFT = 0x63,
+  ELS_CSR = 0x68,
+  ELS_CSU = 0x69,
+  ELS_LINIT = 0x70,
+  ELS_LSTS = 0x72,
+  ELS_RNID = 0x78,
+  ELS_RLIR = 0x79,
+  ELS_LIRR = 0x7a,
+  ELS_SRL = 0x7b,
+  ELS_SBRP = 0x7c,
+  ELS_RPSC = 0x7d,
+  ELS_QSA = 0x7e,
+  ELS_EVFP = 0x7f,
+  ELS_LKA = 0x80,
+  ELS_AUTH_ELS = 0x90,
+};
+#define FC_ELS_CMDS_INIT {[ELS_LS_RJT] = "LS_RJT",[ELS_LS_ACC] = "LS_ACC",[ELS_PLOGI] = "PLOGI",[ELS_FLOGI] = "FLOGI",[ELS_LOGO] = "LOGO",[ELS_ABTX] = "ABTX",[ELS_RCS] = "RCS",[ELS_RES] = "RES",[ELS_RSS] = "RSS",[ELS_RSI] = "RSI",[ELS_ESTS] = "ESTS",[ELS_ESTC] = "ESTC",[ELS_ADVC] = "ADVC",[ELS_RTV] = "RTV",[ELS_RLS] = "RLS",[ELS_ECHO] = "ECHO",[ELS_TEST] = "TEST",[ELS_RRQ] = "RRQ",[ELS_REC] = "REC",[ELS_SRR] = "SRR",[ELS_FPIN] = "FPIN",[ELS_EDC] = "EDC",[ELS_RDP] = "RDP",[ELS_RDF] = "RDF",[ELS_PRLI] = "PRLI",[ELS_PRLO] = "PRLO",[ELS_SCN] = "SCN",[ELS_TPLS] = "TPLS",[ELS_TPRLO] = "TPRLO",[ELS_LCLM] = "LCLM",[ELS_GAID] = "GAID",[ELS_FACT] = "FACT",[ELS_FDACDT] = "FDACDT",[ELS_NACT] = "NACT",[ELS_NDACT] = "NDACT",[ELS_QOSR] = "QOSR",[ELS_RVCS] = "RVCS",[ELS_PDISC] = "PDISC",[ELS_FDISC] = "FDISC",[ELS_ADISC] = "ADISC",[ELS_RNC] = "RNC",[ELS_FARP_REQ] = "FARP_REQ",[ELS_FARP_REPL] = "FARP_REPL",[ELS_RPS] = "RPS",[ELS_RPL] = "RPL",[ELS_RPBC] = "RPBC",[ELS_FAN] = "FAN",[ELS_RSCN] = "RSCN",[ELS_SCR] = "SCR",[ELS_RNFT] = "RNFT",[ELS_CSR] = "CSR",[ELS_CSU] = "CSU",[ELS_LINIT] = "LINIT",[ELS_LSTS] = "LSTS",[ELS_RNID] = "RNID",[ELS_RLIR] = "RLIR",[ELS_LIRR] = "LIRR",[ELS_SRL] = "SRL",[ELS_SBRP] = "SBRP",[ELS_RPSC] = "RPSC",[ELS_QSA] = "QSA",[ELS_EVFP] = "EVFP",[ELS_LKA] = "LKA",[ELS_AUTH_ELS] = "AUTH_ELS", \
+}
+struct fc_els_ls_acc {
+  __u8 la_cmd;
+  __u8 la_resv[3];
+};
+struct fc_els_ls_rjt {
+  __u8 er_cmd;
+  __u8 er_resv[4];
+  __u8 er_reason;
+  __u8 er_explan;
+  __u8 er_vendor;
+};
+enum fc_els_rjt_reason {
+  ELS_RJT_NONE = 0,
+  ELS_RJT_INVAL = 0x01,
+  ELS_RJT_LOGIC = 0x03,
+  ELS_RJT_BUSY = 0x05,
+  ELS_RJT_PROT = 0x07,
+  ELS_RJT_UNAB = 0x09,
+  ELS_RJT_UNSUP = 0x0b,
+  ELS_RJT_INPROG = 0x0e,
+  ELS_RJT_FIP = 0x20,
+  ELS_RJT_VENDOR = 0xff,
+};
+enum fc_els_rjt_explan {
+  ELS_EXPL_NONE = 0x00,
+  ELS_EXPL_SPP_OPT_ERR = 0x01,
+  ELS_EXPL_SPP_ICTL_ERR = 0x03,
+  ELS_EXPL_AH = 0x11,
+  ELS_EXPL_AH_REQ = 0x13,
+  ELS_EXPL_SID = 0x15,
+  ELS_EXPL_OXID_RXID = 0x17,
+  ELS_EXPL_INPROG = 0x19,
+  ELS_EXPL_PLOGI_REQD = 0x1e,
+  ELS_EXPL_INSUF_RES = 0x29,
+  ELS_EXPL_UNAB_DATA = 0x2a,
+  ELS_EXPL_UNSUPR = 0x2c,
+  ELS_EXPL_INV_LEN = 0x2d,
+  ELS_EXPL_NOT_NEIGHBOR = 0x62,
+};
+enum fc_ls_tlv_dtag {
+  ELS_DTAG_LS_REQ_INFO = 0x00000001,
+  ELS_DTAG_LNK_FAULT_CAP = 0x0001000D,
+  ELS_DTAG_CG_SIGNAL_CAP = 0x0001000F,
+  ELS_DTAG_LNK_INTEGRITY = 0x00020001,
+  ELS_DTAG_DELIVERY = 0x00020002,
+  ELS_DTAG_PEER_CONGEST = 0x00020003,
+  ELS_DTAG_CONGESTION = 0x00020004,
+  ELS_DTAG_FPIN_REGISTER = 0x00030001,
+};
+#define FC_LS_TLV_DTAG_INIT { { ELS_DTAG_LS_REQ_INFO, "Link Service Request Information" }, { ELS_DTAG_LNK_FAULT_CAP, "Link Fault Capability" }, { ELS_DTAG_CG_SIGNAL_CAP, "Congestion Signaling Capability" }, { ELS_DTAG_LNK_INTEGRITY, "Link Integrity Notification" }, { ELS_DTAG_DELIVERY, "Delivery Notification Present" }, { ELS_DTAG_PEER_CONGEST, "Peer Congestion Notification" }, { ELS_DTAG_CONGESTION, "Congestion Notification" }, { ELS_DTAG_FPIN_REGISTER, "FPIN Registration" }, \
+}
+struct fc_tlv_desc {
+  __be32 desc_tag;
+  __be32 desc_len;
+  __u8 desc_value[0];
+};
+#define FC_TLV_DESC_HDR_SZ sizeof(struct fc_tlv_desc)
+#define FC_TLV_DESC_LENGTH_FROM_SZ(desc) (sizeof(desc) - FC_TLV_DESC_HDR_SZ)
+#define FC_TLV_DESC_SZ_FROM_LENGTH(tlv) (__be32_to_cpu((tlv)->desc_len) + FC_TLV_DESC_HDR_SZ)
+struct fc_els_lsri_desc {
+  __be32 desc_tag;
+  __be32 desc_len;
+  struct {
+    __u8 cmd;
+    __u8 bytes[3];
+  } rqst_w0;
+};
+struct fc_els_csp {
+  __u8 sp_hi_ver;
+  __u8 sp_lo_ver;
+  __be16 sp_bb_cred;
+  __be16 sp_features;
+  __be16 sp_bb_data;
+  union {
+    struct {
+      __be16 _sp_tot_seq;
+      __be16 _sp_rel_off;
+    } sp_plogi;
+    struct {
+      __be32 _sp_r_a_tov;
+    } sp_flogi_acc;
+  } sp_u;
+  __be32 sp_e_d_tov;
+};
+#define sp_tot_seq sp_u.sp_plogi._sp_tot_seq
+#define sp_rel_off sp_u.sp_plogi._sp_rel_off
+#define sp_r_a_tov sp_u.sp_flogi_acc._sp_r_a_tov
+#define FC_SP_BB_DATA_MASK 0xfff
+#define FC_SP_MIN_MAX_PAYLOAD FC_MIN_MAX_PAYLOAD
+#define FC_SP_MAX_MAX_PAYLOAD FC_MAX_PAYLOAD
+#define FC_SP_FT_NPIV 0x8000
+#define FC_SP_FT_CIRO 0x8000
+#define FC_SP_FT_CLAD 0x8000
+#define FC_SP_FT_RAND 0x4000
+#define FC_SP_FT_VAL 0x2000
+#define FC_SP_FT_NPIV_ACC 0x2000
+#define FC_SP_FT_FPORT 0x1000
+#define FC_SP_FT_ABB 0x0800
+#define FC_SP_FT_EDTR 0x0400
+#define FC_SP_FT_MCAST 0x0200
+#define FC_SP_FT_BCAST 0x0100
+#define FC_SP_FT_HUNT 0x0080
+#define FC_SP_FT_SIMP 0x0040
+#define FC_SP_FT_SEC 0x0020
+#define FC_SP_FT_CSYN 0x0010
+#define FC_SP_FT_RTTOV 0x0008
+#define FC_SP_FT_HALF 0x0004
+#define FC_SP_FT_SEQC 0x0002
+#define FC_SP_FT_PAYL 0x0001
+struct fc_els_cssp {
+  __be16 cp_class;
+  __be16 cp_init;
+  __be16 cp_recip;
+  __be16 cp_rdfs;
+  __be16 cp_con_seq;
+  __be16 cp_ee_cred;
+  __u8 cp_resv1;
+  __u8 cp_open_seq;
+  __u8 _cp_resv2[2];
+};
+#define FC_CPC_VALID 0x8000
+#define FC_CPC_IMIX 0x4000
+#define FC_CPC_SEQ 0x0800
+#define FC_CPC_CAMP 0x0200
+#define FC_CPC_PRI 0x0080
+#define FC_CPI_CSYN 0x0010
+#define FC_CPR_CSYN 0x0008
+struct fc_els_flogi {
+  __u8 fl_cmd;
+  __u8 _fl_resvd[3];
+  struct fc_els_csp fl_csp;
+  __be64 fl_wwpn;
+  __be64 fl_wwnn;
+  struct fc_els_cssp fl_cssp[4];
+  __u8 fl_vend[16];
+} __attribute__((__packed__));
+struct fc_els_spp {
+  __u8 spp_type;
+  __u8 spp_type_ext;
+  __u8 spp_flags;
+  __u8 _spp_resvd;
+  __be32 spp_orig_pa;
+  __be32 spp_resp_pa;
+  __be32 spp_params;
+};
+#define FC_SPP_OPA_VAL 0x80
+#define FC_SPP_RPA_VAL 0x40
+#define FC_SPP_EST_IMG_PAIR 0x20
+#define FC_SPP_RESP_MASK 0x0f
+enum fc_els_spp_resp {
+  FC_SPP_RESP_ACK = 1,
+  FC_SPP_RESP_RES = 2,
+  FC_SPP_RESP_INIT = 3,
+  FC_SPP_RESP_NO_PA = 4,
+  FC_SPP_RESP_CONF = 5,
+  FC_SPP_RESP_COND = 6,
+  FC_SPP_RESP_MULT = 7,
+  FC_SPP_RESP_INVL = 8,
+};
+struct fc_els_rrq {
+  __u8 rrq_cmd;
+  __u8 rrq_zero[3];
+  __u8 rrq_resvd;
+  __u8 rrq_s_id[3];
+  __be16 rrq_ox_id;
+  __be16 rrq_rx_id;
+};
+struct fc_els_rec {
+  __u8 rec_cmd;
+  __u8 rec_zero[3];
+  __u8 rec_resvd;
+  __u8 rec_s_id[3];
+  __be16 rec_ox_id;
+  __be16 rec_rx_id;
+};
+struct fc_els_rec_acc {
+  __u8 reca_cmd;
+  __u8 reca_zero[3];
+  __be16 reca_ox_id;
+  __be16 reca_rx_id;
+  __u8 reca_resvd1;
+  __u8 reca_ofid[3];
+  __u8 reca_resvd2;
+  __u8 reca_rfid[3];
+  __be32 reca_fc4value;
+  __be32 reca_e_stat;
+};
+struct fc_els_prli {
+  __u8 prli_cmd;
+  __u8 prli_spp_len;
+  __be16 prli_len;
+};
+struct fc_els_prlo {
+  __u8 prlo_cmd;
+  __u8 prlo_obs;
+  __be16 prlo_len;
+};
+struct fc_els_adisc {
+  __u8 adisc_cmd;
+  __u8 adisc_resv[3];
+  __u8 adisc_resv1;
+  __u8 adisc_hard_addr[3];
+  __be64 adisc_wwpn;
+  __be64 adisc_wwnn;
+  __u8 adisc_resv2;
+  __u8 adisc_port_id[3];
+} __attribute__((__packed__));
+struct fc_els_logo {
+  __u8 fl_cmd;
+  __u8 fl_zero[3];
+  __u8 fl_resvd;
+  __u8 fl_n_port_id[3];
+  __be64 fl_n_port_wwn;
+};
+struct fc_els_rtv {
+  __u8 rtv_cmd;
+  __u8 rtv_zero[3];
+};
+struct fc_els_rtv_acc {
+  __u8 rtv_cmd;
+  __u8 rtv_zero[3];
+  __be32 rtv_r_a_tov;
+  __be32 rtv_e_d_tov;
+  __be32 rtv_toq;
+};
+#define FC_ELS_RTV_EDRES (1 << 26)
+#define FC_ELS_RTV_RTTOV (1 << 19)
+struct fc_els_scr {
+  __u8 scr_cmd;
+  __u8 scr_resv[6];
+  __u8 scr_reg_func;
+};
+enum fc_els_scr_func {
+  ELS_SCRF_FAB = 1,
+  ELS_SCRF_NPORT = 2,
+  ELS_SCRF_FULL = 3,
+  ELS_SCRF_CLEAR = 255,
+};
+struct fc_els_rscn {
+  __u8 rscn_cmd;
+  __u8 rscn_page_len;
+  __be16 rscn_plen;
+};
+struct fc_els_rscn_page {
+  __u8 rscn_page_flags;
+  __u8 rscn_fid[3];
+};
+#define ELS_RSCN_EV_QUAL_BIT 2
+#define ELS_RSCN_EV_QUAL_MASK 0xf
+#define ELS_RSCN_ADDR_FMT_BIT 0
+#define ELS_RSCN_ADDR_FMT_MASK 0x3
+enum fc_els_rscn_ev_qual {
+  ELS_EV_QUAL_NONE = 0,
+  ELS_EV_QUAL_NS_OBJ = 1,
+  ELS_EV_QUAL_PORT_ATTR = 2,
+  ELS_EV_QUAL_SERV_OBJ = 3,
+  ELS_EV_QUAL_SW_CONFIG = 4,
+  ELS_EV_QUAL_REM_OBJ = 5,
+};
+enum fc_els_rscn_addr_fmt {
+  ELS_ADDR_FMT_PORT = 0,
+  ELS_ADDR_FMT_AREA = 1,
+  ELS_ADDR_FMT_DOM = 2,
+  ELS_ADDR_FMT_FAB = 3,
+};
+struct fc_els_rnid {
+  __u8 rnid_cmd;
+  __u8 rnid_resv[3];
+  __u8 rnid_fmt;
+  __u8 rnid_resv2[3];
+};
+enum fc_els_rnid_fmt {
+  ELS_RNIDF_NONE = 0,
+  ELS_RNIDF_GEN = 0xdf,
+};
+struct fc_els_rnid_resp {
+  __u8 rnid_cmd;
+  __u8 rnid_resv[3];
+  __u8 rnid_fmt;
+  __u8 rnid_cid_len;
+  __u8 rnid_resv2;
+  __u8 rnid_sid_len;
+};
+struct fc_els_rnid_cid {
+  __be64 rnid_wwpn;
+  __be64 rnid_wwnn;
+};
+struct fc_els_rnid_gen {
+  __u8 rnid_vend_id[16];
+  __be32 rnid_atype;
+  __be32 rnid_phys_port;
+  __be32 rnid_att_nodes;
+  __u8 rnid_node_mgmt;
+  __u8 rnid_ip_ver;
+  __be16 rnid_prot_port;
+  __be32 rnid_ip_addr[4];
+  __u8 rnid_resvd[2];
+  __be16 rnid_vend_spec;
+};
+enum fc_els_rnid_atype {
+  ELS_RNIDA_UNK = 0x01,
+  ELS_RNIDA_OTHER = 0x02,
+  ELS_RNIDA_HUB = 0x03,
+  ELS_RNIDA_SWITCH = 0x04,
+  ELS_RNIDA_GATEWAY = 0x05,
+  ELS_RNIDA_CONV = 0x06,
+  ELS_RNIDA_HBA = 0x07,
+  ELS_RNIDA_PROXY = 0x08,
+  ELS_RNIDA_STORAGE = 0x09,
+  ELS_RNIDA_HOST = 0x0a,
+  ELS_RNIDA_SUBSYS = 0x0b,
+  ELS_RNIDA_ACCESS = 0x0e,
+  ELS_RNIDA_NAS = 0x11,
+  ELS_RNIDA_BRIDGE = 0x12,
+  ELS_RNIDA_VIRT = 0x13,
+  ELS_RNIDA_MF = 0xff,
+  ELS_RNIDA_MF_HUB = 1UL << 31,
+  ELS_RNIDA_MF_SW = 1UL << 30,
+  ELS_RNIDA_MF_GW = 1UL << 29,
+  ELS_RNIDA_MF_ST = 1UL << 28,
+  ELS_RNIDA_MF_HOST = 1UL << 27,
+  ELS_RNIDA_MF_SUB = 1UL << 26,
+  ELS_RNIDA_MF_ACC = 1UL << 25,
+  ELS_RNIDA_MF_WDM = 1UL << 24,
+  ELS_RNIDA_MF_NAS = 1UL << 23,
+  ELS_RNIDA_MF_BR = 1UL << 22,
+  ELS_RNIDA_MF_VIRT = 1UL << 21,
+};
+enum fc_els_rnid_mgmt {
+  ELS_RNIDM_SNMP = 0,
+  ELS_RNIDM_TELNET = 1,
+  ELS_RNIDM_HTTP = 2,
+  ELS_RNIDM_HTTPS = 3,
+  ELS_RNIDM_XML = 4,
+};
+enum fc_els_rnid_ipver {
+  ELS_RNIDIP_NONE = 0,
+  ELS_RNIDIP_V4 = 1,
+  ELS_RNIDIP_V6 = 2,
+};
+struct fc_els_rpl {
+  __u8 rpl_cmd;
+  __u8 rpl_resv[5];
+  __be16 rpl_max_size;
+  __u8 rpl_resv1;
+  __u8 rpl_index[3];
+};
+struct fc_els_pnb {
+  __be32 pnb_phys_pn;
+  __u8 pnb_resv;
+  __u8 pnb_port_id[3];
+  __be64 pnb_wwpn;
+};
+struct fc_els_rpl_resp {
+  __u8 rpl_cmd;
+  __u8 rpl_resv1;
+  __be16 rpl_plen;
+  __u8 rpl_resv2;
+  __u8 rpl_llen[3];
+  __u8 rpl_resv3;
+  __u8 rpl_index[3];
+  struct fc_els_pnb rpl_pnb[1];
+};
+struct fc_els_lesb {
+  __be32 lesb_link_fail;
+  __be32 lesb_sync_loss;
+  __be32 lesb_sig_loss;
+  __be32 lesb_prim_err;
+  __be32 lesb_inv_word;
+  __be32 lesb_inv_crc;
+};
+struct fc_els_rps {
+  __u8 rps_cmd;
+  __u8 rps_resv[2];
+  __u8 rps_flag;
+  __be64 rps_port_spec;
+};
+enum fc_els_rps_flag {
+  FC_ELS_RPS_DID = 0x00,
+  FC_ELS_RPS_PPN = 0x01,
+  FC_ELS_RPS_WWPN = 0x02,
+};
+struct fc_els_rps_resp {
+  __u8 rps_cmd;
+  __u8 rps_resv[2];
+  __u8 rps_flag;
+  __u8 rps_resv2[2];
+  __be16 rps_status;
+  struct fc_els_lesb rps_lesb;
+};
+enum fc_els_rps_resp_flag {
+  FC_ELS_RPS_LPEV = 0x01,
+};
+enum fc_els_rps_resp_status {
+  FC_ELS_RPS_PTP = 1 << 5,
+  FC_ELS_RPS_LOOP = 1 << 4,
+  FC_ELS_RPS_FAB = 1 << 3,
+  FC_ELS_RPS_NO_SIG = 1 << 2,
+  FC_ELS_RPS_NO_SYNC = 1 << 1,
+  FC_ELS_RPS_RESET = 1 << 0,
+};
+struct fc_els_lirr {
+  __u8 lirr_cmd;
+  __u8 lirr_resv[3];
+  __u8 lirr_func;
+  __u8 lirr_fmt;
+  __u8 lirr_resv2[2];
+};
+enum fc_els_lirr_func {
+  ELS_LIRR_SET_COND = 0x01,
+  ELS_LIRR_SET_UNCOND = 0x02,
+  ELS_LIRR_CLEAR = 0xff
+};
+struct fc_els_srl {
+  __u8 srl_cmd;
+  __u8 srl_resv[3];
+  __u8 srl_flag;
+  __u8 srl_flag_param[3];
+};
+enum fc_els_srl_flag {
+  FC_ELS_SRL_ALL = 0x00,
+  FC_ELS_SRL_ONE = 0x01,
+  FC_ELS_SRL_EN_PER = 0x02,
+  FC_ELS_SRL_DIS_PER = 0x03,
+};
+struct fc_els_rls {
+  __u8 rls_cmd;
+  __u8 rls_resv[4];
+  __u8 rls_port_id[3];
+};
+struct fc_els_rls_resp {
+  __u8 rls_cmd;
+  __u8 rls_resv[3];
+  struct fc_els_lesb rls_lesb;
+};
+struct fc_els_rlir {
+  __u8 rlir_cmd;
+  __u8 rlir_resv[3];
+  __u8 rlir_fmt;
+  __u8 rlir_clr_len;
+  __u8 rlir_cld_len;
+  __u8 rlir_slr_len;
+};
+struct fc_els_clir {
+  __be64 clir_wwpn;
+  __be64 clir_wwnn;
+  __u8 clir_port_type;
+  __u8 clir_port_id[3];
+  __be64 clir_conn_wwpn;
+  __be64 clir_conn_wwnn;
+  __be64 clir_fab_name;
+  __be32 clir_phys_port;
+  __be32 clir_trans_id;
+  __u8 clir_resv[3];
+  __u8 clir_ts_fmt;
+  __be64 clir_timestamp;
+};
+enum fc_els_clir_ts_fmt {
+  ELS_CLIR_TS_UNKNOWN = 0,
+  ELS_CLIR_TS_SEC_FRAC = 1,
+  ELS_CLIR_TS_CSU = 2,
+};
+struct fc_els_clid {
+  __u8 clid_iq;
+  __u8 clid_ic;
+  __be16 clid_epai;
+};
+enum fc_els_clid_iq {
+  ELS_CLID_SWITCH = 0x20,
+  ELS_CLID_E_PORT = 0x10,
+  ELS_CLID_SEV_MASK = 0x0c,
+  ELS_CLID_SEV_INFO = 0x00,
+  ELS_CLID_SEV_INOP = 0x08,
+  ELS_CLID_SEV_DEG = 0x04,
+  ELS_CLID_LASER = 0x02,
+  ELS_CLID_FRU = 0x01,
+};
+enum fc_els_clid_ic {
+  ELS_CLID_IC_IMPL = 1,
+  ELS_CLID_IC_BER = 2,
+  ELS_CLID_IC_LOS = 3,
+  ELS_CLID_IC_NOS = 4,
+  ELS_CLID_IC_PST = 5,
+  ELS_CLID_IC_INVAL = 6,
+  ELS_CLID_IC_LOOP_TO = 7,
+  ELS_CLID_IC_LIP = 8,
+};
+enum fc_fpin_li_event_types {
+  FPIN_LI_UNKNOWN = 0x0,
+  FPIN_LI_LINK_FAILURE = 0x1,
+  FPIN_LI_LOSS_OF_SYNC = 0x2,
+  FPIN_LI_LOSS_OF_SIG = 0x3,
+  FPIN_LI_PRIM_SEQ_ERR = 0x4,
+  FPIN_LI_INVALID_TX_WD = 0x5,
+  FPIN_LI_INVALID_CRC = 0x6,
+  FPIN_LI_DEVICE_SPEC = 0xF,
+};
+#define FC_FPIN_LI_EVT_TYPES_INIT { { FPIN_LI_UNKNOWN, "Unknown" }, { FPIN_LI_LINK_FAILURE, "Link Failure" }, { FPIN_LI_LOSS_OF_SYNC, "Loss of Synchronization" }, { FPIN_LI_LOSS_OF_SIG, "Loss of Signal" }, { FPIN_LI_PRIM_SEQ_ERR, "Primitive Sequence Protocol Error" }, { FPIN_LI_INVALID_TX_WD, "Invalid Transmission Word" }, { FPIN_LI_INVALID_CRC, "Invalid CRC" }, { FPIN_LI_DEVICE_SPEC, "Device Specific" }, \
+}
+enum fc_fpin_deli_event_types {
+  FPIN_DELI_UNKNOWN = 0x0,
+  FPIN_DELI_TIMEOUT = 0x1,
+  FPIN_DELI_UNABLE_TO_ROUTE = 0x2,
+  FPIN_DELI_DEVICE_SPEC = 0xF,
+};
+#define FC_FPIN_DELI_EVT_TYPES_INIT { { FPIN_DELI_UNKNOWN, "Unknown" }, { FPIN_DELI_TIMEOUT, "Timeout" }, { FPIN_DELI_UNABLE_TO_ROUTE, "Unable to Route" }, { FPIN_DELI_DEVICE_SPEC, "Device Specific" }, \
+}
+enum fc_fpin_congn_event_types {
+  FPIN_CONGN_CLEAR = 0x0,
+  FPIN_CONGN_LOST_CREDIT = 0x1,
+  FPIN_CONGN_CREDIT_STALL = 0x2,
+  FPIN_CONGN_OVERSUBSCRIPTION = 0x3,
+  FPIN_CONGN_DEVICE_SPEC = 0xF,
+};
+#define FC_FPIN_CONGN_EVT_TYPES_INIT { { FPIN_CONGN_CLEAR, "Clear" }, { FPIN_CONGN_LOST_CREDIT, "Lost Credit" }, { FPIN_CONGN_CREDIT_STALL, "Credit Stall" }, { FPIN_CONGN_OVERSUBSCRIPTION, "Oversubscription" }, { FPIN_CONGN_DEVICE_SPEC, "Device Specific" }, \
+}
+enum fc_fpin_congn_severity_types {
+  FPIN_CONGN_SEVERITY_WARNING = 0xF1,
+  FPIN_CONGN_SEVERITY_ERROR = 0xF7,
+};
+struct fc_fn_li_desc {
+  __be32 desc_tag;
+  __be32 desc_len;
+  __be64 detecting_wwpn;
+  __be64 attached_wwpn;
+  __be16 event_type;
+  __be16 event_modifier;
+  __be32 event_threshold;
+  __be32 event_count;
+  __be32 pname_count;
+  __be64 pname_list[0];
+};
+struct fc_fn_deli_desc {
+  __be32 desc_tag;
+  __be32 desc_len;
+  __be64 detecting_wwpn;
+  __be64 attached_wwpn;
+  __be32 deli_reason_code;
+};
+struct fc_fn_peer_congn_desc {
+  __be32 desc_tag;
+  __be32 desc_len;
+  __be64 detecting_wwpn;
+  __be64 attached_wwpn;
+  __be16 event_type;
+  __be16 event_modifier;
+  __be32 event_period;
+  __be32 pname_count;
+  __be64 pname_list[0];
+};
+struct fc_fn_congn_desc {
+  __be32 desc_tag;
+  __be32 desc_len;
+  __be16 event_type;
+  __be16 event_modifier;
+  __be32 event_period;
+  __u8 severity;
+  __u8 resv[3];
+};
+struct fc_els_fpin {
+  __u8 fpin_cmd;
+  __u8 fpin_zero[3];
+  __be32 desc_len;
+  struct fc_tlv_desc fpin_desc[0];
+};
+struct fc_df_desc_fpin_reg {
+  __be32 desc_tag;
+  __be32 desc_len;
+  __be32 count;
+  __be32 desc_tags[0];
+};
+struct fc_els_rdf {
+  __u8 fpin_cmd;
+  __u8 fpin_zero[3];
+  __be32 desc_len;
+  struct fc_tlv_desc desc[0];
+};
+struct fc_els_rdf_resp {
+  struct fc_els_ls_acc acc_hdr;
+  __be32 desc_list_len;
+  struct fc_els_lsri_desc lsri;
+  struct fc_tlv_desc desc[0];
+};
+struct fc_diag_lnkflt_desc {
+  __be32 desc_tag;
+  __be32 desc_len;
+  __be32 degrade_activate_threshold;
+  __be32 degrade_deactivate_threshold;
+  __be32 fec_degrade_interval;
+};
+enum fc_edc_cg_signal_cap_types {
+  EDC_CG_SIG_NOTSUPPORTED = 0x00,
+  EDC_CG_SIG_WARN_ONLY = 0x01,
+  EDC_CG_SIG_WARN_ALARM = 0x02,
+};
+#define FC_EDC_CG_SIGNAL_CAP_TYPES_INIT { { EDC_CG_SIG_NOTSUPPORTED, "Signaling Not Supported" }, { EDC_CG_SIG_WARN_ONLY, "Warning Signal" }, { EDC_CG_SIG_WARN_ALARM, "Warning and Alarm Signals" }, \
+}
+enum fc_diag_cg_sig_freq_types {
+  EDC_CG_SIGFREQ_CNT_MIN = 1,
+  EDC_CG_SIGFREQ_CNT_MAX = 999,
+  EDC_CG_SIGFREQ_SEC = 0x1,
+  EDC_CG_SIGFREQ_MSEC = 0x2,
+};
+struct fc_diag_cg_sig_freq {
+  __be16 count;
+  __be16 units;
+};
+struct fc_diag_cg_sig_desc {
+  __be32 desc_tag;
+  __be32 desc_len;
+  __be32 xmt_signal_capability;
+  struct fc_diag_cg_sig_freq xmt_signal_frequency;
+  __be32 rcv_signal_capability;
+  struct fc_diag_cg_sig_freq rcv_signal_frequency;
+};
+struct fc_els_edc {
+  __u8 edc_cmd;
+  __u8 edc_zero[3];
+  __be32 desc_len;
+  struct fc_tlv_desc desc[0];
+};
+struct fc_els_edc_resp {
+  struct fc_els_ls_acc acc_hdr;
+  __be32 desc_list_len;
+  struct fc_els_lsri_desc lsri;
+  struct fc_tlv_desc desc[0];
+};
+#endif
diff --git a/i686-linux-musl/include/scsi/fc/fc_fs.h b/i686-linux-musl/include/scsi/fc/fc_fs.h
new file mode 100644
index 0000000..510d361
--- /dev/null
+++ b/i686-linux-musl/include/scsi/fc/fc_fs.h
@@ -0,0 +1,210 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _FC_FS_H_
+#define _FC_FS_H_
+#include <linux/types.h>
+struct fc_frame_header {
+  __u8 fh_r_ctl;
+  __u8 fh_d_id[3];
+  __u8 fh_cs_ctl;
+  __u8 fh_s_id[3];
+  __u8 fh_type;
+  __u8 fh_f_ctl[3];
+  __u8 fh_seq_id;
+  __u8 fh_df_ctl;
+  __be16 fh_seq_cnt;
+  __be16 fh_ox_id;
+  __be16 fh_rx_id;
+  __be32 fh_parm_offset;
+};
+#define FC_FRAME_HEADER_LEN 24
+#define FC_MAX_PAYLOAD 2112U
+#define FC_MIN_MAX_PAYLOAD 256U
+#define FC_MAX_FRAME (FC_MAX_PAYLOAD + FC_FRAME_HEADER_LEN)
+#define FC_MIN_MAX_FRAME (FC_MIN_MAX_PAYLOAD + FC_FRAME_HEADER_LEN)
+enum fc_rctl {
+  FC_RCTL_DD_UNCAT = 0x00,
+  FC_RCTL_DD_SOL_DATA = 0x01,
+  FC_RCTL_DD_UNSOL_CTL = 0x02,
+  FC_RCTL_DD_SOL_CTL = 0x03,
+  FC_RCTL_DD_UNSOL_DATA = 0x04,
+  FC_RCTL_DD_DATA_DESC = 0x05,
+  FC_RCTL_DD_UNSOL_CMD = 0x06,
+  FC_RCTL_DD_CMD_STATUS = 0x07,
+#define FC_RCTL_ILS_REQ FC_RCTL_DD_UNSOL_CTL
+#define FC_RCTL_ILS_REP FC_RCTL_DD_SOL_CTL
+  FC_RCTL_ELS_REQ = 0x22,
+  FC_RCTL_ELS_REP = 0x23,
+  FC_RCTL_ELS4_REQ = 0x32,
+  FC_RCTL_ELS4_REP = 0x33,
+  FC_RCTL_VFTH = 0x50,
+  FC_RCTL_IFRH = 0x51,
+  FC_RCTL_ENCH = 0x52,
+  FC_RCTL_BA_NOP = 0x80,
+  FC_RCTL_BA_ABTS = 0x81,
+  FC_RCTL_BA_RMC = 0x82,
+  FC_RCTL_BA_ACC = 0x84,
+  FC_RCTL_BA_RJT = 0x85,
+  FC_RCTL_BA_PRMT = 0x86,
+  FC_RCTL_ACK_1 = 0xc0,
+  FC_RCTL_ACK_0 = 0xc1,
+  FC_RCTL_P_RJT = 0xc2,
+  FC_RCTL_F_RJT = 0xc3,
+  FC_RCTL_P_BSY = 0xc4,
+  FC_RCTL_F_BSY = 0xc5,
+  FC_RCTL_F_BSYL = 0xc6,
+  FC_RCTL_LCR = 0xc7,
+  FC_RCTL_END = 0xc9,
+};
+#define FC_RCTL_NAMES_INIT {[FC_RCTL_DD_UNCAT] = "uncat",[FC_RCTL_DD_SOL_DATA] = "sol data",[FC_RCTL_DD_UNSOL_CTL] = "unsol ctl",[FC_RCTL_DD_SOL_CTL] = "sol ctl/reply",[FC_RCTL_DD_UNSOL_DATA] = "unsol data",[FC_RCTL_DD_DATA_DESC] = "data desc",[FC_RCTL_DD_UNSOL_CMD] = "unsol cmd",[FC_RCTL_DD_CMD_STATUS] = "cmd status",[FC_RCTL_ELS_REQ] = "ELS req",[FC_RCTL_ELS_REP] = "ELS rep",[FC_RCTL_ELS4_REQ] = "FC-4 ELS req",[FC_RCTL_ELS4_REP] = "FC-4 ELS rep",[FC_RCTL_BA_NOP] = "BLS NOP",[FC_RCTL_BA_ABTS] = "BLS abort",[FC_RCTL_BA_RMC] = "BLS remove connection",[FC_RCTL_BA_ACC] = "BLS accept",[FC_RCTL_BA_RJT] = "BLS reject",[FC_RCTL_BA_PRMT] = "BLS dedicated connection preempted",[FC_RCTL_ACK_1] = "LC ACK_1",[FC_RCTL_ACK_0] = "LC ACK_0",[FC_RCTL_P_RJT] = "LC port reject",[FC_RCTL_F_RJT] = "LC fabric reject",[FC_RCTL_P_BSY] = "LC port busy",[FC_RCTL_F_BSY] = "LC fabric busy to data frame",[FC_RCTL_F_BSYL] = "LC fabric busy to link control frame",[FC_RCTL_LCR] = "LC link credit reset",[FC_RCTL_END] = "LC end", \
+}
+enum fc_well_known_fid {
+  FC_FID_NONE = 0x000000,
+  FC_FID_BCAST = 0xffffff,
+  FC_FID_FLOGI = 0xfffffe,
+  FC_FID_FCTRL = 0xfffffd,
+  FC_FID_DIR_SERV = 0xfffffc,
+  FC_FID_TIME_SERV = 0xfffffb,
+  FC_FID_MGMT_SERV = 0xfffffa,
+  FC_FID_QOS = 0xfffff9,
+  FC_FID_ALIASES = 0xfffff8,
+  FC_FID_SEC_KEY = 0xfffff7,
+  FC_FID_CLOCK = 0xfffff6,
+  FC_FID_MCAST_SERV = 0xfffff5,
+};
+#define FC_FID_WELL_KNOWN_MAX 0xffffff
+#define FC_FID_WELL_KNOWN_BASE 0xfffff5
+#define FC_FID_DOM_MGR 0xfffc00
+#define FC_FID_DOMAIN 0
+#define FC_FID_PORT 1
+#define FC_FID_LINK 2
+enum fc_fh_type {
+  FC_TYPE_BLS = 0x00,
+  FC_TYPE_ELS = 0x01,
+  FC_TYPE_IP = 0x05,
+  FC_TYPE_FCP = 0x08,
+  FC_TYPE_CT = 0x20,
+  FC_TYPE_ILS = 0x22,
+  FC_TYPE_NVME = 0x28,
+};
+#define FC_TYPE_NAMES_INIT {[FC_TYPE_BLS] = "BLS",[FC_TYPE_ELS] = "ELS",[FC_TYPE_IP] = "IP",[FC_TYPE_FCP] = "FCP",[FC_TYPE_CT] = "CT",[FC_TYPE_ILS] = "ILS",[FC_TYPE_NVME] = "NVME", \
+}
+#define FC_XID_UNKNOWN 0xffff
+#define FC_XID_MIN 0x0
+#define FC_XID_MAX 0xfffe
+#define FC_FC_EX_CTX (1 << 23)
+#define FC_FC_SEQ_CTX (1 << 22)
+#define FC_FC_FIRST_SEQ (1 << 21)
+#define FC_FC_LAST_SEQ (1 << 20)
+#define FC_FC_END_SEQ (1 << 19)
+#define FC_FC_END_CONN (1 << 18)
+#define FC_FC_RES_B17 (1 << 17)
+#define FC_FC_SEQ_INIT (1 << 16)
+#define FC_FC_X_ID_REASS (1 << 15)
+#define FC_FC_X_ID_INVAL (1 << 14)
+#define FC_FC_ACK_1 (1 << 12)
+#define FC_FC_ACK_N (2 << 12)
+#define FC_FC_ACK_0 (3 << 12)
+#define FC_FC_RES_B11 (1 << 11)
+#define FC_FC_RES_B10 (1 << 10)
+#define FC_FC_RETX_SEQ (1 << 9)
+#define FC_FC_UNI_TX (1 << 8)
+#define FC_FC_CONT_SEQ(i) ((i) << 6)
+#define FC_FC_ABT_SEQ(i) ((i) << 4)
+#define FC_FC_REL_OFF (1 << 3)
+#define FC_FC_RES2 (1 << 2)
+#define FC_FC_FILL(i) ((i) & 3)
+struct fc_ba_acc {
+  __u8 ba_seq_id_val;
+#define FC_BA_SEQ_ID_VAL 0x80
+  __u8 ba_seq_id;
+  __u8 ba_resvd[2];
+  __be16 ba_ox_id;
+  __be16 ba_rx_id;
+  __be16 ba_low_seq_cnt;
+  __be16 ba_high_seq_cnt;
+};
+struct fc_ba_rjt {
+  __u8 br_resvd;
+  __u8 br_reason;
+  __u8 br_explan;
+  __u8 br_vendor;
+};
+enum fc_ba_rjt_reason {
+  FC_BA_RJT_NONE = 0,
+  FC_BA_RJT_INVL_CMD = 0x01,
+  FC_BA_RJT_LOG_ERR = 0x03,
+  FC_BA_RJT_LOG_BUSY = 0x05,
+  FC_BA_RJT_PROTO_ERR = 0x07,
+  FC_BA_RJT_UNABLE = 0x09,
+  FC_BA_RJT_VENDOR = 0xff,
+};
+enum fc_ba_rjt_explan {
+  FC_BA_RJT_EXP_NONE = 0x00,
+  FC_BA_RJT_INV_XID = 0x03,
+  FC_BA_RJT_ABT = 0x05,
+};
+struct fc_pf_rjt {
+  __u8 rj_action;
+  __u8 rj_reason;
+  __u8 rj_resvd;
+  __u8 rj_vendor;
+};
+enum fc_pf_rjt_reason {
+  FC_RJT_NONE = 0,
+  FC_RJT_INVL_DID = 0x01,
+  FC_RJT_INVL_SID = 0x02,
+  FC_RJT_P_UNAV_T = 0x03,
+  FC_RJT_P_UNAV = 0x04,
+  FC_RJT_CLS_UNSUP = 0x05,
+  FC_RJT_DEL_USAGE = 0x06,
+  FC_RJT_TYPE_UNSUP = 0x07,
+  FC_RJT_LINK_CTL = 0x08,
+  FC_RJT_R_CTL = 0x09,
+  FC_RJT_F_CTL = 0x0a,
+  FC_RJT_OX_ID = 0x0b,
+  FC_RJT_RX_ID = 0x0c,
+  FC_RJT_SEQ_ID = 0x0d,
+  FC_RJT_DF_CTL = 0x0e,
+  FC_RJT_SEQ_CNT = 0x0f,
+  FC_RJT_PARAM = 0x10,
+  FC_RJT_EXCH_ERR = 0x11,
+  FC_RJT_PROTO = 0x12,
+  FC_RJT_LEN = 0x13,
+  FC_RJT_UNEXP_ACK = 0x14,
+  FC_RJT_FAB_CLASS = 0x15,
+  FC_RJT_LOGI_REQ = 0x16,
+  FC_RJT_SEQ_XS = 0x17,
+  FC_RJT_EXCH_EST = 0x18,
+  FC_RJT_FAB_UNAV = 0x1a,
+  FC_RJT_VC_ID = 0x1b,
+  FC_RJT_CS_CTL = 0x1c,
+  FC_RJT_INSUF_RES = 0x1d,
+  FC_RJT_INVL_CLS = 0x1f,
+  FC_RJT_PREEMT_RJT = 0x20,
+  FC_RJT_PREEMT_DIS = 0x21,
+  FC_RJT_MCAST_ERR = 0x22,
+  FC_RJT_MCAST_ET = 0x23,
+  FC_RJT_PRLI_REQ = 0x24,
+  FC_RJT_INVL_ATT = 0x25,
+  FC_RJT_VENDOR = 0xff,
+};
+#define FC_DEF_E_D_TOV 2000UL
+#define FC_DEF_R_A_TOV 10000UL
+#endif
diff --git a/i686-linux-musl/include/scsi/fc/fc_gs.h b/i686-linux-musl/include/scsi/fc/fc_gs.h
new file mode 100644
index 0000000..bcbf7a3
--- /dev/null
+++ b/i686-linux-musl/include/scsi/fc/fc_gs.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 _FC_GS_H_
+#define _FC_GS_H_
+#include <linux/types.h>
+struct fc_ct_hdr {
+  __u8 ct_rev;
+  __u8 ct_in_id[3];
+  __u8 ct_fs_type;
+  __u8 ct_fs_subtype;
+  __u8 ct_options;
+  __u8 _ct_resvd1;
+  __be16 ct_cmd;
+  __be16 ct_mr_size;
+  __u8 _ct_resvd2;
+  __u8 ct_reason;
+  __u8 ct_explan;
+  __u8 ct_vendor;
+};
+#define FC_CT_HDR_LEN 16
+enum fc_ct_rev {
+  FC_CT_REV = 1
+};
+enum fc_ct_fs_type {
+  FC_FST_ALIAS = 0xf8,
+  FC_FST_MGMT = 0xfa,
+  FC_FST_TIME = 0xfb,
+  FC_FST_DIR = 0xfc,
+};
+enum fc_ct_cmd {
+  FC_FS_RJT = 0x8001,
+  FC_FS_ACC = 0x8002,
+};
+enum fc_ct_reason {
+  FC_FS_RJT_CMD = 0x01,
+  FC_FS_RJT_VER = 0x02,
+  FC_FS_RJT_LOG = 0x03,
+  FC_FS_RJT_IUSIZ = 0x04,
+  FC_FS_RJT_BSY = 0x05,
+  FC_FS_RJT_PROTO = 0x07,
+  FC_FS_RJT_UNABL = 0x09,
+  FC_FS_RJT_UNSUP = 0x0b,
+};
+enum fc_ct_explan {
+  FC_FS_EXP_NONE = 0x00,
+  FC_FS_EXP_PID = 0x01,
+  FC_FS_EXP_PNAM = 0x02,
+  FC_FS_EXP_NNAM = 0x03,
+  FC_FS_EXP_COS = 0x04,
+  FC_FS_EXP_FTNR = 0x07,
+};
+#endif
diff --git a/i686-linux-musl/include/scsi/fc/fc_ns.h b/i686-linux-musl/include/scsi/fc/fc_ns.h
new file mode 100644
index 0000000..58fee9a
--- /dev/null
+++ b/i686-linux-musl/include/scsi/fc/fc_ns.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 _FC_NS_H_
+#define _FC_NS_H_
+#include <linux/types.h>
+#define FC_NS_SUBTYPE 2
+enum fc_ns_req {
+  FC_NS_GA_NXT = 0x0100,
+  FC_NS_GI_A = 0x0101,
+  FC_NS_GPN_ID = 0x0112,
+  FC_NS_GNN_ID = 0x0113,
+  FC_NS_GSPN_ID = 0x0118,
+  FC_NS_GID_PN = 0x0121,
+  FC_NS_GID_NN = 0x0131,
+  FC_NS_GID_FT = 0x0171,
+  FC_NS_GPN_FT = 0x0172,
+  FC_NS_GID_PT = 0x01a1,
+  FC_NS_RPN_ID = 0x0212,
+  FC_NS_RNN_ID = 0x0213,
+  FC_NS_RFT_ID = 0x0217,
+  FC_NS_RSPN_ID = 0x0218,
+  FC_NS_RFF_ID = 0x021f,
+  FC_NS_RSNN_NN = 0x0239,
+};
+enum fc_ns_pt {
+  FC_NS_UNID_PORT = 0x00,
+  FC_NS_N_PORT = 0x01,
+  FC_NS_NL_PORT = 0x02,
+  FC_NS_FNL_PORT = 0x03,
+  FC_NS_NX_PORT = 0x7f,
+  FC_NS_F_PORT = 0x81,
+  FC_NS_FL_PORT = 0x82,
+  FC_NS_E_PORT = 0x84,
+  FC_NS_B_PORT = 0x85,
+};
+struct fc_ns_pt_obj {
+  __u8 pt_type;
+};
+struct fc_ns_fid {
+  __u8 fp_flags;
+  __u8 fp_fid[3];
+};
+#define FC_NS_FID_LAST 0x80
+#define FC_NS_TYPES 256
+#define FC_NS_BPW 32
+struct fc_ns_fts {
+  __be32 ff_type_map[FC_NS_TYPES / FC_NS_BPW];
+};
+struct fc_ns_ff {
+  __be32 fd_feat[FC_NS_TYPES * 4 / FC_NS_BPW];
+};
+struct fc_ns_gid_pt {
+  __u8 fn_pt_type;
+  __u8 fn_domain_id_scope;
+  __u8 fn_area_id_scope;
+  __u8 fn_resvd;
+};
+struct fc_ns_gid_ft {
+  __u8 fn_resvd;
+  __u8 fn_domain_id_scope;
+  __u8 fn_area_id_scope;
+  __u8 fn_fc4_type;
+};
+struct fc_gpn_ft_resp {
+  __u8 fp_flags;
+  __u8 fp_fid[3];
+  __be32 fp_resvd;
+  __be64 fp_wwpn;
+};
+struct fc_ns_gid_pn {
+  __be64 fn_wwpn;
+};
+struct fc_gid_pn_resp {
+  __u8 fp_resvd;
+  __u8 fp_fid[3];
+};
+struct fc_gspn_resp {
+  __u8 fp_name_len;
+  char fp_name[];
+};
+struct fc_ns_rft_id {
+  struct fc_ns_fid fr_fid;
+  struct fc_ns_fts fr_fts;
+};
+struct fc_ns_rn_id {
+  struct fc_ns_fid fr_fid;
+  __be64 fr_wwn;
+} __attribute__((__packed__));
+struct fc_ns_rsnn {
+  __be64 fr_wwn;
+  __u8 fr_name_len;
+  char fr_name[];
+} __attribute__((__packed__));
+struct fc_ns_rspn {
+  struct fc_ns_fid fr_fid;
+  __u8 fr_name_len;
+  char fr_name[];
+} __attribute__((__packed__));
+struct fc_ns_rff_id {
+  struct fc_ns_fid fr_fid;
+  __u8 fr_resvd[2];
+  __u8 fr_feat;
+  __u8 fr_type;
+} __attribute__((__packed__));
+#endif
diff --git a/i686-linux-musl/include/scsi/scsi.h b/i686-linux-musl/include/scsi/scsi.h
new file mode 100644
index 0000000..6d89fa9
--- /dev/null
+++ b/i686-linux-musl/include/scsi/scsi.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 _SCSI_SCSI_H
+#define _SCSI_SCSI_H
+#include <linux/types.h>
+#include <scsi/scsi_proto.h>
+#include <scsi/scsi_status.h>
+struct ccs_modesel_head {
+  __u8 _r1;
+  __u8 medium;
+  __u8 _r2;
+  __u8 block_desc_length;
+  __u8 density;
+  __u8 number_blocks_hi;
+  __u8 number_blocks_med;
+  __u8 number_blocks_lo;
+  __u8 _r3;
+  __u8 block_length_hi;
+  __u8 block_length_med;
+  __u8 block_length_lo;
+};
+#define EXTENDED_MODIFY_DATA_POINTER 0x00
+#define EXTENDED_SDTR 0x01
+#define EXTENDED_EXTENDED_IDENTIFY 0x02
+#define EXTENDED_WDTR 0x03
+#define EXTENDED_PPR 0x04
+#define EXTENDED_MODIFY_BIDI_DATA_PTR 0x05
+#define SCSI_IOCTL_GET_IDLUN 0x5382
+#define SCSI_IOCTL_PROBE_HOST 0x5385
+#define SCSI_IOCTL_GET_BUS_NUMBER 0x5386
+#define SCSI_IOCTL_GET_PCI 0x5387
+#endif
diff --git a/i686-linux-musl/include/scsi/scsi_bsg_fc.h b/i686-linux-musl/include/scsi/scsi_bsg_fc.h
new file mode 100644
index 0000000..8966f61
--- /dev/null
+++ b/i686-linux-musl/include/scsi/scsi_bsg_fc.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 SCSI_BSG_FC_H
+#define SCSI_BSG_FC_H
+#include <linux/types.h>
+#define FC_DEFAULT_BSG_TIMEOUT (10 * HZ)
+#define FC_BSG_CLS_MASK 0xF0000000
+#define FC_BSG_HST_MASK 0x80000000
+#define FC_BSG_RPT_MASK 0x40000000
+#define FC_BSG_HST_ADD_RPORT (FC_BSG_HST_MASK | 0x00000001)
+#define FC_BSG_HST_DEL_RPORT (FC_BSG_HST_MASK | 0x00000002)
+#define FC_BSG_HST_ELS_NOLOGIN (FC_BSG_HST_MASK | 0x00000003)
+#define FC_BSG_HST_CT (FC_BSG_HST_MASK | 0x00000004)
+#define FC_BSG_HST_VENDOR (FC_BSG_HST_MASK | 0x000000FF)
+#define FC_BSG_RPT_ELS (FC_BSG_RPT_MASK | 0x00000001)
+#define FC_BSG_RPT_CT (FC_BSG_RPT_MASK | 0x00000002)
+struct fc_bsg_host_add_rport {
+  __u8 reserved;
+  __u8 port_id[3];
+};
+struct fc_bsg_host_del_rport {
+  __u8 reserved;
+  __u8 port_id[3];
+};
+struct fc_bsg_host_els {
+  __u8 command_code;
+  __u8 port_id[3];
+};
+#define FC_CTELS_STATUS_OK 0x00000000
+#define FC_CTELS_STATUS_REJECT 0x00000001
+#define FC_CTELS_STATUS_P_RJT 0x00000002
+#define FC_CTELS_STATUS_F_RJT 0x00000003
+#define FC_CTELS_STATUS_P_BSY 0x00000004
+#define FC_CTELS_STATUS_F_BSY 0x00000006
+struct fc_bsg_ctels_reply {
+  __u32 status;
+  struct {
+    __u8 action;
+    __u8 reason_code;
+    __u8 reason_explanation;
+    __u8 vendor_unique;
+  } rjt_data;
+};
+struct fc_bsg_host_ct {
+  __u8 reserved;
+  __u8 port_id[3];
+  __u32 preamble_word0;
+  __u32 preamble_word1;
+  __u32 preamble_word2;
+};
+struct fc_bsg_host_vendor {
+  __u64 vendor_id;
+  __u32 vendor_cmd[0];
+};
+struct fc_bsg_host_vendor_reply {
+  __u32 vendor_rsp[0];
+};
+struct fc_bsg_rport_els {
+  __u8 els_code;
+};
+struct fc_bsg_rport_ct {
+  __u32 preamble_word0;
+  __u32 preamble_word1;
+  __u32 preamble_word2;
+};
+struct fc_bsg_request {
+  __u32 msgcode;
+  union {
+    struct fc_bsg_host_add_rport h_addrport;
+    struct fc_bsg_host_del_rport h_delrport;
+    struct fc_bsg_host_els h_els;
+    struct fc_bsg_host_ct h_ct;
+    struct fc_bsg_host_vendor h_vendor;
+    struct fc_bsg_rport_els r_els;
+    struct fc_bsg_rport_ct r_ct;
+  } rqst_data;
+} __attribute__((packed));
+struct fc_bsg_reply {
+  __u32 result;
+  __u32 reply_payload_rcv_len;
+  union {
+    struct fc_bsg_host_vendor_reply vendor_reply;
+    struct fc_bsg_ctels_reply ctels_reply;
+  } reply_data;
+};
+#endif
diff --git a/i686-linux-musl/include/scsi/scsi_bsg_ufs.h b/i686-linux-musl/include/scsi/scsi_bsg_ufs.h
new file mode 100644
index 0000000..ae5c757
--- /dev/null
+++ b/i686-linux-musl/include/scsi/scsi_bsg_ufs.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 SCSI_BSG_UFS_H
+#define SCSI_BSG_UFS_H
+#include <linux/types.h>
+#define UFS_CDB_SIZE 16
+#define UPIU_TRANSACTION_UIC_CMD 0x1F
+#define UIC_CMD_SIZE (sizeof(__u32) * 4)
+struct utp_upiu_header {
+  __be32 dword_0;
+  __be32 dword_1;
+  __be32 dword_2;
+};
+struct utp_upiu_query {
+  __u8 opcode;
+  __u8 idn;
+  __u8 index;
+  __u8 selector;
+  __be16 reserved_osf;
+  __be16 length;
+  __be32 value;
+  __be32 reserved[2];
+};
+struct utp_upiu_cmd {
+  __be32 exp_data_transfer_len;
+  __u8 cdb[UFS_CDB_SIZE];
+};
+struct utp_upiu_req {
+  struct utp_upiu_header header;
+  union {
+    struct utp_upiu_cmd sc;
+    struct utp_upiu_query qr;
+    struct utp_upiu_query uc;
+  };
+};
+struct ufs_bsg_request {
+  __u32 msgcode;
+  struct utp_upiu_req upiu_req;
+};
+struct ufs_bsg_reply {
+  __u32 result;
+  __u32 reply_payload_rcv_len;
+  struct utp_upiu_req upiu_rsp;
+};
+#endif
diff --git a/i686-linux-musl/include/scsi/scsi_ioctl.h b/i686-linux-musl/include/scsi/scsi_ioctl.h
new file mode 100644
index 0000000..c871362
--- /dev/null
+++ b/i686-linux-musl/include/scsi/scsi_ioctl.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 _SCSI_IOCTL_H
+#define _SCSI_IOCTL_H
+#define SCSI_IOCTL_SEND_COMMAND 1
+#define SCSI_IOCTL_TEST_UNIT_READY 2
+#define SCSI_IOCTL_BENCHMARK_COMMAND 3
+#define SCSI_IOCTL_SYNC 4
+#define SCSI_IOCTL_START_UNIT 5
+#define SCSI_IOCTL_STOP_UNIT 6
+#define SCSI_IOCTL_DOORLOCK 0x5380
+#define SCSI_IOCTL_DOORUNLOCK 0x5381
+#define SCSI_REMOVAL_PREVENT 1
+#define SCSI_REMOVAL_ALLOW 0
+#endif
diff --git a/i686-linux-musl/include/scsi/scsi_netlink.h b/i686-linux-musl/include/scsi/scsi_netlink.h
new file mode 100644
index 0000000..2e1b6cf
--- /dev/null
+++ b/i686-linux-musl/include/scsi/scsi_netlink.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 SCSI_NETLINK_H
+#define SCSI_NETLINK_H
+#include <linux/netlink.h>
+#include <linux/types.h>
+#define SCSI_TRANSPORT_MSG NLMSG_MIN_TYPE + 1
+#define SCSI_NL_GRP_FC_EVENTS (1 << 2)
+#define SCSI_NL_GRP_CNT 3
+struct scsi_nl_hdr {
+  __u8 version;
+  __u8 transport;
+  __u16 magic;
+  __u16 msgtype;
+  __u16 msglen;
+} __attribute__((aligned(sizeof(__u64))));
+#define SCSI_NL_VERSION 1
+#define SCSI_NL_MAGIC 0xA1B2
+#define SCSI_NL_TRANSPORT 0
+#define SCSI_NL_TRANSPORT_FC 1
+#define SCSI_NL_MAX_TRANSPORTS 2
+#define SCSI_NL_SHOST_VENDOR 0x0001
+#define SCSI_NL_MSGALIGN(len) (((len) + 7) & ~7)
+struct scsi_nl_host_vendor_msg {
+  struct scsi_nl_hdr snlh;
+  __u64 vendor_id;
+  __u16 host_no;
+  __u16 vmsg_datalen;
+} __attribute__((aligned(sizeof(__u64))));
+#define SCSI_NL_VID_TYPE_SHIFT 56
+#define SCSI_NL_VID_TYPE_MASK ((__u64) 0xFF << SCSI_NL_VID_TYPE_SHIFT)
+#define SCSI_NL_VID_TYPE_PCI ((__u64) 0x01 << SCSI_NL_VID_TYPE_SHIFT)
+#define SCSI_NL_VID_ID_MASK (~SCSI_NL_VID_TYPE_MASK)
+#define INIT_SCSI_NL_HDR(hdr,t,mtype,mlen) { (hdr)->version = SCSI_NL_VERSION; (hdr)->transport = t; (hdr)->magic = SCSI_NL_MAGIC; (hdr)->msgtype = mtype; (hdr)->msglen = mlen; }
+#endif
diff --git a/i686-linux-musl/include/scsi/scsi_netlink_fc.h b/i686-linux-musl/include/scsi/scsi_netlink_fc.h
new file mode 100644
index 0000000..ff92877
--- /dev/null
+++ b/i686-linux-musl/include/scsi/scsi_netlink_fc.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 SCSI_NETLINK_FC_H
+#define SCSI_NETLINK_FC_H
+#include <linux/types.h>
+#include <scsi/scsi_netlink.h>
+#define FC_NL_ASYNC_EVENT 0x0100
+#define FC_NL_MSGALIGN(len) (((len) + 7) & ~7)
+struct fc_nl_event {
+  struct scsi_nl_hdr snlh;
+  __u64 seconds;
+  __u64 vendor_id;
+  __u16 host_no;
+  __u16 event_datalen;
+  __u32 event_num;
+  __u32 event_code;
+  __u32 event_data;
+} __attribute__((aligned(sizeof(__u64))));
+#endif
diff --git a/i686-linux-musl/include/scsi/scsi_proto.h b/i686-linux-musl/include/scsi/scsi_proto.h
new file mode 100644
index 0000000..eea87a0
--- /dev/null
+++ b/i686-linux-musl/include/scsi/scsi_proto.h
@@ -0,0 +1,207 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _SCSI_PROTO_H_
+#define _SCSI_PROTO_H_
+#include <linux/types.h>
+#define TEST_UNIT_READY 0x00
+#define REZERO_UNIT 0x01
+#define REQUEST_SENSE 0x03
+#define FORMAT_UNIT 0x04
+#define READ_BLOCK_LIMITS 0x05
+#define REASSIGN_BLOCKS 0x07
+#define INITIALIZE_ELEMENT_STATUS 0x07
+#define READ_6 0x08
+#define WRITE_6 0x0a
+#define SEEK_6 0x0b
+#define READ_REVERSE 0x0f
+#define WRITE_FILEMARKS 0x10
+#define SPACE 0x11
+#define INQUIRY 0x12
+#define RECOVER_BUFFERED_DATA 0x14
+#define MODE_SELECT 0x15
+#define RESERVE 0x16
+#define RELEASE 0x17
+#define COPY 0x18
+#define ERASE 0x19
+#define MODE_SENSE 0x1a
+#define START_STOP 0x1b
+#define RECEIVE_DIAGNOSTIC 0x1c
+#define SEND_DIAGNOSTIC 0x1d
+#define ALLOW_MEDIUM_REMOVAL 0x1e
+#define READ_FORMAT_CAPACITIES 0x23
+#define SET_WINDOW 0x24
+#define READ_CAPACITY 0x25
+#define READ_10 0x28
+#define WRITE_10 0x2a
+#define SEEK_10 0x2b
+#define POSITION_TO_ELEMENT 0x2b
+#define WRITE_VERIFY 0x2e
+#define VERIFY 0x2f
+#define SEARCH_HIGH 0x30
+#define SEARCH_EQUAL 0x31
+#define SEARCH_LOW 0x32
+#define SET_LIMITS 0x33
+#define PRE_FETCH 0x34
+#define READ_POSITION 0x34
+#define SYNCHRONIZE_CACHE 0x35
+#define LOCK_UNLOCK_CACHE 0x36
+#define READ_DEFECT_DATA 0x37
+#define MEDIUM_SCAN 0x38
+#define COMPARE 0x39
+#define COPY_VERIFY 0x3a
+#define WRITE_BUFFER 0x3b
+#define READ_BUFFER 0x3c
+#define UPDATE_BLOCK 0x3d
+#define READ_LONG 0x3e
+#define WRITE_LONG 0x3f
+#define CHANGE_DEFINITION 0x40
+#define WRITE_SAME 0x41
+#define UNMAP 0x42
+#define READ_TOC 0x43
+#define READ_HEADER 0x44
+#define GET_EVENT_STATUS_NOTIFICATION 0x4a
+#define LOG_SELECT 0x4c
+#define LOG_SENSE 0x4d
+#define XDWRITEREAD_10 0x53
+#define MODE_SELECT_10 0x55
+#define RESERVE_10 0x56
+#define RELEASE_10 0x57
+#define MODE_SENSE_10 0x5a
+#define PERSISTENT_RESERVE_IN 0x5e
+#define PERSISTENT_RESERVE_OUT 0x5f
+#define VARIABLE_LENGTH_CMD 0x7f
+#define REPORT_LUNS 0xa0
+#define SECURITY_PROTOCOL_IN 0xa2
+#define MAINTENANCE_IN 0xa3
+#define MAINTENANCE_OUT 0xa4
+#define MOVE_MEDIUM 0xa5
+#define EXCHANGE_MEDIUM 0xa6
+#define READ_12 0xa8
+#define SERVICE_ACTION_OUT_12 0xa9
+#define WRITE_12 0xaa
+#define READ_MEDIA_SERIAL_NUMBER 0xab
+#define SERVICE_ACTION_IN_12 0xab
+#define WRITE_VERIFY_12 0xae
+#define VERIFY_12 0xaf
+#define SEARCH_HIGH_12 0xb0
+#define SEARCH_EQUAL_12 0xb1
+#define SEARCH_LOW_12 0xb2
+#define SECURITY_PROTOCOL_OUT 0xb5
+#define READ_ELEMENT_STATUS 0xb8
+#define SEND_VOLUME_TAG 0xb6
+#define WRITE_LONG_2 0xea
+#define EXTENDED_COPY 0x83
+#define RECEIVE_COPY_RESULTS 0x84
+#define ACCESS_CONTROL_IN 0x86
+#define ACCESS_CONTROL_OUT 0x87
+#define READ_16 0x88
+#define COMPARE_AND_WRITE 0x89
+#define WRITE_16 0x8a
+#define READ_ATTRIBUTE 0x8c
+#define WRITE_ATTRIBUTE 0x8d
+#define WRITE_VERIFY_16 0x8e
+#define VERIFY_16 0x8f
+#define SYNCHRONIZE_CACHE_16 0x91
+#define WRITE_SAME_16 0x93
+#define ZBC_OUT 0x94
+#define ZBC_IN 0x95
+#define SERVICE_ACTION_BIDIRECTIONAL 0x9d
+#define SERVICE_ACTION_IN_16 0x9e
+#define SERVICE_ACTION_OUT_16 0x9f
+#define STATUS_MASK 0xfe
+#define NO_SENSE 0x00
+#define RECOVERED_ERROR 0x01
+#define NOT_READY 0x02
+#define MEDIUM_ERROR 0x03
+#define HARDWARE_ERROR 0x04
+#define ILLEGAL_REQUEST 0x05
+#define UNIT_ATTENTION 0x06
+#define DATA_PROTECT 0x07
+#define BLANK_CHECK 0x08
+#define VENDOR_SPECIFIC 0x09
+#define COPY_ABORTED 0x0a
+#define ABORTED_COMMAND 0x0b
+#define VOLUME_OVERFLOW 0x0d
+#define MISCOMPARE 0x0e
+#define TYPE_DISK 0x00
+#define TYPE_TAPE 0x01
+#define TYPE_PRINTER 0x02
+#define TYPE_PROCESSOR 0x03
+#define TYPE_WORM 0x04
+#define TYPE_ROM 0x05
+#define TYPE_SCANNER 0x06
+#define TYPE_MOD 0x07
+#define TYPE_MEDIUM_CHANGER 0x08
+#define TYPE_COMM 0x09
+#define TYPE_RAID 0x0c
+#define TYPE_ENCLOSURE 0x0d
+#define TYPE_RBC 0x0e
+#define TYPE_OSD 0x11
+#define TYPE_ZBC 0x14
+#define TYPE_WLUN 0x1e
+#define TYPE_NO_LUN 0x7f
+#define SCSI_ACCESS_STATE_OPTIMAL 0x00
+#define SCSI_ACCESS_STATE_ACTIVE 0x01
+#define SCSI_ACCESS_STATE_STANDBY 0x02
+#define SCSI_ACCESS_STATE_UNAVAILABLE 0x03
+#define SCSI_ACCESS_STATE_LBA 0x04
+#define SCSI_ACCESS_STATE_OFFLINE 0x0e
+#define SCSI_ACCESS_STATE_TRANSITIONING 0x0f
+#define SCSI_ACCESS_STATE_MASK 0x0f
+#define SCSI_ACCESS_STATE_PREFERRED 0x80
+enum zbc_zone_reporting_options {
+  ZBC_ZONE_REPORTING_OPTION_ALL = 0x00,
+  ZBC_ZONE_REPORTING_OPTION_EMPTY = 0x01,
+  ZBC_ZONE_REPORTING_OPTION_IMPLICIT_OPEN = 0x02,
+  ZBC_ZONE_REPORTING_OPTION_EXPLICIT_OPEN = 0x03,
+  ZBC_ZONE_REPORTING_OPTION_CLOSED = 0x04,
+  ZBC_ZONE_REPORTING_OPTION_FULL = 0x05,
+  ZBC_ZONE_REPORTING_OPTION_READONLY = 0x06,
+  ZBC_ZONE_REPORTING_OPTION_OFFLINE = 0x07,
+  ZBC_ZONE_REPORTING_OPTION_NEED_RESET_WP = 0x10,
+  ZBC_ZONE_REPORTING_OPTION_NON_SEQWRITE = 0x11,
+  ZBC_ZONE_REPORTING_OPTION_NON_WP = 0x3f,
+};
+#define ZBC_REPORT_ZONE_PARTIAL 0x80
+enum zbc_zone_type {
+  ZBC_ZONE_TYPE_CONV = 0x1,
+  ZBC_ZONE_TYPE_SEQWRITE_REQ = 0x2,
+  ZBC_ZONE_TYPE_SEQWRITE_PREF = 0x3,
+};
+enum zbc_zone_cond {
+  ZBC_ZONE_COND_NO_WP = 0x0,
+  ZBC_ZONE_COND_EMPTY = 0x1,
+  ZBC_ZONE_COND_IMP_OPEN = 0x2,
+  ZBC_ZONE_COND_EXP_OPEN = 0x3,
+  ZBC_ZONE_COND_CLOSED = 0x4,
+  ZBC_ZONE_COND_READONLY = 0xd,
+  ZBC_ZONE_COND_FULL = 0xe,
+  ZBC_ZONE_COND_OFFLINE = 0xf,
+};
+enum scsi_version_descriptor {
+  SCSI_VERSION_DESCRIPTOR_FCP4 = 0x0a40,
+  SCSI_VERSION_DESCRIPTOR_ISCSI = 0x0960,
+  SCSI_VERSION_DESCRIPTOR_SAM5 = 0x00a0,
+  SCSI_VERSION_DESCRIPTOR_SAS3 = 0x0c60,
+  SCSI_VERSION_DESCRIPTOR_SBC3 = 0x04c0,
+  SCSI_VERSION_DESCRIPTOR_SBP3 = 0x0980,
+  SCSI_VERSION_DESCRIPTOR_SPC4 = 0x0460,
+  SCSI_VERSION_DESCRIPTOR_SRP = 0x0940
+};
+#endif
diff --git a/i686-linux-musl/include/scsi/scsi_status.h b/i686-linux-musl/include/scsi/scsi_status.h
new file mode 100644
index 0000000..6a7fc10
--- /dev/null
+++ b/i686-linux-musl/include/scsi/scsi_status.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 _SCSI_SCSI_STATUS_H
+#define _SCSI_SCSI_STATUS_H
+#include <linux/types.h>
+#include <scsi/scsi_proto.h>
+#endif
diff --git a/i686-linux-musl/include/scsi/sg.h b/i686-linux-musl/include/scsi/sg.h
new file mode 100644
index 0000000..a7a1944
--- /dev/null
+++ b/i686-linux-musl/include/scsi/sg.h
@@ -0,0 +1,161 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _SCSI_GENERIC_H
+#define _SCSI_GENERIC_H
+#include <linux/compiler.h>
+typedef struct sg_iovec {
+  void __user * iov_base;
+  size_t iov_len;
+} sg_iovec_t;
+typedef struct sg_io_hdr {
+  int interface_id;
+  int dxfer_direction;
+  unsigned char cmd_len;
+  unsigned char mx_sb_len;
+  unsigned short iovec_count;
+  unsigned int dxfer_len;
+  void __user * dxferp;
+  unsigned char __user * cmdp;
+  void __user * sbp;
+  unsigned int timeout;
+  unsigned int flags;
+  int pack_id;
+  void __user * usr_ptr;
+  unsigned char status;
+  unsigned char masked_status;
+  unsigned char msg_status;
+  unsigned char sb_len_wr;
+  unsigned short host_status;
+  unsigned short driver_status;
+  int resid;
+  unsigned int duration;
+  unsigned int info;
+} sg_io_hdr_t;
+#define SG_INTERFACE_ID_ORIG 'S'
+#define SG_DXFER_NONE (- 1)
+#define SG_DXFER_TO_DEV (- 2)
+#define SG_DXFER_FROM_DEV (- 3)
+#define SG_DXFER_TO_FROM_DEV (- 4)
+#define SG_DXFER_UNKNOWN (- 5)
+#define SG_FLAG_DIRECT_IO 1
+#define SG_FLAG_UNUSED_LUN_INHIBIT 2
+#define SG_FLAG_MMAP_IO 4
+#define SG_FLAG_NO_DXFER 0x10000
+#define SG_FLAG_Q_AT_TAIL 0x10
+#define SG_FLAG_Q_AT_HEAD 0x20
+#define SG_INFO_OK_MASK 0x1
+#define SG_INFO_OK 0x0
+#define SG_INFO_CHECK 0x1
+#define SG_INFO_DIRECT_IO_MASK 0x6
+#define SG_INFO_INDIRECT_IO 0x0
+#define SG_INFO_DIRECT_IO 0x2
+#define SG_INFO_MIXED_IO 0x4
+#define DRIVER_SENSE 0x08
+#define driver_byte(result) (((result) >> 24) & 0xff)
+#define GOOD 0x00
+#define CHECK_CONDITION 0x01
+#define CONDITION_GOOD 0x02
+#define BUSY 0x04
+#define INTERMEDIATE_GOOD 0x08
+#define INTERMEDIATE_C_GOOD 0x0a
+#define RESERVATION_CONFLICT 0x0c
+#define COMMAND_TERMINATED 0x11
+#define QUEUE_FULL 0x14
+#define ACA_ACTIVE 0x18
+#define TASK_ABORTED 0x20
+#define status_byte(result) (((result) >> 1) & 0x7f)
+typedef struct sg_scsi_id {
+  int host_no;
+  int channel;
+  int scsi_id;
+  int lun;
+  int scsi_type;
+  short h_cmd_per_lun;
+  short d_queue_depth;
+  int unused[2];
+} sg_scsi_id_t;
+typedef struct sg_req_info {
+  char req_state;
+  char orphan;
+  char sg_io_owned;
+  char problem;
+  int pack_id;
+  void __user * usr_ptr;
+  unsigned int duration;
+  int unused;
+} sg_req_info_t;
+#define SG_EMULATED_HOST 0x2203
+#define SG_SET_TRANSFORM 0x2204
+#define SG_GET_TRANSFORM 0x2205
+#define SG_SET_RESERVED_SIZE 0x2275
+#define SG_GET_RESERVED_SIZE 0x2272
+#define SG_GET_SCSI_ID 0x2276
+#define SG_SET_FORCE_LOW_DMA 0x2279
+#define SG_GET_LOW_DMA 0x227a
+#define SG_SET_FORCE_PACK_ID 0x227b
+#define SG_GET_PACK_ID 0x227c
+#define SG_GET_NUM_WAITING 0x227d
+#define SG_GET_SG_TABLESIZE 0x227F
+#define SG_GET_VERSION_NUM 0x2282
+#define SG_SCSI_RESET 0x2284
+#define SG_SCSI_RESET_NOTHING 0
+#define SG_SCSI_RESET_DEVICE 1
+#define SG_SCSI_RESET_BUS 2
+#define SG_SCSI_RESET_HOST 3
+#define SG_SCSI_RESET_TARGET 4
+#define SG_SCSI_RESET_NO_ESCALATE 0x100
+#define SG_IO 0x2285
+#define SG_GET_REQUEST_TABLE 0x2286
+#define SG_SET_KEEP_ORPHAN 0x2287
+#define SG_GET_KEEP_ORPHAN 0x2288
+#define SG_GET_ACCESS_COUNT 0x2289
+#define SG_SCATTER_SZ (8 * 4096)
+#define SG_DEFAULT_RETRIES 0
+#define SG_DEF_FORCE_PACK_ID 0
+#define SG_DEF_KEEP_ORPHAN 0
+#define SG_DEF_RESERVED_SIZE SG_SCATTER_SZ
+#define SG_MAX_QUEUE 16
+#define SG_BIG_BUFF SG_DEF_RESERVED_SIZE
+typedef struct sg_io_hdr Sg_io_hdr;
+typedef struct sg_io_vec Sg_io_vec;
+typedef struct sg_scsi_id Sg_scsi_id;
+typedef struct sg_req_info Sg_req_info;
+#define SG_MAX_SENSE 16
+struct sg_header {
+  int pack_len;
+  int reply_len;
+  int pack_id;
+  int result;
+  unsigned int twelve_byte : 1;
+  unsigned int target_status : 5;
+  unsigned int host_status : 8;
+  unsigned int driver_status : 8;
+  unsigned int other_flags : 10;
+  unsigned char sense_buffer[SG_MAX_SENSE];
+};
+#define SG_SET_TIMEOUT 0x2201
+#define SG_GET_TIMEOUT 0x2202
+#define SG_GET_COMMAND_Q 0x2270
+#define SG_SET_COMMAND_Q 0x2271
+#define SG_SET_DEBUG 0x227e
+#define SG_NEXT_CMD_LEN 0x2283
+#define SG_DEFAULT_TIMEOUT (60 * HZ)
+#define SG_DEF_COMMAND_Q 0
+#define SG_DEF_UNDERRUN_FLAG 0
+#endif
diff --git a/i686-linux-musl/include/search.h b/i686-linux-musl/include/search.h
new file mode 100644
index 0000000..02e407e
--- /dev/null
+++ b/i686-linux-musl/include/search.h
@@ -0,0 +1,63 @@
+#ifndef _SEARCH_H
+#define _SEARCH_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_size_t
+#include <bits/alltypes.h>
+
+typedef enum { FIND, ENTER } ACTION;
+typedef enum { preorder, postorder, endorder, leaf } VISIT;
+
+typedef struct entry {
+	char *key;
+	void *data;
+} ENTRY;
+
+int hcreate(size_t);
+void hdestroy(void);
+ENTRY *hsearch(ENTRY, ACTION);
+
+#ifdef _GNU_SOURCE
+struct hsearch_data {
+	struct __tab *__tab;
+	unsigned int __unused1;
+	unsigned int __unused2;
+};
+
+int hcreate_r(size_t, struct hsearch_data *);
+void hdestroy_r(struct hsearch_data *);
+int hsearch_r(ENTRY, ACTION, ENTRY **, struct hsearch_data *);
+#endif
+
+void insque(void *, void *);
+void remque(void *);
+
+void *lsearch(const void *, void *, size_t *, size_t,
+	int (*)(const void *, const void *));
+void *lfind(const void *, const void *, size_t *, size_t,
+	int (*)(const void *, const void *));
+
+void *tdelete(const void *__restrict, void **__restrict, int(*)(const void *, const void *));
+void *tfind(const void *, void *const *, int(*)(const void *, const void *));
+void *tsearch(const void *, void **, int (*)(const void *, const void *));
+void twalk(const void *, void (*)(const void *, VISIT, int));
+
+#ifdef _GNU_SOURCE
+struct qelem {
+	struct qelem *q_forw, *q_back;
+	char q_data[1];
+};
+
+void tdestroy(void *, void (*)(void *));
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/semaphore.h b/i686-linux-musl/include/semaphore.h
new file mode 100644
index 0000000..3690f49
--- /dev/null
+++ b/i686-linux-musl/include/semaphore.h
@@ -0,0 +1,39 @@
+#ifndef _SEMAPHORE_H
+#define _SEMAPHORE_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_time_t
+#define __NEED_struct_timespec
+#include <bits/alltypes.h>
+
+#include <fcntl.h>
+
+#define SEM_FAILED ((sem_t *)0)
+
+typedef struct {
+	volatile int __val[4*sizeof(long)/sizeof(int)];
+} sem_t;
+
+int    sem_close(sem_t *);
+int    sem_destroy(sem_t *);
+int    sem_getvalue(sem_t *__restrict, int *__restrict);
+int    sem_init(sem_t *, int, unsigned);
+sem_t *sem_open(const char *, int, ...);
+int    sem_post(sem_t *);
+int    sem_timedwait(sem_t *__restrict, const struct timespec *__restrict);
+int    sem_trywait(sem_t *);
+int    sem_unlink(const char *);
+int    sem_wait(sem_t *);
+
+#if _REDIR_TIME64
+__REDIR(sem_timedwait, __sem_timedwait_time64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/setjmp.h b/i686-linux-musl/include/setjmp.h
new file mode 100644
index 0000000..1976af2
--- /dev/null
+++ b/i686-linux-musl/include/setjmp.h
@@ -0,0 +1,49 @@
+#ifndef	_SETJMP_H
+#define	_SETJMP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#include <bits/setjmp.h>
+
+typedef struct __jmp_buf_tag {
+	__jmp_buf __jb;
+	unsigned long __fl;
+	unsigned long __ss[128/sizeof(long)];
+} jmp_buf[1];
+
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)
+#define __setjmp_attr __attribute__((__returns_twice__))
+#else
+#define __setjmp_attr
+#endif
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+typedef jmp_buf sigjmp_buf;
+int sigsetjmp (sigjmp_buf, int) __setjmp_attr;
+_Noreturn void siglongjmp (sigjmp_buf, int);
+#endif
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+int _setjmp (jmp_buf) __setjmp_attr;
+_Noreturn void _longjmp (jmp_buf, int);
+#endif
+
+int setjmp (jmp_buf) __setjmp_attr;
+_Noreturn void longjmp (jmp_buf, int);
+
+#define setjmp setjmp
+
+#undef __setjmp_attr
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/shadow.h b/i686-linux-musl/include/shadow.h
new file mode 100644
index 0000000..2b1be41
--- /dev/null
+++ b/i686-linux-musl/include/shadow.h
@@ -0,0 +1,44 @@
+#ifndef _SHADOW_H
+#define _SHADOW_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define	__NEED_FILE
+#define __NEED_size_t
+
+#include <bits/alltypes.h>
+
+#define	SHADOW "/etc/shadow"
+
+struct spwd {
+	char *sp_namp;
+	char *sp_pwdp;
+	long sp_lstchg;
+	long sp_min;
+	long sp_max;
+	long sp_warn;
+	long sp_inact;
+	long sp_expire;
+	unsigned long sp_flag;
+};
+
+void setspent(void);
+void endspent(void);
+struct spwd *getspent(void);
+struct spwd *fgetspent(FILE *);
+struct spwd *sgetspent(const char *);
+int putspent(const struct spwd *, FILE *);
+
+struct spwd *getspnam(const char *);
+int getspnam_r(const char *, struct spwd *, char *, size_t, struct spwd **);
+
+int lckpwdf(void);
+int ulckpwdf(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/signal.h b/i686-linux-musl/include/signal.h
new file mode 100644
index 0000000..3ad38c8
--- /dev/null
+++ b/i686-linux-musl/include/signal.h
@@ -0,0 +1,299 @@
+#ifndef _SIGNAL_H
+#define _SIGNAL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+
+#ifdef _GNU_SOURCE
+#define __ucontext ucontext
+#endif
+
+#define __NEED_size_t
+#define __NEED_pid_t
+#define __NEED_uid_t
+#define __NEED_struct_timespec
+#define __NEED_pthread_t
+#define __NEED_pthread_attr_t
+#define __NEED_time_t
+#define __NEED_clock_t
+#define __NEED_sigset_t
+
+#include <bits/alltypes.h>
+
+#define SIG_BLOCK     0
+#define SIG_UNBLOCK   1
+#define SIG_SETMASK   2
+
+#define SI_ASYNCNL (-60)
+#define SI_TKILL (-6)
+#define SI_SIGIO (-5)
+#define SI_ASYNCIO (-4)
+#define SI_MESGQ (-3)
+#define SI_TIMER (-2)
+#define SI_QUEUE (-1)
+#define SI_USER 0
+#define SI_KERNEL 128
+
+typedef struct sigaltstack stack_t;
+
+#endif
+
+#include <bits/signal.h>
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+
+#define SIG_HOLD ((void (*)(int)) 2)
+
+#define FPE_INTDIV 1
+#define FPE_INTOVF 2
+#define FPE_FLTDIV 3
+#define FPE_FLTOVF 4
+#define FPE_FLTUND 5
+#define FPE_FLTRES 6
+#define FPE_FLTINV 7
+#define FPE_FLTSUB 8
+
+#define ILL_ILLOPC 1
+#define ILL_ILLOPN 2
+#define ILL_ILLADR 3
+#define ILL_ILLTRP 4
+#define ILL_PRVOPC 5
+#define ILL_PRVREG 6
+#define ILL_COPROC 7
+#define ILL_BADSTK 8
+
+#define SEGV_MAPERR 1
+#define SEGV_ACCERR 2
+#define SEGV_BNDERR 3
+#define SEGV_PKUERR 4
+#define SEGV_MTEAERR 8
+#define SEGV_MTESERR 9
+
+#define BUS_ADRALN 1
+#define BUS_ADRERR 2
+#define BUS_OBJERR 3
+#define BUS_MCEERR_AR 4
+#define BUS_MCEERR_AO 5
+
+#define CLD_EXITED 1
+#define CLD_KILLED 2
+#define CLD_DUMPED 3
+#define CLD_TRAPPED 4
+#define CLD_STOPPED 5
+#define CLD_CONTINUED 6
+
+union sigval {
+	int sival_int;
+	void *sival_ptr;
+};
+
+typedef struct {
+#ifdef __SI_SWAP_ERRNO_CODE
+	int si_signo, si_code, si_errno;
+#else
+	int si_signo, si_errno, si_code;
+#endif
+	union {
+		char __pad[128 - 2*sizeof(int) - sizeof(long)];
+		struct {
+			union {
+				struct {
+					pid_t si_pid;
+					uid_t si_uid;
+				} __piduid;
+				struct {
+					int si_timerid;
+					int si_overrun;
+				} __timer;
+			} __first;
+			union {
+				union sigval si_value;
+				struct {
+					int si_status;
+					clock_t si_utime, si_stime;
+				} __sigchld;
+			} __second;
+		} __si_common;
+		struct {
+			void *si_addr;
+			short si_addr_lsb;
+			union {
+				struct {
+					void *si_lower;
+					void *si_upper;
+				} __addr_bnd;
+				unsigned si_pkey;
+			} __first;
+		} __sigfault;
+		struct {
+			long si_band;
+			int si_fd;
+		} __sigpoll;
+		struct {
+			void *si_call_addr;
+			int si_syscall;
+			unsigned si_arch;
+		} __sigsys;
+	} __si_fields;
+} siginfo_t;
+#define si_pid     __si_fields.__si_common.__first.__piduid.si_pid
+#define si_uid     __si_fields.__si_common.__first.__piduid.si_uid
+#define si_status  __si_fields.__si_common.__second.__sigchld.si_status
+#define si_utime   __si_fields.__si_common.__second.__sigchld.si_utime
+#define si_stime   __si_fields.__si_common.__second.__sigchld.si_stime
+#define si_value   __si_fields.__si_common.__second.si_value
+#define si_addr    __si_fields.__sigfault.si_addr
+#define si_addr_lsb __si_fields.__sigfault.si_addr_lsb
+#define si_lower   __si_fields.__sigfault.__first.__addr_bnd.si_lower
+#define si_upper   __si_fields.__sigfault.__first.__addr_bnd.si_upper
+#define si_pkey    __si_fields.__sigfault.__first.si_pkey
+#define si_band    __si_fields.__sigpoll.si_band
+#define si_fd      __si_fields.__sigpoll.si_fd
+#define si_timerid __si_fields.__si_common.__first.__timer.si_timerid
+#define si_overrun __si_fields.__si_common.__first.__timer.si_overrun
+#define si_ptr     si_value.sival_ptr
+#define si_int     si_value.sival_int
+#define si_call_addr __si_fields.__sigsys.si_call_addr
+#define si_syscall __si_fields.__sigsys.si_syscall
+#define si_arch    __si_fields.__sigsys.si_arch
+
+struct sigaction {
+	union {
+		void (*sa_handler)(int);
+		void (*sa_sigaction)(int, siginfo_t *, void *);
+	} __sa_handler;
+	sigset_t sa_mask;
+	int sa_flags;
+	void (*sa_restorer)(void);
+};
+#define sa_handler   __sa_handler.sa_handler
+#define sa_sigaction __sa_handler.sa_sigaction
+
+struct sigevent {
+	union sigval sigev_value;
+	int sigev_signo;
+	int sigev_notify;
+	union {
+		char __pad[64 - 2*sizeof(int) - sizeof(union sigval)];
+		pid_t sigev_notify_thread_id;
+		struct {
+			void (*sigev_notify_function)(union sigval);
+			pthread_attr_t *sigev_notify_attributes;
+		} __sev_thread;
+	} __sev_fields;
+};
+
+#define sigev_notify_thread_id __sev_fields.sigev_notify_thread_id
+#define sigev_notify_function __sev_fields.__sev_thread.sigev_notify_function
+#define sigev_notify_attributes __sev_fields.__sev_thread.sigev_notify_attributes
+
+#define SIGEV_SIGNAL 0
+#define SIGEV_NONE 1
+#define SIGEV_THREAD 2
+#define SIGEV_THREAD_ID 4
+
+int __libc_current_sigrtmin(void);
+int __libc_current_sigrtmax(void);
+
+#define SIGRTMIN  (__libc_current_sigrtmin())
+#define SIGRTMAX  (__libc_current_sigrtmax())
+
+int kill(pid_t, int);
+
+int sigemptyset(sigset_t *);
+int sigfillset(sigset_t *);
+int sigaddset(sigset_t *, int);
+int sigdelset(sigset_t *, int);
+int sigismember(const sigset_t *, int);
+
+int sigprocmask(int, const sigset_t *__restrict, sigset_t *__restrict);
+int sigsuspend(const sigset_t *);
+int sigaction(int, const struct sigaction *__restrict, struct sigaction *__restrict);
+int sigpending(sigset_t *);
+int sigwait(const sigset_t *__restrict, int *__restrict);
+int sigwaitinfo(const sigset_t *__restrict, siginfo_t *__restrict);
+int sigtimedwait(const sigset_t *__restrict, siginfo_t *__restrict, const struct timespec *__restrict);
+int sigqueue(pid_t, int, union sigval);
+
+int pthread_sigmask(int, const sigset_t *__restrict, sigset_t *__restrict);
+int pthread_kill(pthread_t, int);
+int pthread_sigqueue(pthread_t, int, union sigval);
+
+void psiginfo(const siginfo_t *, const char *);
+void psignal(int, const char *);
+
+#endif
+
+#if defined(_XOPEN_SOURCE) || defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
+int killpg(pid_t, int);
+int sigaltstack(const stack_t *__restrict, stack_t *__restrict);
+int sighold(int);
+int sigignore(int);
+int siginterrupt(int, int);
+int sigpause(int);
+int sigrelse(int);
+void (*sigset(int, void (*)(int)))(int);
+#define TRAP_BRKPT 1
+#define TRAP_TRACE 2
+#define TRAP_BRANCH 3
+#define TRAP_HWBKPT 4
+#define TRAP_UNK 5
+#define POLL_IN 1
+#define POLL_OUT 2
+#define POLL_MSG 3
+#define POLL_ERR 4
+#define POLL_PRI 5
+#define POLL_HUP 6
+#define SS_ONSTACK    1
+#define SS_DISABLE    2
+#define SS_AUTODISARM (1U << 31)
+#define SS_FLAG_BITS SS_AUTODISARM
+#endif
+
+#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
+#define NSIG _NSIG
+typedef void (*sig_t)(int);
+#endif
+
+#ifdef _GNU_SOURCE
+typedef void (*sighandler_t)(int);
+void (*bsd_signal(int, void (*)(int)))(int);
+int sigisemptyset(const sigset_t *);
+int sigorset (sigset_t *, const sigset_t *, const sigset_t *);
+int sigandset(sigset_t *, const sigset_t *, const sigset_t *);
+
+#define SA_NOMASK SA_NODEFER
+#define SA_ONESHOT SA_RESETHAND
+#endif
+
+#define SIG_ERR  ((void (*)(int))-1)
+#define SIG_DFL  ((void (*)(int)) 0)
+#define SIG_IGN  ((void (*)(int)) 1)
+
+typedef int sig_atomic_t;
+
+void (*signal(int, void (*)(int)))(int);
+int raise(int);
+
+#if _REDIR_TIME64
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+__REDIR(sigtimedwait, __sigtimedwait_time64);
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sound/asequencer.h b/i686-linux-musl/include/sound/asequencer.h
new file mode 100644
index 0000000..ac72736
--- /dev/null
+++ b/i686-linux-musl/include/sound/asequencer.h
@@ -0,0 +1,405 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__SOUND_ASEQUENCER_H
+#define _UAPI__SOUND_ASEQUENCER_H
+#include <sound/asound.h>
+#define SNDRV_SEQ_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 2)
+#define SNDRV_SEQ_EVENT_SYSTEM 0
+#define SNDRV_SEQ_EVENT_RESULT 1
+#define SNDRV_SEQ_EVENT_NOTE 5
+#define SNDRV_SEQ_EVENT_NOTEON 6
+#define SNDRV_SEQ_EVENT_NOTEOFF 7
+#define SNDRV_SEQ_EVENT_KEYPRESS 8
+#define SNDRV_SEQ_EVENT_CONTROLLER 10
+#define SNDRV_SEQ_EVENT_PGMCHANGE 11
+#define SNDRV_SEQ_EVENT_CHANPRESS 12
+#define SNDRV_SEQ_EVENT_PITCHBEND 13
+#define SNDRV_SEQ_EVENT_CONTROL14 14
+#define SNDRV_SEQ_EVENT_NONREGPARAM 15
+#define SNDRV_SEQ_EVENT_REGPARAM 16
+#define SNDRV_SEQ_EVENT_SONGPOS 20
+#define SNDRV_SEQ_EVENT_SONGSEL 21
+#define SNDRV_SEQ_EVENT_QFRAME 22
+#define SNDRV_SEQ_EVENT_TIMESIGN 23
+#define SNDRV_SEQ_EVENT_KEYSIGN 24
+#define SNDRV_SEQ_EVENT_START 30
+#define SNDRV_SEQ_EVENT_CONTINUE 31
+#define SNDRV_SEQ_EVENT_STOP 32
+#define SNDRV_SEQ_EVENT_SETPOS_TICK 33
+#define SNDRV_SEQ_EVENT_SETPOS_TIME 34
+#define SNDRV_SEQ_EVENT_TEMPO 35
+#define SNDRV_SEQ_EVENT_CLOCK 36
+#define SNDRV_SEQ_EVENT_TICK 37
+#define SNDRV_SEQ_EVENT_QUEUE_SKEW 38
+#define SNDRV_SEQ_EVENT_TUNE_REQUEST 40
+#define SNDRV_SEQ_EVENT_RESET 41
+#define SNDRV_SEQ_EVENT_SENSING 42
+#define SNDRV_SEQ_EVENT_ECHO 50
+#define SNDRV_SEQ_EVENT_OSS 51
+#define SNDRV_SEQ_EVENT_CLIENT_START 60
+#define SNDRV_SEQ_EVENT_CLIENT_EXIT 61
+#define SNDRV_SEQ_EVENT_CLIENT_CHANGE 62
+#define SNDRV_SEQ_EVENT_PORT_START 63
+#define SNDRV_SEQ_EVENT_PORT_EXIT 64
+#define SNDRV_SEQ_EVENT_PORT_CHANGE 65
+#define SNDRV_SEQ_EVENT_PORT_SUBSCRIBED 66
+#define SNDRV_SEQ_EVENT_PORT_UNSUBSCRIBED 67
+#define SNDRV_SEQ_EVENT_USR0 90
+#define SNDRV_SEQ_EVENT_USR1 91
+#define SNDRV_SEQ_EVENT_USR2 92
+#define SNDRV_SEQ_EVENT_USR3 93
+#define SNDRV_SEQ_EVENT_USR4 94
+#define SNDRV_SEQ_EVENT_USR5 95
+#define SNDRV_SEQ_EVENT_USR6 96
+#define SNDRV_SEQ_EVENT_USR7 97
+#define SNDRV_SEQ_EVENT_USR8 98
+#define SNDRV_SEQ_EVENT_USR9 99
+#define SNDRV_SEQ_EVENT_SYSEX 130
+#define SNDRV_SEQ_EVENT_BOUNCE 131
+#define SNDRV_SEQ_EVENT_USR_VAR0 135
+#define SNDRV_SEQ_EVENT_USR_VAR1 136
+#define SNDRV_SEQ_EVENT_USR_VAR2 137
+#define SNDRV_SEQ_EVENT_USR_VAR3 138
+#define SNDRV_SEQ_EVENT_USR_VAR4 139
+#define SNDRV_SEQ_EVENT_KERNEL_ERROR 150
+#define SNDRV_SEQ_EVENT_KERNEL_QUOTE 151
+#define SNDRV_SEQ_EVENT_NONE 255
+typedef unsigned char snd_seq_event_type_t;
+struct snd_seq_addr {
+  unsigned char client;
+  unsigned char port;
+};
+struct snd_seq_connect {
+  struct snd_seq_addr sender;
+  struct snd_seq_addr dest;
+};
+#define SNDRV_SEQ_ADDRESS_UNKNOWN 253
+#define SNDRV_SEQ_ADDRESS_SUBSCRIBERS 254
+#define SNDRV_SEQ_ADDRESS_BROADCAST 255
+#define SNDRV_SEQ_QUEUE_DIRECT 253
+#define SNDRV_SEQ_TIME_STAMP_TICK (0 << 0)
+#define SNDRV_SEQ_TIME_STAMP_REAL (1 << 0)
+#define SNDRV_SEQ_TIME_STAMP_MASK (1 << 0)
+#define SNDRV_SEQ_TIME_MODE_ABS (0 << 1)
+#define SNDRV_SEQ_TIME_MODE_REL (1 << 1)
+#define SNDRV_SEQ_TIME_MODE_MASK (1 << 1)
+#define SNDRV_SEQ_EVENT_LENGTH_FIXED (0 << 2)
+#define SNDRV_SEQ_EVENT_LENGTH_VARIABLE (1 << 2)
+#define SNDRV_SEQ_EVENT_LENGTH_VARUSR (2 << 2)
+#define SNDRV_SEQ_EVENT_LENGTH_MASK (3 << 2)
+#define SNDRV_SEQ_PRIORITY_NORMAL (0 << 4)
+#define SNDRV_SEQ_PRIORITY_HIGH (1 << 4)
+#define SNDRV_SEQ_PRIORITY_MASK (1 << 4)
+struct snd_seq_ev_note {
+  unsigned char channel;
+  unsigned char note;
+  unsigned char velocity;
+  unsigned char off_velocity;
+  unsigned int duration;
+};
+struct snd_seq_ev_ctrl {
+  unsigned char channel;
+  unsigned char unused1, unused2, unused3;
+  unsigned int param;
+  signed int value;
+};
+struct snd_seq_ev_raw8 {
+  unsigned char d[12];
+};
+struct snd_seq_ev_raw32 {
+  unsigned int d[3];
+};
+struct snd_seq_ev_ext {
+  unsigned int len;
+  void * ptr;
+} __attribute__((packed));
+struct snd_seq_result {
+  int event;
+  int result;
+};
+struct snd_seq_real_time {
+  unsigned int tv_sec;
+  unsigned int tv_nsec;
+};
+typedef unsigned int snd_seq_tick_time_t;
+union snd_seq_timestamp {
+  snd_seq_tick_time_t tick;
+  struct snd_seq_real_time time;
+};
+struct snd_seq_queue_skew {
+  unsigned int value;
+  unsigned int base;
+};
+struct snd_seq_ev_queue_control {
+  unsigned char queue;
+  unsigned char pad[3];
+  union {
+    signed int value;
+    union snd_seq_timestamp time;
+    unsigned int position;
+    struct snd_seq_queue_skew skew;
+    unsigned int d32[2];
+    unsigned char d8[8];
+  } param;
+};
+struct snd_seq_ev_quote {
+  struct snd_seq_addr origin;
+  unsigned short value;
+  struct snd_seq_event * event;
+} __attribute__((packed));
+struct snd_seq_event {
+  snd_seq_event_type_t type;
+  unsigned char flags;
+  char tag;
+  unsigned char queue;
+  union snd_seq_timestamp time;
+  struct snd_seq_addr source;
+  struct snd_seq_addr dest;
+  union {
+    struct snd_seq_ev_note note;
+    struct snd_seq_ev_ctrl control;
+    struct snd_seq_ev_raw8 raw8;
+    struct snd_seq_ev_raw32 raw32;
+    struct snd_seq_ev_ext ext;
+    struct snd_seq_ev_queue_control queue;
+    union snd_seq_timestamp time;
+    struct snd_seq_addr addr;
+    struct snd_seq_connect connect;
+    struct snd_seq_result result;
+    struct snd_seq_ev_quote quote;
+  } data;
+};
+struct snd_seq_event_bounce {
+  int err;
+  struct snd_seq_event event;
+};
+struct snd_seq_system_info {
+  int queues;
+  int clients;
+  int ports;
+  int channels;
+  int cur_clients;
+  int cur_queues;
+  char reserved[24];
+};
+struct snd_seq_running_info {
+  unsigned char client;
+  unsigned char big_endian;
+  unsigned char cpu_mode;
+  unsigned char pad;
+  unsigned char reserved[12];
+};
+#define SNDRV_SEQ_CLIENT_SYSTEM 0
+#define SNDRV_SEQ_CLIENT_DUMMY 14
+#define SNDRV_SEQ_CLIENT_OSS 15
+typedef int __bitwise snd_seq_client_type_t;
+#define NO_CLIENT ((__force snd_seq_client_type_t) 0)
+#define USER_CLIENT ((__force snd_seq_client_type_t) 1)
+#define KERNEL_CLIENT ((__force snd_seq_client_type_t) 2)
+#define SNDRV_SEQ_FILTER_BROADCAST (1 << 0)
+#define SNDRV_SEQ_FILTER_MULTICAST (1 << 1)
+#define SNDRV_SEQ_FILTER_BOUNCE (1 << 2)
+#define SNDRV_SEQ_FILTER_USE_EVENT (1 << 31)
+struct snd_seq_client_info {
+  int client;
+  snd_seq_client_type_t type;
+  char name[64];
+  unsigned int filter;
+  unsigned char multicast_filter[8];
+  unsigned char event_filter[32];
+  int num_ports;
+  int event_lost;
+  int card;
+  int pid;
+  char reserved[56];
+};
+struct snd_seq_client_pool {
+  int client;
+  int output_pool;
+  int input_pool;
+  int output_room;
+  int output_free;
+  int input_free;
+  char reserved[64];
+};
+#define SNDRV_SEQ_REMOVE_INPUT (1 << 0)
+#define SNDRV_SEQ_REMOVE_OUTPUT (1 << 1)
+#define SNDRV_SEQ_REMOVE_DEST (1 << 2)
+#define SNDRV_SEQ_REMOVE_DEST_CHANNEL (1 << 3)
+#define SNDRV_SEQ_REMOVE_TIME_BEFORE (1 << 4)
+#define SNDRV_SEQ_REMOVE_TIME_AFTER (1 << 5)
+#define SNDRV_SEQ_REMOVE_TIME_TICK (1 << 6)
+#define SNDRV_SEQ_REMOVE_EVENT_TYPE (1 << 7)
+#define SNDRV_SEQ_REMOVE_IGNORE_OFF (1 << 8)
+#define SNDRV_SEQ_REMOVE_TAG_MATCH (1 << 9)
+struct snd_seq_remove_events {
+  unsigned int remove_mode;
+  union snd_seq_timestamp time;
+  unsigned char queue;
+  struct snd_seq_addr dest;
+  unsigned char channel;
+  int type;
+  char tag;
+  int reserved[10];
+};
+#define SNDRV_SEQ_PORT_SYSTEM_TIMER 0
+#define SNDRV_SEQ_PORT_SYSTEM_ANNOUNCE 1
+#define SNDRV_SEQ_PORT_CAP_READ (1 << 0)
+#define SNDRV_SEQ_PORT_CAP_WRITE (1 << 1)
+#define SNDRV_SEQ_PORT_CAP_SYNC_READ (1 << 2)
+#define SNDRV_SEQ_PORT_CAP_SYNC_WRITE (1 << 3)
+#define SNDRV_SEQ_PORT_CAP_DUPLEX (1 << 4)
+#define SNDRV_SEQ_PORT_CAP_SUBS_READ (1 << 5)
+#define SNDRV_SEQ_PORT_CAP_SUBS_WRITE (1 << 6)
+#define SNDRV_SEQ_PORT_CAP_NO_EXPORT (1 << 7)
+#define SNDRV_SEQ_PORT_TYPE_SPECIFIC (1 << 0)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_GENERIC (1 << 1)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_GM (1 << 2)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_GS (1 << 3)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_XG (1 << 4)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_MT32 (1 << 5)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_GM2 (1 << 6)
+#define SNDRV_SEQ_PORT_TYPE_SYNTH (1 << 10)
+#define SNDRV_SEQ_PORT_TYPE_DIRECT_SAMPLE (1 << 11)
+#define SNDRV_SEQ_PORT_TYPE_SAMPLE (1 << 12)
+#define SNDRV_SEQ_PORT_TYPE_HARDWARE (1 << 16)
+#define SNDRV_SEQ_PORT_TYPE_SOFTWARE (1 << 17)
+#define SNDRV_SEQ_PORT_TYPE_SYNTHESIZER (1 << 18)
+#define SNDRV_SEQ_PORT_TYPE_PORT (1 << 19)
+#define SNDRV_SEQ_PORT_TYPE_APPLICATION (1 << 20)
+#define SNDRV_SEQ_PORT_FLG_GIVEN_PORT (1 << 0)
+#define SNDRV_SEQ_PORT_FLG_TIMESTAMP (1 << 1)
+#define SNDRV_SEQ_PORT_FLG_TIME_REAL (1 << 2)
+struct snd_seq_port_info {
+  struct snd_seq_addr addr;
+  char name[64];
+  unsigned int capability;
+  unsigned int type;
+  int midi_channels;
+  int midi_voices;
+  int synth_voices;
+  int read_use;
+  int write_use;
+  void * kernel;
+  unsigned int flags;
+  unsigned char time_queue;
+  char reserved[59];
+};
+#define SNDRV_SEQ_QUEUE_FLG_SYNC (1 << 0)
+struct snd_seq_queue_info {
+  int queue;
+  int owner;
+  unsigned locked : 1;
+  char name[64];
+  unsigned int flags;
+  char reserved[60];
+};
+struct snd_seq_queue_status {
+  int queue;
+  int events;
+  snd_seq_tick_time_t tick;
+  struct snd_seq_real_time time;
+  int running;
+  int flags;
+  char reserved[64];
+};
+struct snd_seq_queue_tempo {
+  int queue;
+  unsigned int tempo;
+  int ppq;
+  unsigned int skew_value;
+  unsigned int skew_base;
+  char reserved[24];
+};
+#define SNDRV_SEQ_TIMER_ALSA 0
+#define SNDRV_SEQ_TIMER_MIDI_CLOCK 1
+#define SNDRV_SEQ_TIMER_MIDI_TICK 2
+struct snd_seq_queue_timer {
+  int queue;
+  int type;
+  union {
+    struct {
+      struct snd_timer_id id;
+      unsigned int resolution;
+    } alsa;
+  } u;
+  char reserved[64];
+};
+struct snd_seq_queue_client {
+  int queue;
+  int client;
+  int used;
+  char reserved[64];
+};
+#define SNDRV_SEQ_PORT_SUBS_EXCLUSIVE (1 << 0)
+#define SNDRV_SEQ_PORT_SUBS_TIMESTAMP (1 << 1)
+#define SNDRV_SEQ_PORT_SUBS_TIME_REAL (1 << 2)
+struct snd_seq_port_subscribe {
+  struct snd_seq_addr sender;
+  struct snd_seq_addr dest;
+  unsigned int voices;
+  unsigned int flags;
+  unsigned char queue;
+  unsigned char pad[3];
+  char reserved[64];
+};
+#define SNDRV_SEQ_QUERY_SUBS_READ 0
+#define SNDRV_SEQ_QUERY_SUBS_WRITE 1
+struct snd_seq_query_subs {
+  struct snd_seq_addr root;
+  int type;
+  int index;
+  int num_subs;
+  struct snd_seq_addr addr;
+  unsigned char queue;
+  unsigned int flags;
+  char reserved[64];
+};
+#define SNDRV_SEQ_IOCTL_PVERSION _IOR('S', 0x00, int)
+#define SNDRV_SEQ_IOCTL_CLIENT_ID _IOR('S', 0x01, int)
+#define SNDRV_SEQ_IOCTL_SYSTEM_INFO _IOWR('S', 0x02, struct snd_seq_system_info)
+#define SNDRV_SEQ_IOCTL_RUNNING_MODE _IOWR('S', 0x03, struct snd_seq_running_info)
+#define SNDRV_SEQ_IOCTL_GET_CLIENT_INFO _IOWR('S', 0x10, struct snd_seq_client_info)
+#define SNDRV_SEQ_IOCTL_SET_CLIENT_INFO _IOW('S', 0x11, struct snd_seq_client_info)
+#define SNDRV_SEQ_IOCTL_CREATE_PORT _IOWR('S', 0x20, struct snd_seq_port_info)
+#define SNDRV_SEQ_IOCTL_DELETE_PORT _IOW('S', 0x21, struct snd_seq_port_info)
+#define SNDRV_SEQ_IOCTL_GET_PORT_INFO _IOWR('S', 0x22, struct snd_seq_port_info)
+#define SNDRV_SEQ_IOCTL_SET_PORT_INFO _IOW('S', 0x23, struct snd_seq_port_info)
+#define SNDRV_SEQ_IOCTL_SUBSCRIBE_PORT _IOW('S', 0x30, struct snd_seq_port_subscribe)
+#define SNDRV_SEQ_IOCTL_UNSUBSCRIBE_PORT _IOW('S', 0x31, struct snd_seq_port_subscribe)
+#define SNDRV_SEQ_IOCTL_CREATE_QUEUE _IOWR('S', 0x32, struct snd_seq_queue_info)
+#define SNDRV_SEQ_IOCTL_DELETE_QUEUE _IOW('S', 0x33, struct snd_seq_queue_info)
+#define SNDRV_SEQ_IOCTL_GET_QUEUE_INFO _IOWR('S', 0x34, struct snd_seq_queue_info)
+#define SNDRV_SEQ_IOCTL_SET_QUEUE_INFO _IOWR('S', 0x35, struct snd_seq_queue_info)
+#define SNDRV_SEQ_IOCTL_GET_NAMED_QUEUE _IOWR('S', 0x36, struct snd_seq_queue_info)
+#define SNDRV_SEQ_IOCTL_GET_QUEUE_STATUS _IOWR('S', 0x40, struct snd_seq_queue_status)
+#define SNDRV_SEQ_IOCTL_GET_QUEUE_TEMPO _IOWR('S', 0x41, struct snd_seq_queue_tempo)
+#define SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO _IOW('S', 0x42, struct snd_seq_queue_tempo)
+#define SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER _IOWR('S', 0x45, struct snd_seq_queue_timer)
+#define SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER _IOW('S', 0x46, struct snd_seq_queue_timer)
+#define SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT _IOWR('S', 0x49, struct snd_seq_queue_client)
+#define SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT _IOW('S', 0x4a, struct snd_seq_queue_client)
+#define SNDRV_SEQ_IOCTL_GET_CLIENT_POOL _IOWR('S', 0x4b, struct snd_seq_client_pool)
+#define SNDRV_SEQ_IOCTL_SET_CLIENT_POOL _IOW('S', 0x4c, struct snd_seq_client_pool)
+#define SNDRV_SEQ_IOCTL_REMOVE_EVENTS _IOW('S', 0x4e, struct snd_seq_remove_events)
+#define SNDRV_SEQ_IOCTL_QUERY_SUBS _IOWR('S', 0x4f, struct snd_seq_query_subs)
+#define SNDRV_SEQ_IOCTL_GET_SUBSCRIPTION _IOWR('S', 0x50, struct snd_seq_port_subscribe)
+#define SNDRV_SEQ_IOCTL_QUERY_NEXT_CLIENT _IOWR('S', 0x51, struct snd_seq_client_info)
+#define SNDRV_SEQ_IOCTL_QUERY_NEXT_PORT _IOWR('S', 0x52, struct snd_seq_port_info)
+#endif
diff --git a/i686-linux-musl/include/sound/asoc.h b/i686-linux-musl/include/sound/asoc.h
new file mode 100644
index 0000000..eeb12b0
--- /dev/null
+++ b/i686-linux-musl/include/sound/asoc.h
@@ -0,0 +1,395 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/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_UAPI_SND_ASOC_H
+#define __LINUX_UAPI_SND_ASOC_H
+#include <linux/types.h>
+#include <sound/asound.h>
+#define SND_SOC_TPLG_MAX_CHAN 8
+#define SND_SOC_TPLG_MAX_FORMATS 16
+#define SND_SOC_TPLG_STREAM_CONFIG_MAX 8
+#define SND_SOC_TPLG_HW_CONFIG_MAX 8
+#define SND_SOC_TPLG_CTL_VOLSW 1
+#define SND_SOC_TPLG_CTL_VOLSW_SX 2
+#define SND_SOC_TPLG_CTL_VOLSW_XR_SX 3
+#define SND_SOC_TPLG_CTL_ENUM 4
+#define SND_SOC_TPLG_CTL_BYTES 5
+#define SND_SOC_TPLG_CTL_ENUM_VALUE 6
+#define SND_SOC_TPLG_CTL_RANGE 7
+#define SND_SOC_TPLG_CTL_STROBE 8
+#define SND_SOC_TPLG_DAPM_CTL_VOLSW 64
+#define SND_SOC_TPLG_DAPM_CTL_ENUM_DOUBLE 65
+#define SND_SOC_TPLG_DAPM_CTL_ENUM_VIRT 66
+#define SND_SOC_TPLG_DAPM_CTL_ENUM_VALUE 67
+#define SND_SOC_TPLG_DAPM_CTL_PIN 68
+#define SND_SOC_TPLG_DAPM_INPUT 0
+#define SND_SOC_TPLG_DAPM_OUTPUT 1
+#define SND_SOC_TPLG_DAPM_MUX 2
+#define SND_SOC_TPLG_DAPM_MIXER 3
+#define SND_SOC_TPLG_DAPM_PGA 4
+#define SND_SOC_TPLG_DAPM_OUT_DRV 5
+#define SND_SOC_TPLG_DAPM_ADC 6
+#define SND_SOC_TPLG_DAPM_DAC 7
+#define SND_SOC_TPLG_DAPM_SWITCH 8
+#define SND_SOC_TPLG_DAPM_PRE 9
+#define SND_SOC_TPLG_DAPM_POST 10
+#define SND_SOC_TPLG_DAPM_AIF_IN 11
+#define SND_SOC_TPLG_DAPM_AIF_OUT 12
+#define SND_SOC_TPLG_DAPM_DAI_IN 13
+#define SND_SOC_TPLG_DAPM_DAI_OUT 14
+#define SND_SOC_TPLG_DAPM_DAI_LINK 15
+#define SND_SOC_TPLG_DAPM_BUFFER 16
+#define SND_SOC_TPLG_DAPM_SCHEDULER 17
+#define SND_SOC_TPLG_DAPM_EFFECT 18
+#define SND_SOC_TPLG_DAPM_SIGGEN 19
+#define SND_SOC_TPLG_DAPM_SRC 20
+#define SND_SOC_TPLG_DAPM_ASRC 21
+#define SND_SOC_TPLG_DAPM_ENCODER 22
+#define SND_SOC_TPLG_DAPM_DECODER 23
+#define SND_SOC_TPLG_DAPM_LAST SND_SOC_TPLG_DAPM_DECODER
+#define SND_SOC_TPLG_MAGIC 0x41536F43
+#define SND_SOC_TPLG_NUM_TEXTS 16
+#define SND_SOC_TPLG_ABI_VERSION 0x5
+#define SND_SOC_TPLG_ABI_VERSION_MIN 0x4
+#define SND_SOC_TPLG_TLV_SIZE 32
+#define SND_SOC_TPLG_TYPE_MIXER 1
+#define SND_SOC_TPLG_TYPE_BYTES 2
+#define SND_SOC_TPLG_TYPE_ENUM 3
+#define SND_SOC_TPLG_TYPE_DAPM_GRAPH 4
+#define SND_SOC_TPLG_TYPE_DAPM_WIDGET 5
+#define SND_SOC_TPLG_TYPE_DAI_LINK 6
+#define SND_SOC_TPLG_TYPE_PCM 7
+#define SND_SOC_TPLG_TYPE_MANIFEST 8
+#define SND_SOC_TPLG_TYPE_CODEC_LINK 9
+#define SND_SOC_TPLG_TYPE_BACKEND_LINK 10
+#define SND_SOC_TPLG_TYPE_PDATA 11
+#define SND_SOC_TPLG_TYPE_DAI 12
+#define SND_SOC_TPLG_TYPE_MAX SND_SOC_TPLG_TYPE_DAI
+#define SND_SOC_TPLG_TYPE_VENDOR_FW 1000
+#define SND_SOC_TPLG_TYPE_VENDOR_CONFIG 1001
+#define SND_SOC_TPLG_TYPE_VENDOR_COEFF 1002
+#define SND_SOC_TPLG_TYPEVENDOR_CODEC 1003
+#define SND_SOC_TPLG_STREAM_PLAYBACK 0
+#define SND_SOC_TPLG_STREAM_CAPTURE 1
+#define SND_SOC_TPLG_TUPLE_TYPE_UUID 0
+#define SND_SOC_TPLG_TUPLE_TYPE_STRING 1
+#define SND_SOC_TPLG_TUPLE_TYPE_BOOL 2
+#define SND_SOC_TPLG_TUPLE_TYPE_BYTE 3
+#define SND_SOC_TPLG_TUPLE_TYPE_WORD 4
+#define SND_SOC_TPLG_TUPLE_TYPE_SHORT 5
+#define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_RATES (1 << 0)
+#define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_CHANNELS (1 << 1)
+#define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_SAMPLEBITS (1 << 2)
+#define SND_SOC_TPLG_DAI_CLK_GATE_UNDEFINED 0
+#define SND_SOC_TPLG_DAI_CLK_GATE_GATED 1
+#define SND_SOC_TPLG_DAI_CLK_GATE_CONT 2
+#define SND_SOC_TPLG_MCLK_CO 0
+#define SND_SOC_TPLG_MCLK_CI 1
+#define SND_SOC_DAI_FORMAT_I2S 1
+#define SND_SOC_DAI_FORMAT_RIGHT_J 2
+#define SND_SOC_DAI_FORMAT_LEFT_J 3
+#define SND_SOC_DAI_FORMAT_DSP_A 4
+#define SND_SOC_DAI_FORMAT_DSP_B 5
+#define SND_SOC_DAI_FORMAT_AC97 6
+#define SND_SOC_DAI_FORMAT_PDM 7
+#define SND_SOC_DAI_FORMAT_MSB SND_SOC_DAI_FORMAT_LEFT_J
+#define SND_SOC_DAI_FORMAT_LSB SND_SOC_DAI_FORMAT_RIGHT_J
+#define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_RATES (1 << 0)
+#define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_CHANNELS (1 << 1)
+#define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_SAMPLEBITS (1 << 2)
+#define SND_SOC_TPLG_LNK_FLGBIT_VOICE_WAKEUP (1 << 3)
+#define SND_SOC_TPLG_BCLK_CP 0
+#define SND_SOC_TPLG_BCLK_CC 1
+#define SND_SOC_TPLG_BCLK_CM SND_SOC_TPLG_BCLK_CP
+#define SND_SOC_TPLG_BCLK_CS SND_SOC_TPLG_BCLK_CC
+#define SND_SOC_TPLG_FSYNC_CP 0
+#define SND_SOC_TPLG_FSYNC_CC 1
+#define SND_SOC_TPLG_FSYNC_CM SND_SOC_TPLG_FSYNC_CP
+#define SND_SOC_TPLG_FSYNC_CS SND_SOC_TPLG_FSYNC_CC
+struct snd_soc_tplg_hdr {
+  __le32 magic;
+  __le32 abi;
+  __le32 version;
+  __le32 type;
+  __le32 size;
+  __le32 vendor_type;
+  __le32 payload_size;
+  __le32 index;
+  __le32 count;
+} __attribute__((packed));
+struct snd_soc_tplg_vendor_uuid_elem {
+  __le32 token;
+  char uuid[16];
+} __attribute__((packed));
+struct snd_soc_tplg_vendor_value_elem {
+  __le32 token;
+  __le32 value;
+} __attribute__((packed));
+struct snd_soc_tplg_vendor_string_elem {
+  __le32 token;
+  char string[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+} __attribute__((packed));
+struct snd_soc_tplg_vendor_array {
+  __le32 size;
+  __le32 type;
+  __le32 num_elems;
+  union {
+    struct snd_soc_tplg_vendor_uuid_elem uuid[0];
+    struct snd_soc_tplg_vendor_value_elem value[0];
+    struct snd_soc_tplg_vendor_string_elem string[0];
+  };
+} __attribute__((packed));
+struct snd_soc_tplg_private {
+  __le32 size;
+  union {
+    __DECLARE_FLEX_ARRAY(char, data);
+    __DECLARE_FLEX_ARRAY(struct snd_soc_tplg_vendor_array, array);
+  };
+} __attribute__((packed));
+struct snd_soc_tplg_tlv_dbscale {
+  __le32 min;
+  __le32 step;
+  __le32 mute;
+} __attribute__((packed));
+struct snd_soc_tplg_ctl_tlv {
+  __le32 size;
+  __le32 type;
+  union {
+    __le32 data[SND_SOC_TPLG_TLV_SIZE];
+    struct snd_soc_tplg_tlv_dbscale scale;
+  };
+} __attribute__((packed));
+struct snd_soc_tplg_channel {
+  __le32 size;
+  __le32 reg;
+  __le32 shift;
+  __le32 id;
+} __attribute__((packed));
+struct snd_soc_tplg_io_ops {
+  __le32 get;
+  __le32 put;
+  __le32 info;
+} __attribute__((packed));
+struct snd_soc_tplg_ctl_hdr {
+  __le32 size;
+  __le32 type;
+  char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  __le32 access;
+  struct snd_soc_tplg_io_ops ops;
+  struct snd_soc_tplg_ctl_tlv tlv;
+} __attribute__((packed));
+struct snd_soc_tplg_stream_caps {
+  __le32 size;
+  char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  __le64 formats;
+  __le32 rates;
+  __le32 rate_min;
+  __le32 rate_max;
+  __le32 channels_min;
+  __le32 channels_max;
+  __le32 periods_min;
+  __le32 periods_max;
+  __le32 period_size_min;
+  __le32 period_size_max;
+  __le32 buffer_size_min;
+  __le32 buffer_size_max;
+  __le32 sig_bits;
+} __attribute__((packed));
+struct snd_soc_tplg_stream {
+  __le32 size;
+  char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  __le64 format;
+  __le32 rate;
+  __le32 period_bytes;
+  __le32 buffer_bytes;
+  __le32 channels;
+} __attribute__((packed));
+struct snd_soc_tplg_hw_config {
+  __le32 size;
+  __le32 id;
+  __le32 fmt;
+  __u8 clock_gated;
+  __u8 invert_bclk;
+  __u8 invert_fsync;
+  __u8 bclk_provider;
+  __u8 fsync_provider;
+  __u8 mclk_direction;
+  __le16 reserved;
+  __le32 mclk_rate;
+  __le32 bclk_rate;
+  __le32 fsync_rate;
+  __le32 tdm_slots;
+  __le32 tdm_slot_width;
+  __le32 tx_slots;
+  __le32 rx_slots;
+  __le32 tx_channels;
+  __le32 tx_chanmap[SND_SOC_TPLG_MAX_CHAN];
+  __le32 rx_channels;
+  __le32 rx_chanmap[SND_SOC_TPLG_MAX_CHAN];
+} __attribute__((packed));
+struct snd_soc_tplg_manifest {
+  __le32 size;
+  __le32 control_elems;
+  __le32 widget_elems;
+  __le32 graph_elems;
+  __le32 pcm_elems;
+  __le32 dai_link_elems;
+  __le32 dai_elems;
+  __le32 reserved[20];
+  struct snd_soc_tplg_private priv;
+} __attribute__((packed));
+struct snd_soc_tplg_mixer_control {
+  struct snd_soc_tplg_ctl_hdr hdr;
+  __le32 size;
+  __le32 min;
+  __le32 max;
+  __le32 platform_max;
+  __le32 invert;
+  __le32 num_channels;
+  struct snd_soc_tplg_channel channel[SND_SOC_TPLG_MAX_CHAN];
+  struct snd_soc_tplg_private priv;
+} __attribute__((packed));
+struct snd_soc_tplg_enum_control {
+  struct snd_soc_tplg_ctl_hdr hdr;
+  __le32 size;
+  __le32 num_channels;
+  struct snd_soc_tplg_channel channel[SND_SOC_TPLG_MAX_CHAN];
+  __le32 items;
+  __le32 mask;
+  __le32 count;
+  char texts[SND_SOC_TPLG_NUM_TEXTS][SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  __le32 values[SND_SOC_TPLG_NUM_TEXTS * SNDRV_CTL_ELEM_ID_NAME_MAXLEN / 4];
+  struct snd_soc_tplg_private priv;
+} __attribute__((packed));
+struct snd_soc_tplg_bytes_control {
+  struct snd_soc_tplg_ctl_hdr hdr;
+  __le32 size;
+  __le32 max;
+  __le32 mask;
+  __le32 base;
+  __le32 num_regs;
+  struct snd_soc_tplg_io_ops ext_ops;
+  struct snd_soc_tplg_private priv;
+} __attribute__((packed));
+struct snd_soc_tplg_dapm_graph_elem {
+  char sink[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  char control[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  char source[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+} __attribute__((packed));
+struct snd_soc_tplg_dapm_widget {
+  __le32 size;
+  __le32 id;
+  char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  char sname[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  __le32 reg;
+  __le32 shift;
+  __le32 mask;
+  __le32 subseq;
+  __le32 invert;
+  __le32 ignore_suspend;
+  __le16 event_flags;
+  __le16 event_type;
+  __le32 num_kcontrols;
+  struct snd_soc_tplg_private priv;
+} __attribute__((packed));
+struct snd_soc_tplg_pcm {
+  __le32 size;
+  char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  __le32 pcm_id;
+  __le32 dai_id;
+  __le32 playback;
+  __le32 capture;
+  __le32 compress;
+  struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
+  __le32 num_streams;
+  struct snd_soc_tplg_stream_caps caps[2];
+  __le32 flag_mask;
+  __le32 flags;
+  struct snd_soc_tplg_private priv;
+} __attribute__((packed));
+struct snd_soc_tplg_link_config {
+  __le32 size;
+  __le32 id;
+  char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  char stream_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
+  __le32 num_streams;
+  struct snd_soc_tplg_hw_config hw_config[SND_SOC_TPLG_HW_CONFIG_MAX];
+  __le32 num_hw_configs;
+  __le32 default_hw_config_id;
+  __le32 flag_mask;
+  __le32 flags;
+  struct snd_soc_tplg_private priv;
+} __attribute__((packed));
+struct snd_soc_tplg_dai {
+  __le32 size;
+  char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  __le32 dai_id;
+  __le32 playback;
+  __le32 capture;
+  struct snd_soc_tplg_stream_caps caps[2];
+  __le32 flag_mask;
+  __le32 flags;
+  struct snd_soc_tplg_private priv;
+} __attribute__((packed));
+struct snd_soc_tplg_manifest_v4 {
+  __le32 size;
+  __le32 control_elems;
+  __le32 widget_elems;
+  __le32 graph_elems;
+  __le32 pcm_elems;
+  __le32 dai_link_elems;
+  struct snd_soc_tplg_private priv;
+} __packed;
+struct snd_soc_tplg_stream_caps_v4 {
+  __le32 size;
+  char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  __le64 formats;
+  __le32 rates;
+  __le32 rate_min;
+  __le32 rate_max;
+  __le32 channels_min;
+  __le32 channels_max;
+  __le32 periods_min;
+  __le32 periods_max;
+  __le32 period_size_min;
+  __le32 period_size_max;
+  __le32 buffer_size_min;
+  __le32 buffer_size_max;
+} __packed;
+struct snd_soc_tplg_pcm_v4 {
+  __le32 size;
+  char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  __le32 pcm_id;
+  __le32 dai_id;
+  __le32 playback;
+  __le32 capture;
+  __le32 compress;
+  struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
+  __le32 num_streams;
+  struct snd_soc_tplg_stream_caps_v4 caps[2];
+} __packed;
+struct snd_soc_tplg_link_config_v4 {
+  __le32 size;
+  __le32 id;
+  struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
+  __le32 num_streams;
+} __packed;
+#endif
diff --git a/i686-linux-musl/include/sound/asound.h b/i686-linux-musl/include/sound/asound.h
new file mode 100644
index 0000000..441f1d4
--- /dev/null
+++ b/i686-linux-musl/include/sound/asound.h
@@ -0,0 +1,943 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__SOUND_ASOUND_H
+#define _UAPI__SOUND_ASOUND_H
+#ifdef __linux__
+#include <linux/types.h>
+#include <asm/byteorder.h>
+#else
+#include <endian.h>
+#include <sys/ioctl.h>
+#endif
+#include <stdlib.h>
+#include <time.h>
+#define SNDRV_PROTOCOL_VERSION(major,minor,subminor) (((major) << 16) | ((minor) << 8) | (subminor))
+#define SNDRV_PROTOCOL_MAJOR(version) (((version) >> 16) & 0xffff)
+#define SNDRV_PROTOCOL_MINOR(version) (((version) >> 8) & 0xff)
+#define SNDRV_PROTOCOL_MICRO(version) ((version) & 0xff)
+#define SNDRV_PROTOCOL_INCOMPATIBLE(kversion,uversion) (SNDRV_PROTOCOL_MAJOR(kversion) != SNDRV_PROTOCOL_MAJOR(uversion) || (SNDRV_PROTOCOL_MAJOR(kversion) == SNDRV_PROTOCOL_MAJOR(uversion) && SNDRV_PROTOCOL_MINOR(kversion) != SNDRV_PROTOCOL_MINOR(uversion)))
+struct snd_aes_iec958 {
+  unsigned char status[24];
+  unsigned char subcode[147];
+  unsigned char pad;
+  unsigned char dig_subframe[4];
+};
+struct snd_cea_861_aud_if {
+  unsigned char db1_ct_cc;
+  unsigned char db2_sf_ss;
+  unsigned char db3;
+  unsigned char db4_ca;
+  unsigned char db5_dminh_lsv;
+};
+#define SNDRV_HWDEP_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 1)
+enum {
+  SNDRV_HWDEP_IFACE_OPL2 = 0,
+  SNDRV_HWDEP_IFACE_OPL3,
+  SNDRV_HWDEP_IFACE_OPL4,
+  SNDRV_HWDEP_IFACE_SB16CSP,
+  SNDRV_HWDEP_IFACE_EMU10K1,
+  SNDRV_HWDEP_IFACE_YSS225,
+  SNDRV_HWDEP_IFACE_ICS2115,
+  SNDRV_HWDEP_IFACE_SSCAPE,
+  SNDRV_HWDEP_IFACE_VX,
+  SNDRV_HWDEP_IFACE_MIXART,
+  SNDRV_HWDEP_IFACE_USX2Y,
+  SNDRV_HWDEP_IFACE_EMUX_WAVETABLE,
+  SNDRV_HWDEP_IFACE_BLUETOOTH,
+  SNDRV_HWDEP_IFACE_USX2Y_PCM,
+  SNDRV_HWDEP_IFACE_PCXHR,
+  SNDRV_HWDEP_IFACE_SB_RC,
+  SNDRV_HWDEP_IFACE_HDA,
+  SNDRV_HWDEP_IFACE_USB_STREAM,
+  SNDRV_HWDEP_IFACE_FW_DICE,
+  SNDRV_HWDEP_IFACE_FW_FIREWORKS,
+  SNDRV_HWDEP_IFACE_FW_BEBOB,
+  SNDRV_HWDEP_IFACE_FW_OXFW,
+  SNDRV_HWDEP_IFACE_FW_DIGI00X,
+  SNDRV_HWDEP_IFACE_FW_TASCAM,
+  SNDRV_HWDEP_IFACE_LINE6,
+  SNDRV_HWDEP_IFACE_FW_MOTU,
+  SNDRV_HWDEP_IFACE_FW_FIREFACE,
+  SNDRV_HWDEP_IFACE_LAST = SNDRV_HWDEP_IFACE_FW_FIREFACE
+};
+struct snd_hwdep_info {
+  unsigned int device;
+  int card;
+  unsigned char id[64];
+  unsigned char name[80];
+  int iface;
+  unsigned char reserved[64];
+};
+struct snd_hwdep_dsp_status {
+  unsigned int version;
+  unsigned char id[32];
+  unsigned int num_dsps;
+  unsigned int dsp_loaded;
+  unsigned int chip_ready;
+  unsigned char reserved[16];
+};
+struct snd_hwdep_dsp_image {
+  unsigned int index;
+  unsigned char name[64];
+  unsigned char __user * image;
+  size_t length;
+  unsigned long driver_data;
+};
+#define SNDRV_HWDEP_IOCTL_PVERSION _IOR('H', 0x00, int)
+#define SNDRV_HWDEP_IOCTL_INFO _IOR('H', 0x01, struct snd_hwdep_info)
+#define SNDRV_HWDEP_IOCTL_DSP_STATUS _IOR('H', 0x02, struct snd_hwdep_dsp_status)
+#define SNDRV_HWDEP_IOCTL_DSP_LOAD _IOW('H', 0x03, struct snd_hwdep_dsp_image)
+#define SNDRV_PCM_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 15)
+typedef unsigned long snd_pcm_uframes_t;
+typedef signed long snd_pcm_sframes_t;
+enum {
+  SNDRV_PCM_CLASS_GENERIC = 0,
+  SNDRV_PCM_CLASS_MULTI,
+  SNDRV_PCM_CLASS_MODEM,
+  SNDRV_PCM_CLASS_DIGITIZER,
+  SNDRV_PCM_CLASS_LAST = SNDRV_PCM_CLASS_DIGITIZER,
+};
+enum {
+  SNDRV_PCM_SUBCLASS_GENERIC_MIX = 0,
+  SNDRV_PCM_SUBCLASS_MULTI_MIX,
+  SNDRV_PCM_SUBCLASS_LAST = SNDRV_PCM_SUBCLASS_MULTI_MIX,
+};
+enum {
+  SNDRV_PCM_STREAM_PLAYBACK = 0,
+  SNDRV_PCM_STREAM_CAPTURE,
+  SNDRV_PCM_STREAM_LAST = SNDRV_PCM_STREAM_CAPTURE,
+};
+typedef int __bitwise snd_pcm_access_t;
+#define SNDRV_PCM_ACCESS_MMAP_INTERLEAVED ((__force snd_pcm_access_t) 0)
+#define SNDRV_PCM_ACCESS_MMAP_NONINTERLEAVED ((__force snd_pcm_access_t) 1)
+#define SNDRV_PCM_ACCESS_MMAP_COMPLEX ((__force snd_pcm_access_t) 2)
+#define SNDRV_PCM_ACCESS_RW_INTERLEAVED ((__force snd_pcm_access_t) 3)
+#define SNDRV_PCM_ACCESS_RW_NONINTERLEAVED ((__force snd_pcm_access_t) 4)
+#define SNDRV_PCM_ACCESS_LAST SNDRV_PCM_ACCESS_RW_NONINTERLEAVED
+typedef int __bitwise snd_pcm_format_t;
+#define SNDRV_PCM_FORMAT_S8 ((__force snd_pcm_format_t) 0)
+#define SNDRV_PCM_FORMAT_U8 ((__force snd_pcm_format_t) 1)
+#define SNDRV_PCM_FORMAT_S16_LE ((__force snd_pcm_format_t) 2)
+#define SNDRV_PCM_FORMAT_S16_BE ((__force snd_pcm_format_t) 3)
+#define SNDRV_PCM_FORMAT_U16_LE ((__force snd_pcm_format_t) 4)
+#define SNDRV_PCM_FORMAT_U16_BE ((__force snd_pcm_format_t) 5)
+#define SNDRV_PCM_FORMAT_S24_LE ((__force snd_pcm_format_t) 6)
+#define SNDRV_PCM_FORMAT_S24_BE ((__force snd_pcm_format_t) 7)
+#define SNDRV_PCM_FORMAT_U24_LE ((__force snd_pcm_format_t) 8)
+#define SNDRV_PCM_FORMAT_U24_BE ((__force snd_pcm_format_t) 9)
+#define SNDRV_PCM_FORMAT_S32_LE ((__force snd_pcm_format_t) 10)
+#define SNDRV_PCM_FORMAT_S32_BE ((__force snd_pcm_format_t) 11)
+#define SNDRV_PCM_FORMAT_U32_LE ((__force snd_pcm_format_t) 12)
+#define SNDRV_PCM_FORMAT_U32_BE ((__force snd_pcm_format_t) 13)
+#define SNDRV_PCM_FORMAT_FLOAT_LE ((__force snd_pcm_format_t) 14)
+#define SNDRV_PCM_FORMAT_FLOAT_BE ((__force snd_pcm_format_t) 15)
+#define SNDRV_PCM_FORMAT_FLOAT64_LE ((__force snd_pcm_format_t) 16)
+#define SNDRV_PCM_FORMAT_FLOAT64_BE ((__force snd_pcm_format_t) 17)
+#define SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE ((__force snd_pcm_format_t) 18)
+#define SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE ((__force snd_pcm_format_t) 19)
+#define SNDRV_PCM_FORMAT_MU_LAW ((__force snd_pcm_format_t) 20)
+#define SNDRV_PCM_FORMAT_A_LAW ((__force snd_pcm_format_t) 21)
+#define SNDRV_PCM_FORMAT_IMA_ADPCM ((__force snd_pcm_format_t) 22)
+#define SNDRV_PCM_FORMAT_MPEG ((__force snd_pcm_format_t) 23)
+#define SNDRV_PCM_FORMAT_GSM ((__force snd_pcm_format_t) 24)
+#define SNDRV_PCM_FORMAT_S20_LE ((__force snd_pcm_format_t) 25)
+#define SNDRV_PCM_FORMAT_S20_BE ((__force snd_pcm_format_t) 26)
+#define SNDRV_PCM_FORMAT_U20_LE ((__force snd_pcm_format_t) 27)
+#define SNDRV_PCM_FORMAT_U20_BE ((__force snd_pcm_format_t) 28)
+#define SNDRV_PCM_FORMAT_SPECIAL ((__force snd_pcm_format_t) 31)
+#define SNDRV_PCM_FORMAT_S24_3LE ((__force snd_pcm_format_t) 32)
+#define SNDRV_PCM_FORMAT_S24_3BE ((__force snd_pcm_format_t) 33)
+#define SNDRV_PCM_FORMAT_U24_3LE ((__force snd_pcm_format_t) 34)
+#define SNDRV_PCM_FORMAT_U24_3BE ((__force snd_pcm_format_t) 35)
+#define SNDRV_PCM_FORMAT_S20_3LE ((__force snd_pcm_format_t) 36)
+#define SNDRV_PCM_FORMAT_S20_3BE ((__force snd_pcm_format_t) 37)
+#define SNDRV_PCM_FORMAT_U20_3LE ((__force snd_pcm_format_t) 38)
+#define SNDRV_PCM_FORMAT_U20_3BE ((__force snd_pcm_format_t) 39)
+#define SNDRV_PCM_FORMAT_S18_3LE ((__force snd_pcm_format_t) 40)
+#define SNDRV_PCM_FORMAT_S18_3BE ((__force snd_pcm_format_t) 41)
+#define SNDRV_PCM_FORMAT_U18_3LE ((__force snd_pcm_format_t) 42)
+#define SNDRV_PCM_FORMAT_U18_3BE ((__force snd_pcm_format_t) 43)
+#define SNDRV_PCM_FORMAT_G723_24 ((__force snd_pcm_format_t) 44)
+#define SNDRV_PCM_FORMAT_G723_24_1B ((__force snd_pcm_format_t) 45)
+#define SNDRV_PCM_FORMAT_G723_40 ((__force snd_pcm_format_t) 46)
+#define SNDRV_PCM_FORMAT_G723_40_1B ((__force snd_pcm_format_t) 47)
+#define SNDRV_PCM_FORMAT_DSD_U8 ((__force snd_pcm_format_t) 48)
+#define SNDRV_PCM_FORMAT_DSD_U16_LE ((__force snd_pcm_format_t) 49)
+#define SNDRV_PCM_FORMAT_DSD_U32_LE ((__force snd_pcm_format_t) 50)
+#define SNDRV_PCM_FORMAT_DSD_U16_BE ((__force snd_pcm_format_t) 51)
+#define SNDRV_PCM_FORMAT_DSD_U32_BE ((__force snd_pcm_format_t) 52)
+#define SNDRV_PCM_FORMAT_LAST SNDRV_PCM_FORMAT_DSD_U32_BE
+#define SNDRV_PCM_FORMAT_FIRST SNDRV_PCM_FORMAT_S8
+#ifdef SNDRV_LITTLE_ENDIAN
+#define SNDRV_PCM_FORMAT_S16 SNDRV_PCM_FORMAT_S16_LE
+#define SNDRV_PCM_FORMAT_U16 SNDRV_PCM_FORMAT_U16_LE
+#define SNDRV_PCM_FORMAT_S24 SNDRV_PCM_FORMAT_S24_LE
+#define SNDRV_PCM_FORMAT_U24 SNDRV_PCM_FORMAT_U24_LE
+#define SNDRV_PCM_FORMAT_S32 SNDRV_PCM_FORMAT_S32_LE
+#define SNDRV_PCM_FORMAT_U32 SNDRV_PCM_FORMAT_U32_LE
+#define SNDRV_PCM_FORMAT_FLOAT SNDRV_PCM_FORMAT_FLOAT_LE
+#define SNDRV_PCM_FORMAT_FLOAT64 SNDRV_PCM_FORMAT_FLOAT64_LE
+#define SNDRV_PCM_FORMAT_IEC958_SUBFRAME SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE
+#define SNDRV_PCM_FORMAT_S20 SNDRV_PCM_FORMAT_S20_LE
+#define SNDRV_PCM_FORMAT_U20 SNDRV_PCM_FORMAT_U20_LE
+#endif
+#ifdef SNDRV_BIG_ENDIAN
+#define SNDRV_PCM_FORMAT_S16 SNDRV_PCM_FORMAT_S16_BE
+#define SNDRV_PCM_FORMAT_U16 SNDRV_PCM_FORMAT_U16_BE
+#define SNDRV_PCM_FORMAT_S24 SNDRV_PCM_FORMAT_S24_BE
+#define SNDRV_PCM_FORMAT_U24 SNDRV_PCM_FORMAT_U24_BE
+#define SNDRV_PCM_FORMAT_S32 SNDRV_PCM_FORMAT_S32_BE
+#define SNDRV_PCM_FORMAT_U32 SNDRV_PCM_FORMAT_U32_BE
+#define SNDRV_PCM_FORMAT_FLOAT SNDRV_PCM_FORMAT_FLOAT_BE
+#define SNDRV_PCM_FORMAT_FLOAT64 SNDRV_PCM_FORMAT_FLOAT64_BE
+#define SNDRV_PCM_FORMAT_IEC958_SUBFRAME SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE
+#define SNDRV_PCM_FORMAT_S20 SNDRV_PCM_FORMAT_S20_BE
+#define SNDRV_PCM_FORMAT_U20 SNDRV_PCM_FORMAT_U20_BE
+#endif
+typedef int __bitwise snd_pcm_subformat_t;
+#define SNDRV_PCM_SUBFORMAT_STD ((__force snd_pcm_subformat_t) 0)
+#define SNDRV_PCM_SUBFORMAT_LAST SNDRV_PCM_SUBFORMAT_STD
+#define SNDRV_PCM_INFO_MMAP 0x00000001
+#define SNDRV_PCM_INFO_MMAP_VALID 0x00000002
+#define SNDRV_PCM_INFO_DOUBLE 0x00000004
+#define SNDRV_PCM_INFO_BATCH 0x00000010
+#define SNDRV_PCM_INFO_SYNC_APPLPTR 0x00000020
+#define SNDRV_PCM_INFO_INTERLEAVED 0x00000100
+#define SNDRV_PCM_INFO_NONINTERLEAVED 0x00000200
+#define SNDRV_PCM_INFO_COMPLEX 0x00000400
+#define SNDRV_PCM_INFO_BLOCK_TRANSFER 0x00010000
+#define SNDRV_PCM_INFO_OVERRANGE 0x00020000
+#define SNDRV_PCM_INFO_RESUME 0x00040000
+#define SNDRV_PCM_INFO_PAUSE 0x00080000
+#define SNDRV_PCM_INFO_HALF_DUPLEX 0x00100000
+#define SNDRV_PCM_INFO_JOINT_DUPLEX 0x00200000
+#define SNDRV_PCM_INFO_SYNC_START 0x00400000
+#define SNDRV_PCM_INFO_NO_PERIOD_WAKEUP 0x00800000
+#define SNDRV_PCM_INFO_HAS_WALL_CLOCK 0x01000000
+#define SNDRV_PCM_INFO_HAS_LINK_ATIME 0x01000000
+#define SNDRV_PCM_INFO_HAS_LINK_ABSOLUTE_ATIME 0x02000000
+#define SNDRV_PCM_INFO_HAS_LINK_ESTIMATED_ATIME 0x04000000
+#define SNDRV_PCM_INFO_HAS_LINK_SYNCHRONIZED_ATIME 0x08000000
+#define SNDRV_PCM_INFO_EXPLICIT_SYNC 0x10000000
+#define SNDRV_PCM_INFO_DRAIN_TRIGGER 0x40000000
+#define SNDRV_PCM_INFO_FIFO_IN_FRAMES 0x80000000
+#if __BITS_PER_LONG == 32 && defined(__USE_TIME_BITS64)
+#define __SND_STRUCT_TIME64
+#endif
+typedef int __bitwise snd_pcm_state_t;
+#define SNDRV_PCM_STATE_OPEN ((__force snd_pcm_state_t) 0)
+#define SNDRV_PCM_STATE_SETUP ((__force snd_pcm_state_t) 1)
+#define SNDRV_PCM_STATE_PREPARED ((__force snd_pcm_state_t) 2)
+#define SNDRV_PCM_STATE_RUNNING ((__force snd_pcm_state_t) 3)
+#define SNDRV_PCM_STATE_XRUN ((__force snd_pcm_state_t) 4)
+#define SNDRV_PCM_STATE_DRAINING ((__force snd_pcm_state_t) 5)
+#define SNDRV_PCM_STATE_PAUSED ((__force snd_pcm_state_t) 6)
+#define SNDRV_PCM_STATE_SUSPENDED ((__force snd_pcm_state_t) 7)
+#define SNDRV_PCM_STATE_DISCONNECTED ((__force snd_pcm_state_t) 8)
+#define SNDRV_PCM_STATE_LAST SNDRV_PCM_STATE_DISCONNECTED
+enum {
+  SNDRV_PCM_MMAP_OFFSET_DATA = 0x00000000,
+  SNDRV_PCM_MMAP_OFFSET_STATUS_OLD = 0x80000000,
+  SNDRV_PCM_MMAP_OFFSET_CONTROL_OLD = 0x81000000,
+  SNDRV_PCM_MMAP_OFFSET_STATUS_NEW = 0x82000000,
+  SNDRV_PCM_MMAP_OFFSET_CONTROL_NEW = 0x83000000,
+#ifdef __SND_STRUCT_TIME64
+  SNDRV_PCM_MMAP_OFFSET_STATUS = SNDRV_PCM_MMAP_OFFSET_STATUS_NEW,
+  SNDRV_PCM_MMAP_OFFSET_CONTROL = SNDRV_PCM_MMAP_OFFSET_CONTROL_NEW,
+#else
+  SNDRV_PCM_MMAP_OFFSET_STATUS = SNDRV_PCM_MMAP_OFFSET_STATUS_OLD,
+  SNDRV_PCM_MMAP_OFFSET_CONTROL = SNDRV_PCM_MMAP_OFFSET_CONTROL_OLD,
+#endif
+};
+union snd_pcm_sync_id {
+  unsigned char id[16];
+  unsigned short id16[8];
+  unsigned int id32[4];
+};
+struct snd_pcm_info {
+  unsigned int device;
+  unsigned int subdevice;
+  int stream;
+  int card;
+  unsigned char id[64];
+  unsigned char name[80];
+  unsigned char subname[32];
+  int dev_class;
+  int dev_subclass;
+  unsigned int subdevices_count;
+  unsigned int subdevices_avail;
+  union snd_pcm_sync_id sync;
+  unsigned char reserved[64];
+};
+typedef int snd_pcm_hw_param_t;
+#define SNDRV_PCM_HW_PARAM_ACCESS 0
+#define SNDRV_PCM_HW_PARAM_FORMAT 1
+#define SNDRV_PCM_HW_PARAM_SUBFORMAT 2
+#define SNDRV_PCM_HW_PARAM_FIRST_MASK SNDRV_PCM_HW_PARAM_ACCESS
+#define SNDRV_PCM_HW_PARAM_LAST_MASK SNDRV_PCM_HW_PARAM_SUBFORMAT
+#define SNDRV_PCM_HW_PARAM_SAMPLE_BITS 8
+#define SNDRV_PCM_HW_PARAM_FRAME_BITS 9
+#define SNDRV_PCM_HW_PARAM_CHANNELS 10
+#define SNDRV_PCM_HW_PARAM_RATE 11
+#define SNDRV_PCM_HW_PARAM_PERIOD_TIME 12
+#define SNDRV_PCM_HW_PARAM_PERIOD_SIZE 13
+#define SNDRV_PCM_HW_PARAM_PERIOD_BYTES 14
+#define SNDRV_PCM_HW_PARAM_PERIODS 15
+#define SNDRV_PCM_HW_PARAM_BUFFER_TIME 16
+#define SNDRV_PCM_HW_PARAM_BUFFER_SIZE 17
+#define SNDRV_PCM_HW_PARAM_BUFFER_BYTES 18
+#define SNDRV_PCM_HW_PARAM_TICK_TIME 19
+#define SNDRV_PCM_HW_PARAM_FIRST_INTERVAL SNDRV_PCM_HW_PARAM_SAMPLE_BITS
+#define SNDRV_PCM_HW_PARAM_LAST_INTERVAL SNDRV_PCM_HW_PARAM_TICK_TIME
+#define SNDRV_PCM_HW_PARAMS_NORESAMPLE (1 << 0)
+#define SNDRV_PCM_HW_PARAMS_EXPORT_BUFFER (1 << 1)
+#define SNDRV_PCM_HW_PARAMS_NO_PERIOD_WAKEUP (1 << 2)
+struct snd_interval {
+  unsigned int min, max;
+  unsigned int openmin : 1, openmax : 1, integer : 1, empty : 1;
+};
+#define SNDRV_MASK_MAX 256
+struct snd_mask {
+  __u32 bits[(SNDRV_MASK_MAX + 31) / 32];
+};
+struct snd_pcm_hw_params {
+  unsigned int flags;
+  struct snd_mask masks[SNDRV_PCM_HW_PARAM_LAST_MASK - SNDRV_PCM_HW_PARAM_FIRST_MASK + 1];
+  struct snd_mask mres[5];
+  struct snd_interval intervals[SNDRV_PCM_HW_PARAM_LAST_INTERVAL - SNDRV_PCM_HW_PARAM_FIRST_INTERVAL + 1];
+  struct snd_interval ires[9];
+  unsigned int rmask;
+  unsigned int cmask;
+  unsigned int info;
+  unsigned int msbits;
+  unsigned int rate_num;
+  unsigned int rate_den;
+  snd_pcm_uframes_t fifo_size;
+  unsigned char reserved[64];
+};
+enum {
+  SNDRV_PCM_TSTAMP_NONE = 0,
+  SNDRV_PCM_TSTAMP_ENABLE,
+  SNDRV_PCM_TSTAMP_LAST = SNDRV_PCM_TSTAMP_ENABLE,
+};
+struct snd_pcm_sw_params {
+  int tstamp_mode;
+  unsigned int period_step;
+  unsigned int sleep_min;
+  snd_pcm_uframes_t avail_min;
+  snd_pcm_uframes_t xfer_align;
+  snd_pcm_uframes_t start_threshold;
+  snd_pcm_uframes_t stop_threshold;
+  snd_pcm_uframes_t silence_threshold;
+  snd_pcm_uframes_t silence_size;
+  snd_pcm_uframes_t boundary;
+  unsigned int proto;
+  unsigned int tstamp_type;
+  unsigned char reserved[56];
+};
+struct snd_pcm_channel_info {
+  unsigned int channel;
+  __kernel_off_t offset;
+  unsigned int first;
+  unsigned int step;
+};
+enum {
+  SNDRV_PCM_AUDIO_TSTAMP_TYPE_COMPAT = 0,
+  SNDRV_PCM_AUDIO_TSTAMP_TYPE_DEFAULT = 1,
+  SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK = 2,
+  SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_ABSOLUTE = 3,
+  SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_ESTIMATED = 4,
+  SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_SYNCHRONIZED = 5,
+  SNDRV_PCM_AUDIO_TSTAMP_TYPE_LAST = SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_SYNCHRONIZED
+};
+typedef struct {
+  unsigned char pad[sizeof(time_t) - sizeof(int)];
+} __time_pad;
+struct snd_pcm_status {
+  snd_pcm_state_t state;
+  __time_pad pad1;
+  struct timespec trigger_tstamp;
+  struct timespec tstamp;
+  snd_pcm_uframes_t appl_ptr;
+  snd_pcm_uframes_t hw_ptr;
+  snd_pcm_sframes_t delay;
+  snd_pcm_uframes_t avail;
+  snd_pcm_uframes_t avail_max;
+  snd_pcm_uframes_t overrange;
+  snd_pcm_state_t suspended_state;
+  __u32 audio_tstamp_data;
+  struct timespec audio_tstamp;
+  struct timespec driver_tstamp;
+  __u32 audio_tstamp_accuracy;
+  unsigned char reserved[52 - 2 * sizeof(struct timespec)];
+};
+#ifdef __SND_STRUCT_TIME64
+#define __snd_pcm_mmap_status64 snd_pcm_mmap_status
+#define __snd_pcm_mmap_control64 snd_pcm_mmap_control
+#define __snd_pcm_sync_ptr64 snd_pcm_sync_ptr
+#define __snd_timespec64 timespec
+struct __snd_timespec {
+  __s32 tv_sec;
+  __s32 tv_nsec;
+};
+#else
+#define __snd_pcm_mmap_status snd_pcm_mmap_status
+#define __snd_pcm_mmap_control snd_pcm_mmap_control
+#define __snd_pcm_sync_ptr snd_pcm_sync_ptr
+#define __snd_timespec timespec
+struct __snd_timespec64 {
+  __s64 tv_sec;
+  __s64 tv_nsec;
+};
+#endif
+struct __snd_pcm_mmap_status {
+  snd_pcm_state_t state;
+  int pad1;
+  snd_pcm_uframes_t hw_ptr;
+  struct __snd_timespec tstamp;
+  snd_pcm_state_t suspended_state;
+  struct __snd_timespec audio_tstamp;
+};
+struct __snd_pcm_mmap_control {
+  snd_pcm_uframes_t appl_ptr;
+  snd_pcm_uframes_t avail_min;
+};
+#define SNDRV_PCM_SYNC_PTR_HWSYNC (1 << 0)
+#define SNDRV_PCM_SYNC_PTR_APPL (1 << 1)
+#define SNDRV_PCM_SYNC_PTR_AVAIL_MIN (1 << 2)
+struct __snd_pcm_sync_ptr {
+  unsigned int flags;
+  union {
+    struct __snd_pcm_mmap_status status;
+    unsigned char reserved[64];
+  } s;
+  union {
+    struct __snd_pcm_mmap_control control;
+    unsigned char reserved[64];
+  } c;
+};
+#if defined(__BYTE_ORDER) ? __BYTE_ORDER == __BIG_ENDIAN : defined(__BIG_ENDIAN)
+typedef char __pad_before_uframe[sizeof(__u64) - sizeof(snd_pcm_uframes_t)];
+typedef char __pad_after_uframe[0];
+#endif
+#if defined(__BYTE_ORDER) ? __BYTE_ORDER == __LITTLE_ENDIAN : defined(__LITTLE_ENDIAN)
+typedef char __pad_before_uframe[0];
+typedef char __pad_after_uframe[sizeof(__u64) - sizeof(snd_pcm_uframes_t)];
+#endif
+struct __snd_pcm_mmap_status64 {
+  snd_pcm_state_t state;
+  __u32 pad1;
+  __pad_before_uframe __pad1;
+  snd_pcm_uframes_t hw_ptr;
+  __pad_after_uframe __pad2;
+  struct __snd_timespec64 tstamp;
+  snd_pcm_state_t suspended_state;
+  __u32 pad3;
+  struct __snd_timespec64 audio_tstamp;
+};
+struct __snd_pcm_mmap_control64 {
+  __pad_before_uframe __pad1;
+  snd_pcm_uframes_t appl_ptr;
+  __pad_before_uframe __pad2;
+  __pad_before_uframe __pad3;
+  snd_pcm_uframes_t avail_min;
+  __pad_after_uframe __pad4;
+};
+struct __snd_pcm_sync_ptr64 {
+  __u32 flags;
+  __u32 pad1;
+  union {
+    struct __snd_pcm_mmap_status64 status;
+    unsigned char reserved[64];
+  } s;
+  union {
+    struct __snd_pcm_mmap_control64 control;
+    unsigned char reserved[64];
+  } c;
+};
+struct snd_xferi {
+  snd_pcm_sframes_t result;
+  void __user * buf;
+  snd_pcm_uframes_t frames;
+};
+struct snd_xfern {
+  snd_pcm_sframes_t result;
+  void __user * __user * bufs;
+  snd_pcm_uframes_t frames;
+};
+enum {
+  SNDRV_PCM_TSTAMP_TYPE_GETTIMEOFDAY = 0,
+  SNDRV_PCM_TSTAMP_TYPE_MONOTONIC,
+  SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW,
+  SNDRV_PCM_TSTAMP_TYPE_LAST = SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW,
+};
+enum {
+  SNDRV_CHMAP_UNKNOWN = 0,
+  SNDRV_CHMAP_NA,
+  SNDRV_CHMAP_MONO,
+  SNDRV_CHMAP_FL,
+  SNDRV_CHMAP_FR,
+  SNDRV_CHMAP_RL,
+  SNDRV_CHMAP_RR,
+  SNDRV_CHMAP_FC,
+  SNDRV_CHMAP_LFE,
+  SNDRV_CHMAP_SL,
+  SNDRV_CHMAP_SR,
+  SNDRV_CHMAP_RC,
+  SNDRV_CHMAP_FLC,
+  SNDRV_CHMAP_FRC,
+  SNDRV_CHMAP_RLC,
+  SNDRV_CHMAP_RRC,
+  SNDRV_CHMAP_FLW,
+  SNDRV_CHMAP_FRW,
+  SNDRV_CHMAP_FLH,
+  SNDRV_CHMAP_FCH,
+  SNDRV_CHMAP_FRH,
+  SNDRV_CHMAP_TC,
+  SNDRV_CHMAP_TFL,
+  SNDRV_CHMAP_TFR,
+  SNDRV_CHMAP_TFC,
+  SNDRV_CHMAP_TRL,
+  SNDRV_CHMAP_TRR,
+  SNDRV_CHMAP_TRC,
+  SNDRV_CHMAP_TFLC,
+  SNDRV_CHMAP_TFRC,
+  SNDRV_CHMAP_TSL,
+  SNDRV_CHMAP_TSR,
+  SNDRV_CHMAP_LLFE,
+  SNDRV_CHMAP_RLFE,
+  SNDRV_CHMAP_BC,
+  SNDRV_CHMAP_BLC,
+  SNDRV_CHMAP_BRC,
+  SNDRV_CHMAP_LAST = SNDRV_CHMAP_BRC,
+};
+#define SNDRV_CHMAP_POSITION_MASK 0xffff
+#define SNDRV_CHMAP_PHASE_INVERSE (0x01 << 16)
+#define SNDRV_CHMAP_DRIVER_SPEC (0x02 << 16)
+#define SNDRV_PCM_IOCTL_PVERSION _IOR('A', 0x00, int)
+#define SNDRV_PCM_IOCTL_INFO _IOR('A', 0x01, struct snd_pcm_info)
+#define SNDRV_PCM_IOCTL_TSTAMP _IOW('A', 0x02, int)
+#define SNDRV_PCM_IOCTL_TTSTAMP _IOW('A', 0x03, int)
+#define SNDRV_PCM_IOCTL_USER_PVERSION _IOW('A', 0x04, int)
+#define SNDRV_PCM_IOCTL_HW_REFINE _IOWR('A', 0x10, struct snd_pcm_hw_params)
+#define SNDRV_PCM_IOCTL_HW_PARAMS _IOWR('A', 0x11, struct snd_pcm_hw_params)
+#define SNDRV_PCM_IOCTL_HW_FREE _IO('A', 0x12)
+#define SNDRV_PCM_IOCTL_SW_PARAMS _IOWR('A', 0x13, struct snd_pcm_sw_params)
+#define SNDRV_PCM_IOCTL_STATUS _IOR('A', 0x20, struct snd_pcm_status)
+#define SNDRV_PCM_IOCTL_DELAY _IOR('A', 0x21, snd_pcm_sframes_t)
+#define SNDRV_PCM_IOCTL_HWSYNC _IO('A', 0x22)
+#define __SNDRV_PCM_IOCTL_SYNC_PTR _IOWR('A', 0x23, struct __snd_pcm_sync_ptr)
+#define __SNDRV_PCM_IOCTL_SYNC_PTR64 _IOWR('A', 0x23, struct __snd_pcm_sync_ptr64)
+#define SNDRV_PCM_IOCTL_SYNC_PTR _IOWR('A', 0x23, struct snd_pcm_sync_ptr)
+#define SNDRV_PCM_IOCTL_STATUS_EXT _IOWR('A', 0x24, struct snd_pcm_status)
+#define SNDRV_PCM_IOCTL_CHANNEL_INFO _IOR('A', 0x32, struct snd_pcm_channel_info)
+#define SNDRV_PCM_IOCTL_PREPARE _IO('A', 0x40)
+#define SNDRV_PCM_IOCTL_RESET _IO('A', 0x41)
+#define SNDRV_PCM_IOCTL_START _IO('A', 0x42)
+#define SNDRV_PCM_IOCTL_DROP _IO('A', 0x43)
+#define SNDRV_PCM_IOCTL_DRAIN _IO('A', 0x44)
+#define SNDRV_PCM_IOCTL_PAUSE _IOW('A', 0x45, int)
+#define SNDRV_PCM_IOCTL_REWIND _IOW('A', 0x46, snd_pcm_uframes_t)
+#define SNDRV_PCM_IOCTL_RESUME _IO('A', 0x47)
+#define SNDRV_PCM_IOCTL_XRUN _IO('A', 0x48)
+#define SNDRV_PCM_IOCTL_FORWARD _IOW('A', 0x49, snd_pcm_uframes_t)
+#define SNDRV_PCM_IOCTL_WRITEI_FRAMES _IOW('A', 0x50, struct snd_xferi)
+#define SNDRV_PCM_IOCTL_READI_FRAMES _IOR('A', 0x51, struct snd_xferi)
+#define SNDRV_PCM_IOCTL_WRITEN_FRAMES _IOW('A', 0x52, struct snd_xfern)
+#define SNDRV_PCM_IOCTL_READN_FRAMES _IOR('A', 0x53, struct snd_xfern)
+#define SNDRV_PCM_IOCTL_LINK _IOW('A', 0x60, int)
+#define SNDRV_PCM_IOCTL_UNLINK _IO('A', 0x61)
+#define SNDRV_RAWMIDI_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 2)
+enum {
+  SNDRV_RAWMIDI_STREAM_OUTPUT = 0,
+  SNDRV_RAWMIDI_STREAM_INPUT,
+  SNDRV_RAWMIDI_STREAM_LAST = SNDRV_RAWMIDI_STREAM_INPUT,
+};
+#define SNDRV_RAWMIDI_INFO_OUTPUT 0x00000001
+#define SNDRV_RAWMIDI_INFO_INPUT 0x00000002
+#define SNDRV_RAWMIDI_INFO_DUPLEX 0x00000004
+struct snd_rawmidi_info {
+  unsigned int device;
+  unsigned int subdevice;
+  int stream;
+  int card;
+  unsigned int flags;
+  unsigned char id[64];
+  unsigned char name[80];
+  unsigned char subname[32];
+  unsigned int subdevices_count;
+  unsigned int subdevices_avail;
+  unsigned char reserved[64];
+};
+#define SNDRV_RAWMIDI_MODE_FRAMING_MASK (7 << 0)
+#define SNDRV_RAWMIDI_MODE_FRAMING_SHIFT 0
+#define SNDRV_RAWMIDI_MODE_FRAMING_NONE (0 << 0)
+#define SNDRV_RAWMIDI_MODE_FRAMING_TSTAMP (1 << 0)
+#define SNDRV_RAWMIDI_MODE_CLOCK_MASK (7 << 3)
+#define SNDRV_RAWMIDI_MODE_CLOCK_SHIFT 3
+#define SNDRV_RAWMIDI_MODE_CLOCK_NONE (0 << 3)
+#define SNDRV_RAWMIDI_MODE_CLOCK_REALTIME (1 << 3)
+#define SNDRV_RAWMIDI_MODE_CLOCK_MONOTONIC (2 << 3)
+#define SNDRV_RAWMIDI_MODE_CLOCK_MONOTONIC_RAW (3 << 3)
+#define SNDRV_RAWMIDI_FRAMING_DATA_LENGTH 16
+struct snd_rawmidi_framing_tstamp {
+  __u8 frame_type;
+  __u8 length;
+  __u8 reserved[2];
+  __u32 tv_nsec;
+  __u64 tv_sec;
+  __u8 data[SNDRV_RAWMIDI_FRAMING_DATA_LENGTH];
+} __packed;
+struct snd_rawmidi_params {
+  int stream;
+  size_t buffer_size;
+  size_t avail_min;
+  unsigned int no_active_sensing : 1;
+  unsigned int mode;
+  unsigned char reserved[12];
+};
+struct snd_rawmidi_status {
+  int stream;
+  __time_pad pad1;
+  struct timespec tstamp;
+  size_t avail;
+  size_t xruns;
+  unsigned char reserved[16];
+};
+#define SNDRV_RAWMIDI_IOCTL_PVERSION _IOR('W', 0x00, int)
+#define SNDRV_RAWMIDI_IOCTL_INFO _IOR('W', 0x01, struct snd_rawmidi_info)
+#define SNDRV_RAWMIDI_IOCTL_USER_PVERSION _IOW('W', 0x02, int)
+#define SNDRV_RAWMIDI_IOCTL_PARAMS _IOWR('W', 0x10, struct snd_rawmidi_params)
+#define SNDRV_RAWMIDI_IOCTL_STATUS _IOWR('W', 0x20, struct snd_rawmidi_status)
+#define SNDRV_RAWMIDI_IOCTL_DROP _IOW('W', 0x30, int)
+#define SNDRV_RAWMIDI_IOCTL_DRAIN _IOW('W', 0x31, int)
+#define SNDRV_TIMER_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 7)
+enum {
+  SNDRV_TIMER_CLASS_NONE = - 1,
+  SNDRV_TIMER_CLASS_SLAVE = 0,
+  SNDRV_TIMER_CLASS_GLOBAL,
+  SNDRV_TIMER_CLASS_CARD,
+  SNDRV_TIMER_CLASS_PCM,
+  SNDRV_TIMER_CLASS_LAST = SNDRV_TIMER_CLASS_PCM,
+};
+enum {
+  SNDRV_TIMER_SCLASS_NONE = 0,
+  SNDRV_TIMER_SCLASS_APPLICATION,
+  SNDRV_TIMER_SCLASS_SEQUENCER,
+  SNDRV_TIMER_SCLASS_OSS_SEQUENCER,
+  SNDRV_TIMER_SCLASS_LAST = SNDRV_TIMER_SCLASS_OSS_SEQUENCER,
+};
+#define SNDRV_TIMER_GLOBAL_SYSTEM 0
+#define SNDRV_TIMER_GLOBAL_RTC 1
+#define SNDRV_TIMER_GLOBAL_HPET 2
+#define SNDRV_TIMER_GLOBAL_HRTIMER 3
+#define SNDRV_TIMER_FLG_SLAVE (1 << 0)
+struct snd_timer_id {
+  int dev_class;
+  int dev_sclass;
+  int card;
+  int device;
+  int subdevice;
+};
+struct snd_timer_ginfo {
+  struct snd_timer_id tid;
+  unsigned int flags;
+  int card;
+  unsigned char id[64];
+  unsigned char name[80];
+  unsigned long reserved0;
+  unsigned long resolution;
+  unsigned long resolution_min;
+  unsigned long resolution_max;
+  unsigned int clients;
+  unsigned char reserved[32];
+};
+struct snd_timer_gparams {
+  struct snd_timer_id tid;
+  unsigned long period_num;
+  unsigned long period_den;
+  unsigned char reserved[32];
+};
+struct snd_timer_gstatus {
+  struct snd_timer_id tid;
+  unsigned long resolution;
+  unsigned long resolution_num;
+  unsigned long resolution_den;
+  unsigned char reserved[32];
+};
+struct snd_timer_select {
+  struct snd_timer_id id;
+  unsigned char reserved[32];
+};
+struct snd_timer_info {
+  unsigned int flags;
+  int card;
+  unsigned char id[64];
+  unsigned char name[80];
+  unsigned long reserved0;
+  unsigned long resolution;
+  unsigned char reserved[64];
+};
+#define SNDRV_TIMER_PSFLG_AUTO (1 << 0)
+#define SNDRV_TIMER_PSFLG_EXCLUSIVE (1 << 1)
+#define SNDRV_TIMER_PSFLG_EARLY_EVENT (1 << 2)
+struct snd_timer_params {
+  unsigned int flags;
+  unsigned int ticks;
+  unsigned int queue_size;
+  unsigned int reserved0;
+  unsigned int filter;
+  unsigned char reserved[60];
+};
+struct snd_timer_status {
+  struct timespec tstamp;
+  unsigned int resolution;
+  unsigned int lost;
+  unsigned int overrun;
+  unsigned int queue;
+  unsigned char reserved[64];
+};
+#define SNDRV_TIMER_IOCTL_PVERSION _IOR('T', 0x00, int)
+#define SNDRV_TIMER_IOCTL_NEXT_DEVICE _IOWR('T', 0x01, struct snd_timer_id)
+#define SNDRV_TIMER_IOCTL_TREAD_OLD _IOW('T', 0x02, int)
+#define SNDRV_TIMER_IOCTL_GINFO _IOWR('T', 0x03, struct snd_timer_ginfo)
+#define SNDRV_TIMER_IOCTL_GPARAMS _IOW('T', 0x04, struct snd_timer_gparams)
+#define SNDRV_TIMER_IOCTL_GSTATUS _IOWR('T', 0x05, struct snd_timer_gstatus)
+#define SNDRV_TIMER_IOCTL_SELECT _IOW('T', 0x10, struct snd_timer_select)
+#define SNDRV_TIMER_IOCTL_INFO _IOR('T', 0x11, struct snd_timer_info)
+#define SNDRV_TIMER_IOCTL_PARAMS _IOW('T', 0x12, struct snd_timer_params)
+#define SNDRV_TIMER_IOCTL_STATUS _IOR('T', 0x14, struct snd_timer_status)
+#define SNDRV_TIMER_IOCTL_START _IO('T', 0xa0)
+#define SNDRV_TIMER_IOCTL_STOP _IO('T', 0xa1)
+#define SNDRV_TIMER_IOCTL_CONTINUE _IO('T', 0xa2)
+#define SNDRV_TIMER_IOCTL_PAUSE _IO('T', 0xa3)
+#define SNDRV_TIMER_IOCTL_TREAD64 _IOW('T', 0xa4, int)
+#if __BITS_PER_LONG == 64
+#define SNDRV_TIMER_IOCTL_TREAD SNDRV_TIMER_IOCTL_TREAD_OLD
+#else
+#define SNDRV_TIMER_IOCTL_TREAD ((sizeof(__kernel_long_t) >= sizeof(time_t)) ? SNDRV_TIMER_IOCTL_TREAD_OLD : SNDRV_TIMER_IOCTL_TREAD64)
+#endif
+struct snd_timer_read {
+  unsigned int resolution;
+  unsigned int ticks;
+};
+enum {
+  SNDRV_TIMER_EVENT_RESOLUTION = 0,
+  SNDRV_TIMER_EVENT_TICK,
+  SNDRV_TIMER_EVENT_START,
+  SNDRV_TIMER_EVENT_STOP,
+  SNDRV_TIMER_EVENT_CONTINUE,
+  SNDRV_TIMER_EVENT_PAUSE,
+  SNDRV_TIMER_EVENT_EARLY,
+  SNDRV_TIMER_EVENT_SUSPEND,
+  SNDRV_TIMER_EVENT_RESUME,
+  SNDRV_TIMER_EVENT_MSTART = SNDRV_TIMER_EVENT_START + 10,
+  SNDRV_TIMER_EVENT_MSTOP = SNDRV_TIMER_EVENT_STOP + 10,
+  SNDRV_TIMER_EVENT_MCONTINUE = SNDRV_TIMER_EVENT_CONTINUE + 10,
+  SNDRV_TIMER_EVENT_MPAUSE = SNDRV_TIMER_EVENT_PAUSE + 10,
+  SNDRV_TIMER_EVENT_MSUSPEND = SNDRV_TIMER_EVENT_SUSPEND + 10,
+  SNDRV_TIMER_EVENT_MRESUME = SNDRV_TIMER_EVENT_RESUME + 10,
+};
+struct snd_timer_tread {
+  int event;
+  __time_pad pad1;
+  struct timespec tstamp;
+  unsigned int val;
+  __time_pad pad2;
+};
+#define SNDRV_CTL_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 8)
+struct snd_ctl_card_info {
+  int card;
+  int pad;
+  unsigned char id[16];
+  unsigned char driver[16];
+  unsigned char name[32];
+  unsigned char longname[80];
+  unsigned char reserved_[16];
+  unsigned char mixername[80];
+  unsigned char components[128];
+};
+typedef int __bitwise snd_ctl_elem_type_t;
+#define SNDRV_CTL_ELEM_TYPE_NONE ((__force snd_ctl_elem_type_t) 0)
+#define SNDRV_CTL_ELEM_TYPE_BOOLEAN ((__force snd_ctl_elem_type_t) 1)
+#define SNDRV_CTL_ELEM_TYPE_INTEGER ((__force snd_ctl_elem_type_t) 2)
+#define SNDRV_CTL_ELEM_TYPE_ENUMERATED ((__force snd_ctl_elem_type_t) 3)
+#define SNDRV_CTL_ELEM_TYPE_BYTES ((__force snd_ctl_elem_type_t) 4)
+#define SNDRV_CTL_ELEM_TYPE_IEC958 ((__force snd_ctl_elem_type_t) 5)
+#define SNDRV_CTL_ELEM_TYPE_INTEGER64 ((__force snd_ctl_elem_type_t) 6)
+#define SNDRV_CTL_ELEM_TYPE_LAST SNDRV_CTL_ELEM_TYPE_INTEGER64
+typedef int __bitwise snd_ctl_elem_iface_t;
+#define SNDRV_CTL_ELEM_IFACE_CARD ((__force snd_ctl_elem_iface_t) 0)
+#define SNDRV_CTL_ELEM_IFACE_HWDEP ((__force snd_ctl_elem_iface_t) 1)
+#define SNDRV_CTL_ELEM_IFACE_MIXER ((__force snd_ctl_elem_iface_t) 2)
+#define SNDRV_CTL_ELEM_IFACE_PCM ((__force snd_ctl_elem_iface_t) 3)
+#define SNDRV_CTL_ELEM_IFACE_RAWMIDI ((__force snd_ctl_elem_iface_t) 4)
+#define SNDRV_CTL_ELEM_IFACE_TIMER ((__force snd_ctl_elem_iface_t) 5)
+#define SNDRV_CTL_ELEM_IFACE_SEQUENCER ((__force snd_ctl_elem_iface_t) 6)
+#define SNDRV_CTL_ELEM_IFACE_LAST SNDRV_CTL_ELEM_IFACE_SEQUENCER
+#define SNDRV_CTL_ELEM_ACCESS_READ (1 << 0)
+#define SNDRV_CTL_ELEM_ACCESS_WRITE (1 << 1)
+#define SNDRV_CTL_ELEM_ACCESS_READWRITE (SNDRV_CTL_ELEM_ACCESS_READ | SNDRV_CTL_ELEM_ACCESS_WRITE)
+#define SNDRV_CTL_ELEM_ACCESS_VOLATILE (1 << 2)
+#define SNDRV_CTL_ELEM_ACCESS_TLV_READ (1 << 4)
+#define SNDRV_CTL_ELEM_ACCESS_TLV_WRITE (1 << 5)
+#define SNDRV_CTL_ELEM_ACCESS_TLV_READWRITE (SNDRV_CTL_ELEM_ACCESS_TLV_READ | SNDRV_CTL_ELEM_ACCESS_TLV_WRITE)
+#define SNDRV_CTL_ELEM_ACCESS_TLV_COMMAND (1 << 6)
+#define SNDRV_CTL_ELEM_ACCESS_INACTIVE (1 << 8)
+#define SNDRV_CTL_ELEM_ACCESS_LOCK (1 << 9)
+#define SNDRV_CTL_ELEM_ACCESS_OWNER (1 << 10)
+#define SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK (1 << 28)
+#define SNDRV_CTL_ELEM_ACCESS_USER (1 << 29)
+#define SNDRV_CTL_POWER_D0 0x0000
+#define SNDRV_CTL_POWER_D1 0x0100
+#define SNDRV_CTL_POWER_D2 0x0200
+#define SNDRV_CTL_POWER_D3 0x0300
+#define SNDRV_CTL_POWER_D3hot (SNDRV_CTL_POWER_D3 | 0x0000)
+#define SNDRV_CTL_POWER_D3cold (SNDRV_CTL_POWER_D3 | 0x0001)
+#define SNDRV_CTL_ELEM_ID_NAME_MAXLEN 44
+struct snd_ctl_elem_id {
+  unsigned int numid;
+  snd_ctl_elem_iface_t iface;
+  unsigned int device;
+  unsigned int subdevice;
+  unsigned char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  unsigned int index;
+};
+struct snd_ctl_elem_list {
+  unsigned int offset;
+  unsigned int space;
+  unsigned int used;
+  unsigned int count;
+  struct snd_ctl_elem_id __user * pids;
+  unsigned char reserved[50];
+};
+struct snd_ctl_elem_info {
+  struct snd_ctl_elem_id id;
+  snd_ctl_elem_type_t type;
+  unsigned int access;
+  unsigned int count;
+  __kernel_pid_t owner;
+  union {
+    struct {
+      long min;
+      long max;
+      long step;
+    } integer;
+    struct {
+      long long min;
+      long long max;
+      long long step;
+    } integer64;
+    struct {
+      unsigned int items;
+      unsigned int item;
+      char name[64];
+      __u64 names_ptr;
+      unsigned int names_length;
+    } enumerated;
+    unsigned char reserved[128];
+  } value;
+  unsigned char reserved[64];
+};
+struct snd_ctl_elem_value {
+  struct snd_ctl_elem_id id;
+  unsigned int indirect : 1;
+  union {
+    union {
+      long value[128];
+      long * value_ptr;
+    } integer;
+    union {
+      long long value[64];
+      long long * value_ptr;
+    } integer64;
+    union {
+      unsigned int item[128];
+      unsigned int * item_ptr;
+    } enumerated;
+    union {
+      unsigned char data[512];
+      unsigned char * data_ptr;
+    } bytes;
+    struct snd_aes_iec958 iec958;
+  } value;
+  unsigned char reserved[128];
+};
+struct snd_ctl_tlv {
+  unsigned int numid;
+  unsigned int length;
+  unsigned int tlv[0];
+};
+#define SNDRV_CTL_IOCTL_PVERSION _IOR('U', 0x00, int)
+#define SNDRV_CTL_IOCTL_CARD_INFO _IOR('U', 0x01, struct snd_ctl_card_info)
+#define SNDRV_CTL_IOCTL_ELEM_LIST _IOWR('U', 0x10, struct snd_ctl_elem_list)
+#define SNDRV_CTL_IOCTL_ELEM_INFO _IOWR('U', 0x11, struct snd_ctl_elem_info)
+#define SNDRV_CTL_IOCTL_ELEM_READ _IOWR('U', 0x12, struct snd_ctl_elem_value)
+#define SNDRV_CTL_IOCTL_ELEM_WRITE _IOWR('U', 0x13, struct snd_ctl_elem_value)
+#define SNDRV_CTL_IOCTL_ELEM_LOCK _IOW('U', 0x14, struct snd_ctl_elem_id)
+#define SNDRV_CTL_IOCTL_ELEM_UNLOCK _IOW('U', 0x15, struct snd_ctl_elem_id)
+#define SNDRV_CTL_IOCTL_SUBSCRIBE_EVENTS _IOWR('U', 0x16, int)
+#define SNDRV_CTL_IOCTL_ELEM_ADD _IOWR('U', 0x17, struct snd_ctl_elem_info)
+#define SNDRV_CTL_IOCTL_ELEM_REPLACE _IOWR('U', 0x18, struct snd_ctl_elem_info)
+#define SNDRV_CTL_IOCTL_ELEM_REMOVE _IOWR('U', 0x19, struct snd_ctl_elem_id)
+#define SNDRV_CTL_IOCTL_TLV_READ _IOWR('U', 0x1a, struct snd_ctl_tlv)
+#define SNDRV_CTL_IOCTL_TLV_WRITE _IOWR('U', 0x1b, struct snd_ctl_tlv)
+#define SNDRV_CTL_IOCTL_TLV_COMMAND _IOWR('U', 0x1c, struct snd_ctl_tlv)
+#define SNDRV_CTL_IOCTL_HWDEP_NEXT_DEVICE _IOWR('U', 0x20, int)
+#define SNDRV_CTL_IOCTL_HWDEP_INFO _IOR('U', 0x21, struct snd_hwdep_info)
+#define SNDRV_CTL_IOCTL_PCM_NEXT_DEVICE _IOR('U', 0x30, int)
+#define SNDRV_CTL_IOCTL_PCM_INFO _IOWR('U', 0x31, struct snd_pcm_info)
+#define SNDRV_CTL_IOCTL_PCM_PREFER_SUBDEVICE _IOW('U', 0x32, int)
+#define SNDRV_CTL_IOCTL_RAWMIDI_NEXT_DEVICE _IOWR('U', 0x40, int)
+#define SNDRV_CTL_IOCTL_RAWMIDI_INFO _IOWR('U', 0x41, struct snd_rawmidi_info)
+#define SNDRV_CTL_IOCTL_RAWMIDI_PREFER_SUBDEVICE _IOW('U', 0x42, int)
+#define SNDRV_CTL_IOCTL_POWER _IOWR('U', 0xd0, int)
+#define SNDRV_CTL_IOCTL_POWER_STATE _IOR('U', 0xd1, int)
+enum sndrv_ctl_event_type {
+  SNDRV_CTL_EVENT_ELEM = 0,
+  SNDRV_CTL_EVENT_LAST = SNDRV_CTL_EVENT_ELEM,
+};
+#define SNDRV_CTL_EVENT_MASK_VALUE (1 << 0)
+#define SNDRV_CTL_EVENT_MASK_INFO (1 << 1)
+#define SNDRV_CTL_EVENT_MASK_ADD (1 << 2)
+#define SNDRV_CTL_EVENT_MASK_TLV (1 << 3)
+#define SNDRV_CTL_EVENT_MASK_REMOVE (~0U)
+struct snd_ctl_event {
+  int type;
+  union {
+    struct {
+      unsigned int mask;
+      struct snd_ctl_elem_id id;
+    } elem;
+    unsigned char data8[60];
+  } data;
+};
+#define SNDRV_CTL_NAME_NONE ""
+#define SNDRV_CTL_NAME_PLAYBACK "Playback "
+#define SNDRV_CTL_NAME_CAPTURE "Capture "
+#define SNDRV_CTL_NAME_IEC958_NONE ""
+#define SNDRV_CTL_NAME_IEC958_SWITCH "Switch"
+#define SNDRV_CTL_NAME_IEC958_VOLUME "Volume"
+#define SNDRV_CTL_NAME_IEC958_DEFAULT "Default"
+#define SNDRV_CTL_NAME_IEC958_MASK "Mask"
+#define SNDRV_CTL_NAME_IEC958_CON_MASK "Con Mask"
+#define SNDRV_CTL_NAME_IEC958_PRO_MASK "Pro Mask"
+#define SNDRV_CTL_NAME_IEC958_PCM_STREAM "PCM Stream"
+#define SNDRV_CTL_NAME_IEC958(expl,direction,what) "IEC958 " expl SNDRV_CTL_NAME_ ##direction SNDRV_CTL_NAME_IEC958_ ##what
+#endif
diff --git a/i686-linux-musl/include/sound/asound_fm.h b/i686-linux-musl/include/sound/asound_fm.h
new file mode 100644
index 0000000..03909ae
--- /dev/null
+++ b/i686-linux-musl/include/sound/asound_fm.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 __SOUND_ASOUND_FM_H
+#define __SOUND_ASOUND_FM_H
+#define SNDRV_DM_FM_MODE_OPL2 0x00
+#define SNDRV_DM_FM_MODE_OPL3 0x01
+struct snd_dm_fm_info {
+  unsigned char fm_mode;
+  unsigned char rhythm;
+};
+struct snd_dm_fm_voice {
+  unsigned char op;
+  unsigned char voice;
+  unsigned char am;
+  unsigned char vibrato;
+  unsigned char do_sustain;
+  unsigned char kbd_scale;
+  unsigned char harmonic;
+  unsigned char scale_level;
+  unsigned char volume;
+  unsigned char attack;
+  unsigned char decay;
+  unsigned char sustain;
+  unsigned char release;
+  unsigned char feedback;
+  unsigned char connection;
+  unsigned char left;
+  unsigned char right;
+  unsigned char waveform;
+};
+struct snd_dm_fm_note {
+  unsigned char voice;
+  unsigned char octave;
+  unsigned int fnum;
+  unsigned char key_on;
+};
+struct snd_dm_fm_params {
+  unsigned char am_depth;
+  unsigned char vib_depth;
+  unsigned char kbd_split;
+  unsigned char rhythm;
+  unsigned char bass;
+  unsigned char snare;
+  unsigned char tomtom;
+  unsigned char cymbal;
+  unsigned char hihat;
+};
+#define SNDRV_DM_FM_IOCTL_INFO _IOR('H', 0x20, struct snd_dm_fm_info)
+#define SNDRV_DM_FM_IOCTL_RESET _IO('H', 0x21)
+#define SNDRV_DM_FM_IOCTL_PLAY_NOTE _IOW('H', 0x22, struct snd_dm_fm_note)
+#define SNDRV_DM_FM_IOCTL_SET_VOICE _IOW('H', 0x23, struct snd_dm_fm_voice)
+#define SNDRV_DM_FM_IOCTL_SET_PARAMS _IOW('H', 0x24, struct snd_dm_fm_params)
+#define SNDRV_DM_FM_IOCTL_SET_MODE _IOW('H', 0x25, int)
+#define SNDRV_DM_FM_IOCTL_SET_CONNECTION _IOW('H', 0x26, int)
+#define SNDRV_DM_FM_IOCTL_CLEAR_PATCHES _IO('H', 0x40)
+#define SNDRV_DM_FM_OSS_IOCTL_RESET 0x20
+#define SNDRV_DM_FM_OSS_IOCTL_PLAY_NOTE 0x21
+#define SNDRV_DM_FM_OSS_IOCTL_SET_VOICE 0x22
+#define SNDRV_DM_FM_OSS_IOCTL_SET_PARAMS 0x23
+#define SNDRV_DM_FM_OSS_IOCTL_SET_MODE 0x24
+#define SNDRV_DM_FM_OSS_IOCTL_SET_OPL 0x25
+#define FM_KEY_SBI "SBI\032"
+#define FM_KEY_2OP "2OP\032"
+#define FM_KEY_4OP "4OP\032"
+struct sbi_patch {
+  unsigned char prog;
+  unsigned char bank;
+  char key[4];
+  char name[25];
+  char extension[7];
+  unsigned char data[32];
+};
+#endif
diff --git a/i686-linux-musl/include/sound/compress_offload.h b/i686-linux-musl/include/sound/compress_offload.h
new file mode 100644
index 0000000..60688bc
--- /dev/null
+++ b/i686-linux-musl/include/sound/compress_offload.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 __COMPRESS_OFFLOAD_H
+#define __COMPRESS_OFFLOAD_H
+#include <linux/types.h>
+#include <sound/asound.h>
+#include <sound/compress_params.h>
+#define SNDRV_COMPRESS_VERSION SNDRV_PROTOCOL_VERSION(0, 2, 0)
+struct snd_compressed_buffer {
+  __u32 fragment_size;
+  __u32 fragments;
+} __attribute__((packed, aligned(4)));
+struct snd_compr_params {
+  struct snd_compressed_buffer buffer;
+  struct snd_codec codec;
+  __u8 no_wake_mode;
+} __attribute__((packed, aligned(4)));
+struct snd_compr_tstamp {
+  __u32 byte_offset;
+  __u32 copied_total;
+  __u32 pcm_frames;
+  __u32 pcm_io_frames;
+  __u32 sampling_rate;
+} __attribute__((packed, aligned(4)));
+struct snd_compr_avail {
+  __u64 avail;
+  struct snd_compr_tstamp tstamp;
+} __attribute__((packed, aligned(4)));
+enum snd_compr_direction {
+  SND_COMPRESS_PLAYBACK = 0,
+  SND_COMPRESS_CAPTURE
+};
+struct snd_compr_caps {
+  __u32 num_codecs;
+  __u32 direction;
+  __u32 min_fragment_size;
+  __u32 max_fragment_size;
+  __u32 min_fragments;
+  __u32 max_fragments;
+  __u32 codecs[MAX_NUM_CODECS];
+  __u32 reserved[11];
+} __attribute__((packed, aligned(4)));
+struct snd_compr_codec_caps {
+  __u32 codec;
+  __u32 num_descriptors;
+  struct snd_codec_desc descriptor[MAX_NUM_CODEC_DESCRIPTORS];
+} __attribute__((packed, aligned(4)));
+enum sndrv_compress_encoder {
+  SNDRV_COMPRESS_ENCODER_PADDING = 1,
+  SNDRV_COMPRESS_ENCODER_DELAY = 2,
+};
+struct snd_compr_metadata {
+  __u32 key;
+  __u32 value[8];
+} __attribute__((packed, aligned(4)));
+#define SNDRV_COMPRESS_IOCTL_VERSION _IOR('C', 0x00, int)
+#define SNDRV_COMPRESS_GET_CAPS _IOWR('C', 0x10, struct snd_compr_caps)
+#define SNDRV_COMPRESS_GET_CODEC_CAPS _IOWR('C', 0x11, struct snd_compr_codec_caps)
+#define SNDRV_COMPRESS_SET_PARAMS _IOW('C', 0x12, struct snd_compr_params)
+#define SNDRV_COMPRESS_GET_PARAMS _IOR('C', 0x13, struct snd_codec)
+#define SNDRV_COMPRESS_SET_METADATA _IOW('C', 0x14, struct snd_compr_metadata)
+#define SNDRV_COMPRESS_GET_METADATA _IOWR('C', 0x15, struct snd_compr_metadata)
+#define SNDRV_COMPRESS_TSTAMP _IOR('C', 0x20, struct snd_compr_tstamp)
+#define SNDRV_COMPRESS_AVAIL _IOR('C', 0x21, struct snd_compr_avail)
+#define SNDRV_COMPRESS_PAUSE _IO('C', 0x30)
+#define SNDRV_COMPRESS_RESUME _IO('C', 0x31)
+#define SNDRV_COMPRESS_START _IO('C', 0x32)
+#define SNDRV_COMPRESS_STOP _IO('C', 0x33)
+#define SNDRV_COMPRESS_DRAIN _IO('C', 0x34)
+#define SNDRV_COMPRESS_NEXT_TRACK _IO('C', 0x35)
+#define SNDRV_COMPRESS_PARTIAL_DRAIN _IO('C', 0x36)
+#define SND_COMPR_TRIGGER_DRAIN 7
+#define SND_COMPR_TRIGGER_NEXT_TRACK 8
+#define SND_COMPR_TRIGGER_PARTIAL_DRAIN 9
+#endif
diff --git a/i686-linux-musl/include/sound/compress_params.h b/i686-linux-musl/include/sound/compress_params.h
new file mode 100644
index 0000000..ee6c000
--- /dev/null
+++ b/i686-linux-musl/include/sound/compress_params.h
@@ -0,0 +1,242 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __SND_COMPRESS_PARAMS_H
+#define __SND_COMPRESS_PARAMS_H
+#include <linux/types.h>
+#define MAX_NUM_CODECS 32
+#define MAX_NUM_CODEC_DESCRIPTORS 32
+#define MAX_NUM_BITRATES 32
+#define MAX_NUM_SAMPLE_RATES 32
+#define SND_AUDIOCODEC_PCM ((__u32) 0x00000001)
+#define SND_AUDIOCODEC_MP3 ((__u32) 0x00000002)
+#define SND_AUDIOCODEC_AMR ((__u32) 0x00000003)
+#define SND_AUDIOCODEC_AMRWB ((__u32) 0x00000004)
+#define SND_AUDIOCODEC_AMRWBPLUS ((__u32) 0x00000005)
+#define SND_AUDIOCODEC_AAC ((__u32) 0x00000006)
+#define SND_AUDIOCODEC_WMA ((__u32) 0x00000007)
+#define SND_AUDIOCODEC_REAL ((__u32) 0x00000008)
+#define SND_AUDIOCODEC_VORBIS ((__u32) 0x00000009)
+#define SND_AUDIOCODEC_FLAC ((__u32) 0x0000000A)
+#define SND_AUDIOCODEC_IEC61937 ((__u32) 0x0000000B)
+#define SND_AUDIOCODEC_G723_1 ((__u32) 0x0000000C)
+#define SND_AUDIOCODEC_G729 ((__u32) 0x0000000D)
+#define SND_AUDIOCODEC_BESPOKE ((__u32) 0x0000000E)
+#define SND_AUDIOCODEC_ALAC ((__u32) 0x0000000F)
+#define SND_AUDIOCODEC_APE ((__u32) 0x00000010)
+#define SND_AUDIOCODEC_MAX SND_AUDIOCODEC_APE
+#define SND_AUDIOPROFILE_PCM ((__u32) 0x00000001)
+#define SND_AUDIOCHANMODE_MP3_MONO ((__u32) 0x00000001)
+#define SND_AUDIOCHANMODE_MP3_STEREO ((__u32) 0x00000002)
+#define SND_AUDIOCHANMODE_MP3_JOINTSTEREO ((__u32) 0x00000004)
+#define SND_AUDIOCHANMODE_MP3_DUAL ((__u32) 0x00000008)
+#define SND_AUDIOPROFILE_AMR ((__u32) 0x00000001)
+#define SND_AUDIOMODE_AMR_DTX_OFF ((__u32) 0x00000001)
+#define SND_AUDIOMODE_AMR_VAD1 ((__u32) 0x00000002)
+#define SND_AUDIOMODE_AMR_VAD2 ((__u32) 0x00000004)
+#define SND_AUDIOSTREAMFORMAT_UNDEFINED ((__u32) 0x00000000)
+#define SND_AUDIOSTREAMFORMAT_CONFORMANCE ((__u32) 0x00000001)
+#define SND_AUDIOSTREAMFORMAT_IF1 ((__u32) 0x00000002)
+#define SND_AUDIOSTREAMFORMAT_IF2 ((__u32) 0x00000004)
+#define SND_AUDIOSTREAMFORMAT_FSF ((__u32) 0x00000008)
+#define SND_AUDIOSTREAMFORMAT_RTPPAYLOAD ((__u32) 0x00000010)
+#define SND_AUDIOSTREAMFORMAT_ITU ((__u32) 0x00000020)
+#define SND_AUDIOPROFILE_AMRWB ((__u32) 0x00000001)
+#define SND_AUDIOMODE_AMRWB_DTX_OFF ((__u32) 0x00000001)
+#define SND_AUDIOMODE_AMRWB_VAD1 ((__u32) 0x00000002)
+#define SND_AUDIOMODE_AMRWB_VAD2 ((__u32) 0x00000004)
+#define SND_AUDIOPROFILE_AMRWBPLUS ((__u32) 0x00000001)
+#define SND_AUDIOPROFILE_AAC ((__u32) 0x00000001)
+#define SND_AUDIOMODE_AAC_MAIN ((__u32) 0x00000001)
+#define SND_AUDIOMODE_AAC_LC ((__u32) 0x00000002)
+#define SND_AUDIOMODE_AAC_SSR ((__u32) 0x00000004)
+#define SND_AUDIOMODE_AAC_LTP ((__u32) 0x00000008)
+#define SND_AUDIOMODE_AAC_HE ((__u32) 0x00000010)
+#define SND_AUDIOMODE_AAC_SCALABLE ((__u32) 0x00000020)
+#define SND_AUDIOMODE_AAC_ERLC ((__u32) 0x00000040)
+#define SND_AUDIOMODE_AAC_LD ((__u32) 0x00000080)
+#define SND_AUDIOMODE_AAC_HE_PS ((__u32) 0x00000100)
+#define SND_AUDIOMODE_AAC_HE_MPS ((__u32) 0x00000200)
+#define SND_AUDIOSTREAMFORMAT_MP2ADTS ((__u32) 0x00000001)
+#define SND_AUDIOSTREAMFORMAT_MP4ADTS ((__u32) 0x00000002)
+#define SND_AUDIOSTREAMFORMAT_MP4LOAS ((__u32) 0x00000004)
+#define SND_AUDIOSTREAMFORMAT_MP4LATM ((__u32) 0x00000008)
+#define SND_AUDIOSTREAMFORMAT_ADIF ((__u32) 0x00000010)
+#define SND_AUDIOSTREAMFORMAT_MP4FF ((__u32) 0x00000020)
+#define SND_AUDIOSTREAMFORMAT_RAW ((__u32) 0x00000040)
+#define SND_AUDIOPROFILE_WMA7 ((__u32) 0x00000001)
+#define SND_AUDIOPROFILE_WMA8 ((__u32) 0x00000002)
+#define SND_AUDIOPROFILE_WMA9 ((__u32) 0x00000004)
+#define SND_AUDIOPROFILE_WMA10 ((__u32) 0x00000008)
+#define SND_AUDIOPROFILE_WMA9_PRO ((__u32) 0x00000010)
+#define SND_AUDIOPROFILE_WMA9_LOSSLESS ((__u32) 0x00000020)
+#define SND_AUDIOPROFILE_WMA10_LOSSLESS ((__u32) 0x00000040)
+#define SND_AUDIOMODE_WMA_LEVEL1 ((__u32) 0x00000001)
+#define SND_AUDIOMODE_WMA_LEVEL2 ((__u32) 0x00000002)
+#define SND_AUDIOMODE_WMA_LEVEL3 ((__u32) 0x00000004)
+#define SND_AUDIOMODE_WMA_LEVEL4 ((__u32) 0x00000008)
+#define SND_AUDIOMODE_WMAPRO_LEVELM0 ((__u32) 0x00000010)
+#define SND_AUDIOMODE_WMAPRO_LEVELM1 ((__u32) 0x00000020)
+#define SND_AUDIOMODE_WMAPRO_LEVELM2 ((__u32) 0x00000040)
+#define SND_AUDIOMODE_WMAPRO_LEVELM3 ((__u32) 0x00000080)
+#define SND_AUDIOSTREAMFORMAT_WMA_ASF ((__u32) 0x00000001)
+#define SND_AUDIOSTREAMFORMAT_WMA_NOASF_HDR ((__u32) 0x00000002)
+#define SND_AUDIOPROFILE_REALAUDIO ((__u32) 0x00000001)
+#define SND_AUDIOMODE_REALAUDIO_G2 ((__u32) 0x00000001)
+#define SND_AUDIOMODE_REALAUDIO_8 ((__u32) 0x00000002)
+#define SND_AUDIOMODE_REALAUDIO_10 ((__u32) 0x00000004)
+#define SND_AUDIOMODE_REALAUDIO_SURROUND ((__u32) 0x00000008)
+#define SND_AUDIOPROFILE_VORBIS ((__u32) 0x00000001)
+#define SND_AUDIOMODE_VORBIS ((__u32) 0x00000001)
+#define SND_AUDIOPROFILE_FLAC ((__u32) 0x00000001)
+#define SND_AUDIOMODE_FLAC_LEVEL0 ((__u32) 0x00000001)
+#define SND_AUDIOMODE_FLAC_LEVEL1 ((__u32) 0x00000002)
+#define SND_AUDIOMODE_FLAC_LEVEL2 ((__u32) 0x00000004)
+#define SND_AUDIOMODE_FLAC_LEVEL3 ((__u32) 0x00000008)
+#define SND_AUDIOMODE_FLAC_LEVEL4 ((__u32) 0x00000010)
+#define SND_AUDIOMODE_FLAC_LEVEL5 ((__u32) 0x00000020)
+#define SND_AUDIOMODE_FLAC_LEVEL6 ((__u32) 0x00000040)
+#define SND_AUDIOMODE_FLAC_LEVEL7 ((__u32) 0x00000080)
+#define SND_AUDIOMODE_FLAC_LEVEL8 ((__u32) 0x00000100)
+#define SND_AUDIOSTREAMFORMAT_FLAC ((__u32) 0x00000001)
+#define SND_AUDIOSTREAMFORMAT_FLAC_OGG ((__u32) 0x00000002)
+#define SND_AUDIOPROFILE_IEC61937 ((__u32) 0x00000001)
+#define SND_AUDIOPROFILE_IEC61937_SPDIF ((__u32) 0x00000002)
+#define SND_AUDIOMODE_IEC_REF_STREAM_HEADER ((__u32) 0x00000000)
+#define SND_AUDIOMODE_IEC_LPCM ((__u32) 0x00000001)
+#define SND_AUDIOMODE_IEC_AC3 ((__u32) 0x00000002)
+#define SND_AUDIOMODE_IEC_MPEG1 ((__u32) 0x00000004)
+#define SND_AUDIOMODE_IEC_MP3 ((__u32) 0x00000008)
+#define SND_AUDIOMODE_IEC_MPEG2 ((__u32) 0x00000010)
+#define SND_AUDIOMODE_IEC_AACLC ((__u32) 0x00000020)
+#define SND_AUDIOMODE_IEC_DTS ((__u32) 0x00000040)
+#define SND_AUDIOMODE_IEC_ATRAC ((__u32) 0x00000080)
+#define SND_AUDIOMODE_IEC_SACD ((__u32) 0x00000100)
+#define SND_AUDIOMODE_IEC_EAC3 ((__u32) 0x00000200)
+#define SND_AUDIOMODE_IEC_DTS_HD ((__u32) 0x00000400)
+#define SND_AUDIOMODE_IEC_MLP ((__u32) 0x00000800)
+#define SND_AUDIOMODE_IEC_DST ((__u32) 0x00001000)
+#define SND_AUDIOMODE_IEC_WMAPRO ((__u32) 0x00002000)
+#define SND_AUDIOMODE_IEC_REF_CXT ((__u32) 0x00004000)
+#define SND_AUDIOMODE_IEC_HE_AAC ((__u32) 0x00008000)
+#define SND_AUDIOMODE_IEC_HE_AAC2 ((__u32) 0x00010000)
+#define SND_AUDIOMODE_IEC_MPEG_SURROUND ((__u32) 0x00020000)
+#define SND_AUDIOPROFILE_G723_1 ((__u32) 0x00000001)
+#define SND_AUDIOMODE_G723_1_ANNEX_A ((__u32) 0x00000001)
+#define SND_AUDIOMODE_G723_1_ANNEX_B ((__u32) 0x00000002)
+#define SND_AUDIOMODE_G723_1_ANNEX_C ((__u32) 0x00000004)
+#define SND_AUDIOPROFILE_G729 ((__u32) 0x00000001)
+#define SND_AUDIOMODE_G729_ANNEX_A ((__u32) 0x00000001)
+#define SND_AUDIOMODE_G729_ANNEX_B ((__u32) 0x00000002)
+#define SND_RATECONTROLMODE_CONSTANTBITRATE ((__u32) 0x00000001)
+#define SND_RATECONTROLMODE_VARIABLEBITRATE ((__u32) 0x00000002)
+struct snd_enc_wma {
+  __u32 super_block_align;
+};
+struct snd_enc_vorbis {
+  __s32 quality;
+  __u32 managed;
+  __u32 max_bit_rate;
+  __u32 min_bit_rate;
+  __u32 downmix;
+} __attribute__((packed, aligned(4)));
+struct snd_enc_real {
+  __u32 quant_bits;
+  __u32 start_region;
+  __u32 num_regions;
+} __attribute__((packed, aligned(4)));
+struct snd_enc_flac {
+  __u32 num;
+  __u32 gain;
+} __attribute__((packed, aligned(4)));
+struct snd_enc_generic {
+  __u32 bw;
+  __s32 reserved[15];
+} __attribute__((packed, aligned(4)));
+struct snd_dec_flac {
+  __u16 sample_size;
+  __u16 min_blk_size;
+  __u16 max_blk_size;
+  __u16 min_frame_size;
+  __u16 max_frame_size;
+  __u16 reserved;
+} __attribute__((packed, aligned(4)));
+struct snd_dec_wma {
+  __u32 encoder_option;
+  __u32 adv_encoder_option;
+  __u32 adv_encoder_option2;
+  __u32 reserved;
+} __attribute__((packed, aligned(4)));
+struct snd_dec_alac {
+  __u32 frame_length;
+  __u8 compatible_version;
+  __u8 pb;
+  __u8 mb;
+  __u8 kb;
+  __u32 max_run;
+  __u32 max_frame_bytes;
+} __attribute__((packed, aligned(4)));
+struct snd_dec_ape {
+  __u16 compatible_version;
+  __u16 compression_level;
+  __u32 format_flags;
+  __u32 blocks_per_frame;
+  __u32 final_frame_blocks;
+  __u32 total_frames;
+  __u32 seek_table_present;
+} __attribute__((packed, aligned(4)));
+union snd_codec_options {
+  struct snd_enc_wma wma;
+  struct snd_enc_vorbis vorbis;
+  struct snd_enc_real real;
+  struct snd_enc_flac flac;
+  struct snd_enc_generic generic;
+  struct snd_dec_flac flac_d;
+  struct snd_dec_wma wma_d;
+  struct snd_dec_alac alac_d;
+  struct snd_dec_ape ape_d;
+} __attribute__((packed, aligned(4)));
+struct snd_codec_desc {
+  __u32 max_ch;
+  __u32 sample_rates[MAX_NUM_SAMPLE_RATES];
+  __u32 num_sample_rates;
+  __u32 bit_rate[MAX_NUM_BITRATES];
+  __u32 num_bitrates;
+  __u32 rate_control;
+  __u32 profiles;
+  __u32 modes;
+  __u32 formats;
+  __u32 min_buffer;
+  __u32 reserved[15];
+} __attribute__((packed, aligned(4)));
+struct snd_codec {
+  __u32 id;
+  __u32 ch_in;
+  __u32 ch_out;
+  __u32 sample_rate;
+  __u32 bit_rate;
+  __u32 rate_control;
+  __u32 profile;
+  __u32 level;
+  __u32 ch_mode;
+  __u32 format;
+  __u32 align;
+  union snd_codec_options options;
+  __u32 reserved[3];
+} __attribute__((packed, aligned(4)));
+#endif
diff --git a/i686-linux-musl/include/sound/emu10k1.h b/i686-linux-musl/include/sound/emu10k1.h
new file mode 100644
index 0000000..483309e
--- /dev/null
+++ b/i686-linux-musl/include/sound/emu10k1.h
@@ -0,0 +1,323 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__SOUND_EMU10K1_H
+#define _UAPI__SOUND_EMU10K1_H
+#ifdef __linux__
+#include <linux/types.h>
+#endif
+#define EMU10K1_CARD_CREATIVE 0x00000000
+#define EMU10K1_CARD_EMUAPS 0x00000001
+#define EMU10K1_FX8010_PCM_COUNT 8
+#define __EMU10K1_DECLARE_BITMAP(name,bits) unsigned long name[(bits) / (sizeof(unsigned long) * 8)]
+#define iMAC0 0x00
+#define iMAC1 0x01
+#define iMAC2 0x02
+#define iMAC3 0x03
+#define iMACINT0 0x04
+#define iMACINT1 0x05
+#define iACC3 0x06
+#define iMACMV 0x07
+#define iANDXOR 0x08
+#define iTSTNEG 0x09
+#define iLIMITGE 0x0a
+#define iLIMITLT 0x0b
+#define iLOG 0x0c
+#define iEXP 0x0d
+#define iINTERP 0x0e
+#define iSKIP 0x0f
+#define FXBUS(x) (0x00 + (x))
+#define EXTIN(x) (0x10 + (x))
+#define EXTOUT(x) (0x20 + (x))
+#define FXBUS2(x) (0x30 + (x))
+#define C_00000000 0x40
+#define C_00000001 0x41
+#define C_00000002 0x42
+#define C_00000003 0x43
+#define C_00000004 0x44
+#define C_00000008 0x45
+#define C_00000010 0x46
+#define C_00000020 0x47
+#define C_00000100 0x48
+#define C_00010000 0x49
+#define C_00080000 0x4a
+#define C_10000000 0x4b
+#define C_20000000 0x4c
+#define C_40000000 0x4d
+#define C_80000000 0x4e
+#define C_7fffffff 0x4f
+#define C_ffffffff 0x50
+#define C_fffffffe 0x51
+#define C_c0000000 0x52
+#define C_4f1bbcdc 0x53
+#define C_5a7ef9db 0x54
+#define C_00100000 0x55
+#define GPR_ACCU 0x56
+#define GPR_COND 0x57
+#define GPR_NOISE0 0x58
+#define GPR_NOISE1 0x59
+#define GPR_IRQ 0x5a
+#define GPR_DBAC 0x5b
+#define GPR(x) (FXGPREGBASE + (x))
+#define ITRAM_DATA(x) (TANKMEMDATAREGBASE + 0x00 + (x))
+#define ETRAM_DATA(x) (TANKMEMDATAREGBASE + 0x80 + (x))
+#define ITRAM_ADDR(x) (TANKMEMADDRREGBASE + 0x00 + (x))
+#define ETRAM_ADDR(x) (TANKMEMADDRREGBASE + 0x80 + (x))
+#define A_ITRAM_DATA(x) (TANKMEMDATAREGBASE + 0x00 + (x))
+#define A_ETRAM_DATA(x) (TANKMEMDATAREGBASE + 0xc0 + (x))
+#define A_ITRAM_ADDR(x) (TANKMEMADDRREGBASE + 0x00 + (x))
+#define A_ETRAM_ADDR(x) (TANKMEMADDRREGBASE + 0xc0 + (x))
+#define A_ITRAM_CTL(x) (A_TANKMEMCTLREGBASE + 0x00 + (x))
+#define A_ETRAM_CTL(x) (A_TANKMEMCTLREGBASE + 0xc0 + (x))
+#define A_FXBUS(x) (0x00 + (x))
+#define A_EXTIN(x) (0x40 + (x))
+#define A_P16VIN(x) (0x50 + (x))
+#define A_EXTOUT(x) (0x60 + (x))
+#define A_FXBUS2(x) (0x80 + (x))
+#define A_EMU32OUTH(x) (0xa0 + (x))
+#define A_EMU32OUTL(x) (0xb0 + (x))
+#define A3_EMU32IN(x) (0x160 + (x))
+#define A3_EMU32OUT(x) (0x1E0 + (x))
+#define A_GPR(x) (A_FXGPREGBASE + (x))
+#define CC_REG_NORMALIZED C_00000001
+#define CC_REG_BORROW C_00000002
+#define CC_REG_MINUS C_00000004
+#define CC_REG_ZERO C_00000008
+#define CC_REG_SATURATE C_00000010
+#define CC_REG_NONZERO C_00000100
+#define FXBUS_PCM_LEFT 0x00
+#define FXBUS_PCM_RIGHT 0x01
+#define FXBUS_PCM_LEFT_REAR 0x02
+#define FXBUS_PCM_RIGHT_REAR 0x03
+#define FXBUS_MIDI_LEFT 0x04
+#define FXBUS_MIDI_RIGHT 0x05
+#define FXBUS_PCM_CENTER 0x06
+#define FXBUS_PCM_LFE 0x07
+#define FXBUS_PCM_LEFT_FRONT 0x08
+#define FXBUS_PCM_RIGHT_FRONT 0x09
+#define FXBUS_MIDI_REVERB 0x0c
+#define FXBUS_MIDI_CHORUS 0x0d
+#define FXBUS_PCM_LEFT_SIDE 0x0e
+#define FXBUS_PCM_RIGHT_SIDE 0x0f
+#define FXBUS_PT_LEFT 0x14
+#define FXBUS_PT_RIGHT 0x15
+#define EXTIN_AC97_L 0x00
+#define EXTIN_AC97_R 0x01
+#define EXTIN_SPDIF_CD_L 0x02
+#define EXTIN_SPDIF_CD_R 0x03
+#define EXTIN_ZOOM_L 0x04
+#define EXTIN_ZOOM_R 0x05
+#define EXTIN_TOSLINK_L 0x06
+#define EXTIN_TOSLINK_R 0x07
+#define EXTIN_LINE1_L 0x08
+#define EXTIN_LINE1_R 0x09
+#define EXTIN_COAX_SPDIF_L 0x0a
+#define EXTIN_COAX_SPDIF_R 0x0b
+#define EXTIN_LINE2_L 0x0c
+#define EXTIN_LINE2_R 0x0d
+#define EXTOUT_AC97_L 0x00
+#define EXTOUT_AC97_R 0x01
+#define EXTOUT_TOSLINK_L 0x02
+#define EXTOUT_TOSLINK_R 0x03
+#define EXTOUT_AC97_CENTER 0x04
+#define EXTOUT_AC97_LFE 0x05
+#define EXTOUT_HEADPHONE_L 0x06
+#define EXTOUT_HEADPHONE_R 0x07
+#define EXTOUT_REAR_L 0x08
+#define EXTOUT_REAR_R 0x09
+#define EXTOUT_ADC_CAP_L 0x0a
+#define EXTOUT_ADC_CAP_R 0x0b
+#define EXTOUT_MIC_CAP 0x0c
+#define EXTOUT_AC97_REAR_L 0x0d
+#define EXTOUT_AC97_REAR_R 0x0e
+#define EXTOUT_ACENTER 0x11
+#define EXTOUT_ALFE 0x12
+#define A_EXTIN_AC97_L 0x00
+#define A_EXTIN_AC97_R 0x01
+#define A_EXTIN_SPDIF_CD_L 0x02
+#define A_EXTIN_SPDIF_CD_R 0x03
+#define A_EXTIN_OPT_SPDIF_L 0x04
+#define A_EXTIN_OPT_SPDIF_R 0x05
+#define A_EXTIN_LINE2_L 0x08
+#define A_EXTIN_LINE2_R 0x09
+#define A_EXTIN_ADC_L 0x0a
+#define A_EXTIN_ADC_R 0x0b
+#define A_EXTIN_AUX2_L 0x0c
+#define A_EXTIN_AUX2_R 0x0d
+#define A_EXTOUT_FRONT_L 0x00
+#define A_EXTOUT_FRONT_R 0x01
+#define A_EXTOUT_CENTER 0x02
+#define A_EXTOUT_LFE 0x03
+#define A_EXTOUT_HEADPHONE_L 0x04
+#define A_EXTOUT_HEADPHONE_R 0x05
+#define A_EXTOUT_REAR_L 0x06
+#define A_EXTOUT_REAR_R 0x07
+#define A_EXTOUT_AFRONT_L 0x08
+#define A_EXTOUT_AFRONT_R 0x09
+#define A_EXTOUT_ACENTER 0x0a
+#define A_EXTOUT_ALFE 0x0b
+#define A_EXTOUT_ASIDE_L 0x0c
+#define A_EXTOUT_ASIDE_R 0x0d
+#define A_EXTOUT_AREAR_L 0x0e
+#define A_EXTOUT_AREAR_R 0x0f
+#define A_EXTOUT_AC97_L 0x10
+#define A_EXTOUT_AC97_R 0x11
+#define A_EXTOUT_ADC_CAP_L 0x16
+#define A_EXTOUT_ADC_CAP_R 0x17
+#define A_EXTOUT_MIC_CAP 0x18
+#define A_C_00000000 0xc0
+#define A_C_00000001 0xc1
+#define A_C_00000002 0xc2
+#define A_C_00000003 0xc3
+#define A_C_00000004 0xc4
+#define A_C_00000008 0xc5
+#define A_C_00000010 0xc6
+#define A_C_00000020 0xc7
+#define A_C_00000100 0xc8
+#define A_C_00010000 0xc9
+#define A_C_00000800 0xca
+#define A_C_10000000 0xcb
+#define A_C_20000000 0xcc
+#define A_C_40000000 0xcd
+#define A_C_80000000 0xce
+#define A_C_7fffffff 0xcf
+#define A_C_ffffffff 0xd0
+#define A_C_fffffffe 0xd1
+#define A_C_c0000000 0xd2
+#define A_C_4f1bbcdc 0xd3
+#define A_C_5a7ef9db 0xd4
+#define A_C_00100000 0xd5
+#define A_GPR_ACCU 0xd6
+#define A_GPR_COND 0xd7
+#define A_GPR_NOISE0 0xd8
+#define A_GPR_NOISE1 0xd9
+#define A_GPR_IRQ 0xda
+#define A_GPR_DBAC 0xdb
+#define A_GPR_DBACE 0xde
+#define EMU10K1_DBG_ZC 0x80000000
+#define EMU10K1_DBG_SATURATION_OCCURED 0x02000000
+#define EMU10K1_DBG_SATURATION_ADDR 0x01ff0000
+#define EMU10K1_DBG_SINGLE_STEP 0x00008000
+#define EMU10K1_DBG_STEP 0x00004000
+#define EMU10K1_DBG_CONDITION_CODE 0x00003e00
+#define EMU10K1_DBG_SINGLE_STEP_ADDR 0x000001ff
+#define TANKMEMADDRREG_ADDR_MASK 0x000fffff
+#define TANKMEMADDRREG_CLEAR 0x00800000
+#define TANKMEMADDRREG_ALIGN 0x00400000
+#define TANKMEMADDRREG_WRITE 0x00200000
+#define TANKMEMADDRREG_READ 0x00100000
+struct snd_emu10k1_fx8010_info {
+  unsigned int internal_tram_size;
+  unsigned int external_tram_size;
+  char fxbus_names[16][32];
+  char extin_names[16][32];
+  char extout_names[32][32];
+  unsigned int gpr_controls;
+};
+#define EMU10K1_GPR_TRANSLATION_NONE 0
+#define EMU10K1_GPR_TRANSLATION_TABLE100 1
+#define EMU10K1_GPR_TRANSLATION_BASS 2
+#define EMU10K1_GPR_TRANSLATION_TREBLE 3
+#define EMU10K1_GPR_TRANSLATION_ONOFF 4
+enum emu10k1_ctl_elem_iface {
+  EMU10K1_CTL_ELEM_IFACE_MIXER = 2,
+  EMU10K1_CTL_ELEM_IFACE_PCM = 3,
+};
+struct emu10k1_ctl_elem_id {
+  unsigned int pad;
+  int iface;
+  unsigned int device;
+  unsigned int subdevice;
+  unsigned char name[44];
+  unsigned int index;
+};
+struct snd_emu10k1_fx8010_control_gpr {
+  struct emu10k1_ctl_elem_id id;
+  unsigned int vcount;
+  unsigned int count;
+  unsigned short gpr[32];
+  unsigned int value[32];
+  unsigned int min;
+  unsigned int max;
+  unsigned int translation;
+  const unsigned int * tlv;
+};
+struct snd_emu10k1_fx8010_control_old_gpr {
+  struct emu10k1_ctl_elem_id id;
+  unsigned int vcount;
+  unsigned int count;
+  unsigned short gpr[32];
+  unsigned int value[32];
+  unsigned int min;
+  unsigned int max;
+  unsigned int translation;
+};
+struct snd_emu10k1_fx8010_code {
+  char name[128];
+  __EMU10K1_DECLARE_BITMAP(gpr_valid, 0x200);
+  __u32 * gpr_map;
+  unsigned int gpr_add_control_count;
+  struct snd_emu10k1_fx8010_control_gpr * gpr_add_controls;
+  unsigned int gpr_del_control_count;
+  struct emu10k1_ctl_elem_id * gpr_del_controls;
+  unsigned int gpr_list_control_count;
+  unsigned int gpr_list_control_total;
+  struct snd_emu10k1_fx8010_control_gpr * gpr_list_controls;
+  __EMU10K1_DECLARE_BITMAP(tram_valid, 0x100);
+  __u32 * tram_data_map;
+  __u32 * tram_addr_map;
+  __EMU10K1_DECLARE_BITMAP(code_valid, 1024);
+  __u32 * code;
+};
+struct snd_emu10k1_fx8010_tram {
+  unsigned int address;
+  unsigned int size;
+  unsigned int * samples;
+};
+struct snd_emu10k1_fx8010_pcm_rec {
+  unsigned int substream;
+  unsigned int res1;
+  unsigned int channels;
+  unsigned int tram_start;
+  unsigned int buffer_size;
+  unsigned short gpr_size;
+  unsigned short gpr_ptr;
+  unsigned short gpr_count;
+  unsigned short gpr_tmpcount;
+  unsigned short gpr_trigger;
+  unsigned short gpr_running;
+  unsigned char pad;
+  unsigned char etram[32];
+  unsigned int res2;
+};
+#define SNDRV_EMU10K1_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 1)
+#define SNDRV_EMU10K1_IOCTL_INFO _IOR('H', 0x10, struct snd_emu10k1_fx8010_info)
+#define SNDRV_EMU10K1_IOCTL_CODE_POKE _IOW('H', 0x11, struct snd_emu10k1_fx8010_code)
+#define SNDRV_EMU10K1_IOCTL_CODE_PEEK _IOWR('H', 0x12, struct snd_emu10k1_fx8010_code)
+#define SNDRV_EMU10K1_IOCTL_TRAM_SETUP _IOW('H', 0x20, int)
+#define SNDRV_EMU10K1_IOCTL_TRAM_POKE _IOW('H', 0x21, struct snd_emu10k1_fx8010_tram)
+#define SNDRV_EMU10K1_IOCTL_TRAM_PEEK _IOWR('H', 0x22, struct snd_emu10k1_fx8010_tram)
+#define SNDRV_EMU10K1_IOCTL_PCM_POKE _IOW('H', 0x30, struct snd_emu10k1_fx8010_pcm_rec)
+#define SNDRV_EMU10K1_IOCTL_PCM_PEEK _IOWR('H', 0x31, struct snd_emu10k1_fx8010_pcm_rec)
+#define SNDRV_EMU10K1_IOCTL_PVERSION _IOR('H', 0x40, int)
+#define SNDRV_EMU10K1_IOCTL_STOP _IO('H', 0x80)
+#define SNDRV_EMU10K1_IOCTL_CONTINUE _IO('H', 0x81)
+#define SNDRV_EMU10K1_IOCTL_ZERO_TRAM_COUNTER _IO('H', 0x82)
+#define SNDRV_EMU10K1_IOCTL_SINGLE_STEP _IOW('H', 0x83, int)
+#define SNDRV_EMU10K1_IOCTL_DBG_READ _IOR('H', 0x84, int)
+#endif
diff --git a/i686-linux-musl/include/sound/firewire.h b/i686-linux-musl/include/sound/firewire.h
new file mode 100644
index 0000000..198a8f4
--- /dev/null
+++ b/i686-linux-musl/include/sound/firewire.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_SOUND_FIREWIRE_H_INCLUDED
+#define _UAPI_SOUND_FIREWIRE_H_INCLUDED
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#define SNDRV_FIREWIRE_EVENT_LOCK_STATUS 0x000010cc
+#define SNDRV_FIREWIRE_EVENT_DICE_NOTIFICATION 0xd1ce004e
+#define SNDRV_FIREWIRE_EVENT_EFW_RESPONSE 0x4e617475
+#define SNDRV_FIREWIRE_EVENT_DIGI00X_MESSAGE 0x746e736c
+#define SNDRV_FIREWIRE_EVENT_MOTU_NOTIFICATION 0x64776479
+#define SNDRV_FIREWIRE_EVENT_TASCAM_CONTROL 0x7473636d
+#define SNDRV_FIREWIRE_EVENT_MOTU_REGISTER_DSP_CHANGE 0x4d545244
+struct snd_firewire_event_common {
+  unsigned int type;
+};
+struct snd_firewire_event_lock_status {
+  unsigned int type;
+  unsigned int status;
+};
+struct snd_firewire_event_dice_notification {
+  unsigned int type;
+  unsigned int notification;
+};
+#define SND_EFW_TRANSACTION_USER_SEQNUM_MAX ((__u32) ((__u16) ~0) - 1)
+struct snd_efw_transaction {
+  __be32 length;
+  __be32 version;
+  __be32 seqnum;
+  __be32 category;
+  __be32 command;
+  __be32 status;
+  __be32 params[0];
+};
+struct snd_firewire_event_efw_response {
+  unsigned int type;
+  __be32 response[0];
+};
+struct snd_firewire_event_digi00x_message {
+  unsigned int type;
+  __u32 message;
+};
+struct snd_firewire_event_motu_notification {
+  unsigned int type;
+  __u32 message;
+};
+struct snd_firewire_tascam_change {
+  unsigned int index;
+  __be32 before;
+  __be32 after;
+};
+struct snd_firewire_event_tascam_control {
+  unsigned int type;
+  struct snd_firewire_tascam_change changes[0];
+};
+struct snd_firewire_event_motu_register_dsp_change {
+  unsigned int type;
+  __u32 count;
+  __u32 changes[];
+};
+union snd_firewire_event {
+  struct snd_firewire_event_common common;
+  struct snd_firewire_event_lock_status lock_status;
+  struct snd_firewire_event_dice_notification dice_notification;
+  struct snd_firewire_event_efw_response efw_response;
+  struct snd_firewire_event_digi00x_message digi00x_message;
+  struct snd_firewire_event_tascam_control tascam_control;
+  struct snd_firewire_event_motu_notification motu_notification;
+  struct snd_firewire_event_motu_register_dsp_change motu_register_dsp_change;
+};
+#define SNDRV_FIREWIRE_IOCTL_GET_INFO _IOR('H', 0xf8, struct snd_firewire_get_info)
+#define SNDRV_FIREWIRE_IOCTL_LOCK _IO('H', 0xf9)
+#define SNDRV_FIREWIRE_IOCTL_UNLOCK _IO('H', 0xfa)
+#define SNDRV_FIREWIRE_IOCTL_TASCAM_STATE _IOR('H', 0xfb, struct snd_firewire_tascam_state)
+#define SNDRV_FIREWIRE_IOCTL_MOTU_REGISTER_DSP_METER _IOR('H', 0xfc, struct snd_firewire_motu_register_dsp_meter)
+#define SNDRV_FIREWIRE_IOCTL_MOTU_COMMAND_DSP_METER _IOR('H', 0xfd, struct snd_firewire_motu_command_dsp_meter)
+#define SNDRV_FIREWIRE_IOCTL_MOTU_REGISTER_DSP_PARAMETER _IOR('H', 0xfe, struct snd_firewire_motu_register_dsp_parameter)
+#define SNDRV_FIREWIRE_TYPE_DICE 1
+#define SNDRV_FIREWIRE_TYPE_FIREWORKS 2
+#define SNDRV_FIREWIRE_TYPE_BEBOB 3
+#define SNDRV_FIREWIRE_TYPE_OXFW 4
+#define SNDRV_FIREWIRE_TYPE_DIGI00X 5
+#define SNDRV_FIREWIRE_TYPE_TASCAM 6
+#define SNDRV_FIREWIRE_TYPE_MOTU 7
+#define SNDRV_FIREWIRE_TYPE_FIREFACE 8
+struct snd_firewire_get_info {
+  unsigned int type;
+  unsigned int card;
+  unsigned char guid[8];
+  char device_name[16];
+};
+#define SNDRV_FIREWIRE_TASCAM_STATE_COUNT 64
+struct snd_firewire_tascam_state {
+  __be32 data[SNDRV_FIREWIRE_TASCAM_STATE_COUNT];
+};
+#define SNDRV_FIREWIRE_MOTU_REGISTER_DSP_METER_INPUT_COUNT 24
+#define SNDRV_FIREWIRE_MOTU_REGISTER_DSP_METER_OUTPUT_COUNT 24
+#define SNDRV_FIREWIRE_MOTU_REGISTER_DSP_METER_COUNT (SNDRV_FIREWIRE_MOTU_REGISTER_DSP_METER_INPUT_COUNT + SNDRV_FIREWIRE_MOTU_REGISTER_DSP_METER_OUTPUT_COUNT)
+struct snd_firewire_motu_register_dsp_meter {
+  __u8 data[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_METER_COUNT];
+};
+#define SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_COUNT 4
+#define SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_SRC_COUNT 20
+#define SNDRV_FIREWIRE_MOTU_REGISTER_DSP_INPUT_COUNT 10
+#define SNDRV_FIREWIRE_MOTU_REGISTER_DSP_ALIGNED_INPUT_COUNT (SNDRV_FIREWIRE_MOTU_REGISTER_DSP_INPUT_COUNT + 2)
+struct snd_firewire_motu_register_dsp_parameter {
+  struct {
+    struct {
+      __u8 gain[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_SRC_COUNT];
+      __u8 pan[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_SRC_COUNT];
+      __u8 flag[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_SRC_COUNT];
+      __u8 paired_balance[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_SRC_COUNT];
+      __u8 paired_width[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_SRC_COUNT];
+    } source[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_COUNT];
+    struct {
+      __u8 paired_volume[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_COUNT];
+      __u8 paired_flag[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_COUNT];
+    } output;
+  } mixer;
+  struct {
+    __u8 main_paired_volume;
+    __u8 hp_paired_volume;
+    __u8 hp_paired_assignment;
+    __u8 reserved[5];
+  } output;
+  struct {
+    __u8 boost_flag;
+    __u8 nominal_level_flag;
+    __u8 reserved[6];
+  } line_input;
+  struct {
+    __u8 gain_and_invert[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_ALIGNED_INPUT_COUNT];
+    __u8 flag[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_ALIGNED_INPUT_COUNT];
+  } input;
+  __u8 reserved[64];
+};
+#define SNDRV_FIREWIRE_MOTU_COMMAND_DSP_METER_COUNT 400
+struct snd_firewire_motu_command_dsp_meter {
+  float data[SNDRV_FIREWIRE_MOTU_COMMAND_DSP_METER_COUNT];
+};
+#endif
diff --git a/i686-linux-musl/include/sound/hdsp.h b/i686-linux-musl/include/sound/hdsp.h
new file mode 100644
index 0000000..2fec371
--- /dev/null
+++ b/i686-linux-musl/include/sound/hdsp.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 __SOUND_HDSP_H
+#define __SOUND_HDSP_H
+#ifdef __linux__
+#include <linux/types.h>
+#endif
+#define HDSP_MATRIX_MIXER_SIZE 2048
+enum HDSP_IO_Type {
+  Digiface,
+  Multiface,
+  H9652,
+  H9632,
+  RPM,
+  Undefined,
+};
+struct hdsp_peak_rms {
+  __u32 input_peaks[26];
+  __u32 playback_peaks[26];
+  __u32 output_peaks[28];
+  __u64 input_rms[26];
+  __u64 playback_rms[26];
+  __u64 output_rms[26];
+};
+#define SNDRV_HDSP_IOCTL_GET_PEAK_RMS _IOR('H', 0x40, struct hdsp_peak_rms)
+struct hdsp_config_info {
+  unsigned char pref_sync_ref;
+  unsigned char wordclock_sync_check;
+  unsigned char spdif_sync_check;
+  unsigned char adatsync_sync_check;
+  unsigned char adat_sync_check[3];
+  unsigned char spdif_in;
+  unsigned char spdif_out;
+  unsigned char spdif_professional;
+  unsigned char spdif_emphasis;
+  unsigned char spdif_nonaudio;
+  unsigned int spdif_sample_rate;
+  unsigned int system_sample_rate;
+  unsigned int autosync_sample_rate;
+  unsigned char system_clock_mode;
+  unsigned char clock_source;
+  unsigned char autosync_ref;
+  unsigned char line_out;
+  unsigned char passthru;
+  unsigned char da_gain;
+  unsigned char ad_gain;
+  unsigned char phone_gain;
+  unsigned char xlr_breakout_cable;
+  unsigned char analog_extension_board;
+};
+#define SNDRV_HDSP_IOCTL_GET_CONFIG_INFO _IOR('H', 0x41, struct hdsp_config_info)
+struct hdsp_firmware {
+  void * firmware_data;
+};
+#define SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE _IOW('H', 0x42, struct hdsp_firmware)
+struct hdsp_version {
+  enum HDSP_IO_Type io_type;
+  unsigned short firmware_rev;
+};
+#define SNDRV_HDSP_IOCTL_GET_VERSION _IOR('H', 0x43, struct hdsp_version)
+struct hdsp_mixer {
+  unsigned short matrix[HDSP_MATRIX_MIXER_SIZE];
+};
+#define SNDRV_HDSP_IOCTL_GET_MIXER _IOR('H', 0x44, struct hdsp_mixer)
+struct hdsp_9632_aeb {
+  int aebi;
+  int aebo;
+};
+#define SNDRV_HDSP_IOCTL_GET_9632_AEB _IOR('H', 0x45, struct hdsp_9632_aeb)
+#endif
diff --git a/i686-linux-musl/include/sound/hdspm.h b/i686-linux-musl/include/sound/hdspm.h
new file mode 100644
index 0000000..bd28e8c
--- /dev/null
+++ b/i686-linux-musl/include/sound/hdspm.h
@@ -0,0 +1,149 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __SOUND_HDSPM_H
+#define __SOUND_HDSPM_H
+#ifdef __linux__
+#include <linux/types.h>
+#endif
+#define HDSPM_MAX_CHANNELS 64
+enum hdspm_io_type {
+  MADI,
+  MADIface,
+  AIO,
+  AES32,
+  RayDAT
+};
+enum hdspm_speed {
+  ss,
+  ds,
+  qs
+};
+struct hdspm_peak_rms {
+  __u32 input_peaks[64];
+  __u32 playback_peaks[64];
+  __u32 output_peaks[64];
+  __u64 input_rms[64];
+  __u64 playback_rms[64];
+  __u64 output_rms[64];
+  __u8 speed;
+  int status2;
+};
+#define SNDRV_HDSPM_IOCTL_GET_PEAK_RMS _IOR('H', 0x42, struct hdspm_peak_rms)
+struct hdspm_config {
+  unsigned char pref_sync_ref;
+  unsigned char wordclock_sync_check;
+  unsigned char madi_sync_check;
+  unsigned int system_sample_rate;
+  unsigned int autosync_sample_rate;
+  unsigned char system_clock_mode;
+  unsigned char clock_source;
+  unsigned char autosync_ref;
+  unsigned char line_out;
+  unsigned int passthru;
+  unsigned int analog_out;
+};
+#define SNDRV_HDSPM_IOCTL_GET_CONFIG _IOR('H', 0x41, struct hdspm_config)
+enum hdspm_ltc_format {
+  format_invalid,
+  fps_24,
+  fps_25,
+  fps_2997,
+  fps_30
+};
+enum hdspm_ltc_frame {
+  frame_invalid,
+  drop_frame,
+  full_frame
+};
+enum hdspm_ltc_input_format {
+  ntsc,
+  pal,
+  no_video
+};
+struct hdspm_ltc {
+  unsigned int ltc;
+  enum hdspm_ltc_format format;
+  enum hdspm_ltc_frame frame;
+  enum hdspm_ltc_input_format input_format;
+};
+#define SNDRV_HDSPM_IOCTL_GET_LTC _IOR('H', 0x46, struct hdspm_ltc)
+enum hdspm_sync {
+  hdspm_sync_no_lock = 0,
+  hdspm_sync_lock = 1,
+  hdspm_sync_sync = 2
+};
+enum hdspm_madi_input {
+  hdspm_input_optical = 0,
+  hdspm_input_coax = 1
+};
+enum hdspm_madi_channel_format {
+  hdspm_format_ch_64 = 0,
+  hdspm_format_ch_56 = 1
+};
+enum hdspm_madi_frame_format {
+  hdspm_frame_48 = 0,
+  hdspm_frame_96 = 1
+};
+enum hdspm_syncsource {
+  syncsource_wc = 0,
+  syncsource_madi = 1,
+  syncsource_tco = 2,
+  syncsource_sync = 3,
+  syncsource_none = 4
+};
+struct hdspm_status {
+  __u8 card_type;
+  enum hdspm_syncsource autosync_source;
+  __u64 card_clock;
+  __u32 master_period;
+  union {
+    struct {
+      __u8 sync_wc;
+      __u8 sync_madi;
+      __u8 sync_tco;
+      __u8 sync_in;
+      __u8 madi_input;
+      __u8 channel_format;
+      __u8 frame_format;
+    } madi;
+  } card_specific;
+};
+#define SNDRV_HDSPM_IOCTL_GET_STATUS _IOR('H', 0x47, struct hdspm_status)
+#define HDSPM_ADDON_TCO 1
+struct hdspm_version {
+  __u8 card_type;
+  char cardname[20];
+  unsigned int serial;
+  unsigned short firmware_rev;
+  int addons;
+};
+#define SNDRV_HDSPM_IOCTL_GET_VERSION _IOR('H', 0x48, struct hdspm_version)
+#define HDSPM_MIXER_CHANNELS HDSPM_MAX_CHANNELS
+struct hdspm_channelfader {
+  unsigned int in[HDSPM_MIXER_CHANNELS];
+  unsigned int pb[HDSPM_MIXER_CHANNELS];
+};
+struct hdspm_mixer {
+  struct hdspm_channelfader ch[HDSPM_MIXER_CHANNELS];
+};
+struct hdspm_mixer_ioctl {
+  struct hdspm_mixer * mixer;
+};
+#define SNDRV_HDSPM_IOCTL_GET_MIXER _IOR('H', 0x44, struct hdspm_mixer_ioctl)
+#endif
diff --git a/i686-linux-musl/include/sound/sb16_csp.h b/i686-linux-musl/include/sound/sb16_csp.h
new file mode 100644
index 0000000..31f7064
--- /dev/null
+++ b/i686-linux-musl/include/sound/sb16_csp.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__SOUND_SB16_CSP_H
+#define _UAPI__SOUND_SB16_CSP_H
+#define SNDRV_SB_CSP_MODE_NONE 0x00
+#define SNDRV_SB_CSP_MODE_DSP_READ 0x01
+#define SNDRV_SB_CSP_MODE_DSP_WRITE 0x02
+#define SNDRV_SB_CSP_MODE_QSOUND 0x04
+#define SNDRV_SB_CSP_LOAD_FROMUSER 0x01
+#define SNDRV_SB_CSP_LOAD_INITBLOCK 0x02
+#define SNDRV_SB_CSP_SAMPLE_8BIT 0x01
+#define SNDRV_SB_CSP_SAMPLE_16BIT 0x02
+#define SNDRV_SB_CSP_MONO 0x01
+#define SNDRV_SB_CSP_STEREO 0x02
+#define SNDRV_SB_CSP_RATE_8000 0x01
+#define SNDRV_SB_CSP_RATE_11025 0x02
+#define SNDRV_SB_CSP_RATE_22050 0x04
+#define SNDRV_SB_CSP_RATE_44100 0x08
+#define SNDRV_SB_CSP_RATE_ALL 0x0f
+#define SNDRV_SB_CSP_ST_IDLE 0x00
+#define SNDRV_SB_CSP_ST_LOADED 0x01
+#define SNDRV_SB_CSP_ST_RUNNING 0x02
+#define SNDRV_SB_CSP_ST_PAUSED 0x04
+#define SNDRV_SB_CSP_ST_AUTO 0x08
+#define SNDRV_SB_CSP_ST_QSOUND 0x10
+#define SNDRV_SB_CSP_QSOUND_MAX_RIGHT 0x20
+#define SNDRV_SB_CSP_MAX_MICROCODE_FILE_SIZE 0x3000
+struct snd_sb_csp_mc_header {
+  char codec_name[16];
+  unsigned short func_req;
+};
+struct snd_sb_csp_microcode {
+  struct snd_sb_csp_mc_header info;
+  unsigned char data[SNDRV_SB_CSP_MAX_MICROCODE_FILE_SIZE];
+};
+struct snd_sb_csp_start {
+  int sample_width;
+  int channels;
+};
+struct snd_sb_csp_info {
+  char codec_name[16];
+  unsigned short func_nr;
+  unsigned int acc_format;
+  unsigned short acc_channels;
+  unsigned short acc_width;
+  unsigned short acc_rates;
+  unsigned short csp_mode;
+  unsigned short run_channels;
+  unsigned short run_width;
+  unsigned short version;
+  unsigned short state;
+};
+#define SNDRV_SB_CSP_IOCTL_INFO _IOR('H', 0x10, struct snd_sb_csp_info)
+#define SNDRV_SB_CSP_IOCTL_LOAD_CODE _IOC(_IOC_WRITE, 'H', 0x11, sizeof(struct snd_sb_csp_microcode))
+#define SNDRV_SB_CSP_IOCTL_UNLOAD_CODE _IO('H', 0x12)
+#define SNDRV_SB_CSP_IOCTL_START _IOW('H', 0x13, struct snd_sb_csp_start)
+#define SNDRV_SB_CSP_IOCTL_STOP _IO('H', 0x14)
+#define SNDRV_SB_CSP_IOCTL_PAUSE _IO('H', 0x15)
+#define SNDRV_SB_CSP_IOCTL_RESTART _IO('H', 0x16)
+#endif
diff --git a/i686-linux-musl/include/sound/sfnt_info.h b/i686-linux-musl/include/sound/sfnt_info.h
new file mode 100644
index 0000000..87e1738
--- /dev/null
+++ b/i686-linux-musl/include/sound/sfnt_info.h
@@ -0,0 +1,149 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __SOUND_SFNT_INFO_H
+#define __SOUND_SFNT_INFO_H
+#include <sound/asound.h>
+#ifdef SNDRV_BIG_ENDIAN
+#define SNDRV_OSS_PATCHKEY(id) (0xfd00 | id)
+#else
+#define SNDRV_OSS_PATCHKEY(id) ((id << 8) | 0xfd)
+#endif
+struct soundfont_patch_info {
+  unsigned short key;
+#define SNDRV_OSS_SOUNDFONT_PATCH SNDRV_OSS_PATCHKEY(0x07)
+  short device_no;
+  unsigned short sf_id;
+  short optarg;
+  int len;
+  short type;
+#define SNDRV_SFNT_LOAD_INFO 0
+#define SNDRV_SFNT_LOAD_DATA 1
+#define SNDRV_SFNT_OPEN_PATCH 2
+#define SNDRV_SFNT_CLOSE_PATCH 3
+#define SNDRV_SFNT_REPLACE_DATA 5
+#define SNDRV_SFNT_MAP_PRESET 6
+#define SNDRV_SFNT_PROBE_DATA 8
+#define SNDRV_SFNT_REMOVE_INFO 9
+  short reserved;
+};
+#define SNDRV_SFNT_PATCH_NAME_LEN 32
+struct soundfont_open_parm {
+  unsigned short type;
+#define SNDRV_SFNT_PAT_TYPE_MISC 0
+#define SNDRV_SFNT_PAT_TYPE_GUS 6
+#define SNDRV_SFNT_PAT_TYPE_MAP 7
+#define SNDRV_SFNT_PAT_LOCKED 0x100
+#define SNDRV_SFNT_PAT_SHARED 0x200
+  short reserved;
+  char name[SNDRV_SFNT_PATCH_NAME_LEN];
+};
+struct soundfont_voice_parm {
+  unsigned short moddelay;
+  unsigned short modatkhld;
+  unsigned short moddcysus;
+  unsigned short modrelease;
+  short modkeyhold, modkeydecay;
+  unsigned short voldelay;
+  unsigned short volatkhld;
+  unsigned short voldcysus;
+  unsigned short volrelease;
+  short volkeyhold, volkeydecay;
+  unsigned short lfo1delay;
+  unsigned short lfo2delay;
+  unsigned short pefe;
+  unsigned short fmmod;
+  unsigned short tremfrq;
+  unsigned short fm2frq2;
+  unsigned char cutoff;
+  unsigned char filterQ;
+  unsigned char chorus;
+  unsigned char reverb;
+  unsigned short reserved[4];
+};
+struct soundfont_voice_info {
+  unsigned short sf_id;
+  unsigned short sample;
+  int start, end;
+  int loopstart, loopend;
+  short rate_offset;
+  unsigned short mode;
+#define SNDRV_SFNT_MODE_ROMSOUND 0x8000
+#define SNDRV_SFNT_MODE_STEREO 1
+#define SNDRV_SFNT_MODE_LOOPING 2
+#define SNDRV_SFNT_MODE_NORELEASE 4
+#define SNDRV_SFNT_MODE_INIT_PARM 8
+  short root;
+  short tune;
+  unsigned char low, high;
+  unsigned char vellow, velhigh;
+  signed char fixkey, fixvel;
+  signed char pan, fixpan;
+  short exclusiveClass;
+  unsigned char amplitude;
+  unsigned char attenuation;
+  short scaleTuning;
+  struct soundfont_voice_parm parm;
+  unsigned short sample_mode;
+};
+struct soundfont_voice_rec_hdr {
+  unsigned char bank;
+  unsigned char instr;
+  char nvoices;
+  char write_mode;
+#define SNDRV_SFNT_WR_APPEND 0
+#define SNDRV_SFNT_WR_EXCLUSIVE 1
+#define SNDRV_SFNT_WR_REPLACE 2
+};
+struct soundfont_sample_info {
+  unsigned short sf_id;
+  unsigned short sample;
+  int start, end;
+  int loopstart, loopend;
+  int size;
+  short dummy;
+  unsigned short mode_flags;
+#define SNDRV_SFNT_SAMPLE_8BITS 1
+#define SNDRV_SFNT_SAMPLE_UNSIGNED 2
+#define SNDRV_SFNT_SAMPLE_NO_BLANK 4
+#define SNDRV_SFNT_SAMPLE_SINGLESHOT 8
+#define SNDRV_SFNT_SAMPLE_BIDIR_LOOP 16
+#define SNDRV_SFNT_SAMPLE_STEREO_LEFT 32
+#define SNDRV_SFNT_SAMPLE_STEREO_RIGHT 64
+#define SNDRV_SFNT_SAMPLE_REVERSE_LOOP 128
+  unsigned int truesize;
+};
+struct soundfont_voice_map {
+  int map_bank, map_instr, map_key;
+  int src_bank, src_instr, src_key;
+};
+#define SNDRV_EMUX_HWDEP_NAME "Emux WaveTable"
+#define SNDRV_EMUX_VERSION ((1 << 16) | (0 << 8) | 0)
+struct snd_emux_misc_mode {
+  int port;
+  int mode;
+  int value;
+  int value2;
+};
+#define SNDRV_EMUX_IOCTL_VERSION _IOR('H', 0x80, unsigned int)
+#define SNDRV_EMUX_IOCTL_LOAD_PATCH _IOWR('H', 0x81, struct soundfont_patch_info)
+#define SNDRV_EMUX_IOCTL_RESET_SAMPLES _IO('H', 0x82)
+#define SNDRV_EMUX_IOCTL_REMOVE_LAST_SAMPLES _IO('H', 0x83)
+#define SNDRV_EMUX_IOCTL_MEM_AVAIL _IOW('H', 0x84, int)
+#define SNDRV_EMUX_IOCTL_MISC_MODE _IOWR('H', 0x84, struct snd_emux_misc_mode)
+#endif
diff --git a/i686-linux-musl/include/sound/skl-tplg-interface.h b/i686-linux-musl/include/sound/skl-tplg-interface.h
new file mode 100644
index 0000000..b516a08
--- /dev/null
+++ b/i686-linux-musl/include/sound/skl-tplg-interface.h
@@ -0,0 +1,185 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __HDA_TPLG_INTERFACE_H__
+#define __HDA_TPLG_INTERFACE_H__
+#include <linux/types.h>
+#define SKL_CONTROL_TYPE_BYTE_TLV 0x100
+#define SKL_CONTROL_TYPE_MIC_SELECT 0x102
+#define SKL_CONTROL_TYPE_MULTI_IO_SELECT 0x103
+#define SKL_CONTROL_TYPE_MULTI_IO_SELECT_DMIC 0x104
+#define HDA_SST_CFG_MAX 900
+#define MAX_IN_QUEUE 8
+#define MAX_OUT_QUEUE 8
+#define SKL_UUID_STR_SZ 40
+enum skl_event_types {
+  SKL_EVENT_NONE = 0,
+  SKL_MIXER_EVENT,
+  SKL_MUX_EVENT,
+  SKL_VMIXER_EVENT,
+  SKL_PGA_EVENT
+};
+enum skl_ch_cfg {
+  SKL_CH_CFG_MONO = 0,
+  SKL_CH_CFG_STEREO = 1,
+  SKL_CH_CFG_2_1 = 2,
+  SKL_CH_CFG_3_0 = 3,
+  SKL_CH_CFG_3_1 = 4,
+  SKL_CH_CFG_QUATRO = 5,
+  SKL_CH_CFG_4_0 = 6,
+  SKL_CH_CFG_5_0 = 7,
+  SKL_CH_CFG_5_1 = 8,
+  SKL_CH_CFG_DUAL_MONO = 9,
+  SKL_CH_CFG_I2S_DUAL_STEREO_0 = 10,
+  SKL_CH_CFG_I2S_DUAL_STEREO_1 = 11,
+  SKL_CH_CFG_4_CHANNEL = 12,
+  SKL_CH_CFG_INVALID
+};
+enum skl_module_type {
+  SKL_MODULE_TYPE_MIXER = 0,
+  SKL_MODULE_TYPE_COPIER,
+  SKL_MODULE_TYPE_UPDWMIX,
+  SKL_MODULE_TYPE_SRCINT,
+  SKL_MODULE_TYPE_ALGO,
+  SKL_MODULE_TYPE_BASE_OUTFMT,
+  SKL_MODULE_TYPE_KPB,
+  SKL_MODULE_TYPE_MIC_SELECT,
+};
+enum skl_core_affinity {
+  SKL_AFFINITY_CORE_0 = 0,
+  SKL_AFFINITY_CORE_1,
+  SKL_AFFINITY_CORE_MAX
+};
+enum skl_pipe_conn_type {
+  SKL_PIPE_CONN_TYPE_NONE = 0,
+  SKL_PIPE_CONN_TYPE_FE,
+  SKL_PIPE_CONN_TYPE_BE
+};
+enum skl_hw_conn_type {
+  SKL_CONN_NONE = 0,
+  SKL_CONN_SOURCE = 1,
+  SKL_CONN_SINK = 2
+};
+enum skl_dev_type {
+  SKL_DEVICE_BT = 0x0,
+  SKL_DEVICE_DMIC = 0x1,
+  SKL_DEVICE_I2S = 0x2,
+  SKL_DEVICE_SLIMBUS = 0x3,
+  SKL_DEVICE_HDALINK = 0x4,
+  SKL_DEVICE_HDAHOST = 0x5,
+  SKL_DEVICE_NONE
+};
+enum skl_interleaving {
+  SKL_INTERLEAVING_PER_CHANNEL = 0,
+  SKL_INTERLEAVING_PER_SAMPLE = 1,
+};
+enum skl_sample_type {
+  SKL_SAMPLE_TYPE_INT_MSB = 0,
+  SKL_SAMPLE_TYPE_INT_LSB = 1,
+  SKL_SAMPLE_TYPE_INT_SIGNED = 2,
+  SKL_SAMPLE_TYPE_INT_UNSIGNED = 3,
+  SKL_SAMPLE_TYPE_FLOAT = 4
+};
+enum module_pin_type {
+  SKL_PIN_TYPE_HOMOGENEOUS,
+  SKL_PIN_TYPE_HETEROGENEOUS,
+};
+enum skl_module_param_type {
+  SKL_PARAM_DEFAULT = 0,
+  SKL_PARAM_INIT,
+  SKL_PARAM_SET,
+  SKL_PARAM_BIND
+};
+struct skl_dfw_algo_data {
+  __u32 set_params : 2;
+  __u32 rsvd : 30;
+  __u32 param_id;
+  __u32 max;
+  char params[0];
+} __packed;
+enum skl_tkn_dir {
+  SKL_DIR_IN,
+  SKL_DIR_OUT
+};
+enum skl_tuple_type {
+  SKL_TYPE_TUPLE,
+  SKL_TYPE_DATA
+};
+struct skl_dfw_v4_module_pin {
+  __u16 module_id;
+  __u16 instance_id;
+} __packed;
+struct skl_dfw_v4_module_fmt {
+  __u32 channels;
+  __u32 freq;
+  __u32 bit_depth;
+  __u32 valid_bit_depth;
+  __u32 ch_cfg;
+  __u32 interleaving_style;
+  __u32 sample_type;
+  __u32 ch_map;
+} __packed;
+struct skl_dfw_v4_module_caps {
+  __u32 set_params : 2;
+  __u32 rsvd : 30;
+  __u32 param_id;
+  __u32 caps_size;
+  __u32 caps[HDA_SST_CFG_MAX];
+} __packed;
+struct skl_dfw_v4_pipe {
+  __u8 pipe_id;
+  __u8 pipe_priority;
+  __u16 conn_type : 4;
+  __u16 rsvd : 4;
+  __u16 memory_pages : 8;
+} __packed;
+struct skl_dfw_v4_module {
+  char uuid[SKL_UUID_STR_SZ];
+  __u16 module_id;
+  __u16 instance_id;
+  __u32 max_mcps;
+  __u32 mem_pages;
+  __u32 obs;
+  __u32 ibs;
+  __u32 vbus_id;
+  __u32 max_in_queue : 8;
+  __u32 max_out_queue : 8;
+  __u32 time_slot : 8;
+  __u32 core_id : 4;
+  __u32 rsvd1 : 4;
+  __u32 module_type : 8;
+  __u32 conn_type : 4;
+  __u32 dev_type : 4;
+  __u32 hw_conn_type : 4;
+  __u32 rsvd2 : 12;
+  __u32 params_fixup : 8;
+  __u32 converter : 8;
+  __u32 input_pin_type : 1;
+  __u32 output_pin_type : 1;
+  __u32 is_dynamic_in_pin : 1;
+  __u32 is_dynamic_out_pin : 1;
+  __u32 is_loadable : 1;
+  __u32 rsvd3 : 11;
+  struct skl_dfw_v4_pipe pipe;
+  struct skl_dfw_v4_module_fmt in_fmt[MAX_IN_QUEUE];
+  struct skl_dfw_v4_module_fmt out_fmt[MAX_OUT_QUEUE];
+  struct skl_dfw_v4_module_pin in_pin[MAX_IN_QUEUE];
+  struct skl_dfw_v4_module_pin out_pin[MAX_OUT_QUEUE];
+  struct skl_dfw_v4_module_caps caps;
+} __packed;
+#endif
diff --git a/i686-linux-musl/include/sound/snd_ar_tokens.h b/i686-linux-musl/include/sound/snd_ar_tokens.h
new file mode 100644
index 0000000..39c0684
--- /dev/null
+++ b/i686-linux-musl/include/sound/snd_ar_tokens.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 __SND_AR_TOKENS_H__
+#define __SND_AR_TOKENS_H__
+#define APM_SUB_GRAPH_PERF_MODE_LOW_POWER 0x1
+#define APM_SUB_GRAPH_PERF_MODE_LOW_LATENCY 0x2
+#define APM_SUB_GRAPH_DIRECTION_TX 0x1
+#define APM_SUB_GRAPH_DIRECTION_RX 0x2
+#define APM_SUB_GRAPH_SID_AUDIO_PLAYBACK 0x1
+#define APM_SUB_GRAPH_SID_AUDIO_RECORD 0x2
+#define APM_SUB_GRAPH_SID_VOICE_CALL 0x3
+#define APM_CONTAINER_CAP_ID_PP 0x1
+#define APM_CONTAINER_CAP_ID_CD 0x2
+#define APM_CONTAINER_CAP_ID_EP 0x3
+#define APM_CONTAINER_CAP_ID_OLC 0x4
+#define APM_CONT_GRAPH_POS_STREAM 0x1
+#define APM_CONT_GRAPH_POS_PER_STR_PER_DEV 0x2
+#define APM_CONT_GRAPH_POS_STR_DEV 0x3
+#define APM_CONT_GRAPH_POS_GLOBAL_DEV 0x4
+#define APM_PROC_DOMAIN_ID_MDSP 0x1
+#define APM_PROC_DOMAIN_ID_ADSP 0x2
+#define APM_PROC_DOMAIN_ID_SDSP 0x4
+#define APM_PROC_DOMAIN_ID_CDSP 0x5
+#define PCM_INTERLEAVED 1
+#define PCM_DEINTERLEAVED_PACKED 2
+#define PCM_DEINTERLEAVED_UNPACKED 3
+#define AR_I2S_WS_SRC_EXTERNAL 0
+#define AR_I2S_WS_SRC_INTERNAL 1
+enum ar_event_types {
+  AR_EVENT_NONE = 0,
+  AR_PGA_DAPM_EVENT
+};
+#define SND_SOC_AR_TPLG_FE_BE_GRAPH_CTL_MIX 256
+#define SND_SOC_AR_TPLG_VOL_CTL 257
+#define AR_TKN_DAI_INDEX 1
+#define AR_TKN_U32_SUB_GRAPH_INSTANCE_ID 2
+#define AR_TKN_U32_SUB_GRAPH_PERF_MODE 3
+#define AR_TKN_U32_SUB_GRAPH_DIRECTION 4
+#define AR_TKN_U32_SUB_GRAPH_SCENARIO_ID 5
+#define AR_TKN_U32_CONTAINER_INSTANCE_ID 100
+#define AR_TKN_U32_CONTAINER_CAPABILITY_ID 101
+#define AR_TKN_U32_CONTAINER_STACK_SIZE 102
+#define AR_TKN_U32_CONTAINER_GRAPH_POS 103
+#define AR_TKN_U32_CONTAINER_PROC_DOMAIN 104
+#define AR_TKN_U32_MODULE_ID 200
+#define AR_TKN_U32_MODULE_INSTANCE_ID 201
+#define AR_TKN_U32_MODULE_MAX_IP_PORTS 202
+#define AR_TKN_U32_MODULE_MAX_OP_PORTS 203
+#define AR_TKN_U32_MODULE_IN_PORTS 204
+#define AR_TKN_U32_MODULE_OUT_PORTS 205
+#define AR_TKN_U32_MODULE_SRC_OP_PORT_ID 206
+#define AR_TKN_U32_MODULE_DST_IN_PORT_ID 207
+#define AR_TKN_U32_MODULE_SRC_INSTANCE_ID 208
+#define AR_TKN_U32_MODULE_DST_INSTANCE_ID 209
+#define AR_TKN_U32_MODULE_HW_IF_IDX 250
+#define AR_TKN_U32_MODULE_HW_IF_TYPE 251
+#define AR_TKN_U32_MODULE_FMT_INTERLEAVE 252
+#define AR_TKN_U32_MODULE_FMT_DATA 253
+#define AR_TKN_U32_MODULE_FMT_SAMPLE_RATE 254
+#define AR_TKN_U32_MODULE_FMT_BIT_DEPTH 255
+#define AR_TKN_U32_MODULE_SD_LINE_IDX 256
+#define AR_TKN_U32_MODULE_WS_SRC 257
+#define AR_TKN_U32_MODULE_FRAME_SZ_FACTOR 258
+#define AR_TKN_U32_MODULE_LOG_CODE 259
+#define AR_TKN_U32_MODULE_LOG_TAP_POINT_ID 260
+#define AR_TKN_U32_MODULE_LOG_MODE 261
+#endif
diff --git a/i686-linux-musl/include/sound/snd_sst_tokens.h b/i686-linux-musl/include/sound/snd_sst_tokens.h
new file mode 100644
index 0000000..bf012fa
--- /dev/null
+++ b/i686-linux-musl/include/sound/snd_sst_tokens.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 __SND_SST_TOKENS_H__
+#define __SND_SST_TOKENS_H__
+enum SKL_TKNS {
+  SKL_TKN_UUID = 1,
+  SKL_TKN_U8_NUM_BLOCKS,
+  SKL_TKN_U8_BLOCK_TYPE,
+  SKL_TKN_U8_IN_PIN_TYPE,
+  SKL_TKN_U8_OUT_PIN_TYPE,
+  SKL_TKN_U8_DYN_IN_PIN,
+  SKL_TKN_U8_DYN_OUT_PIN,
+  SKL_TKN_U8_IN_QUEUE_COUNT,
+  SKL_TKN_U8_OUT_QUEUE_COUNT,
+  SKL_TKN_U8_TIME_SLOT,
+  SKL_TKN_U8_CORE_ID,
+  SKL_TKN_U8_MOD_TYPE,
+  SKL_TKN_U8_CONN_TYPE,
+  SKL_TKN_U8_DEV_TYPE,
+  SKL_TKN_U8_HW_CONN_TYPE,
+  SKL_TKN_U16_MOD_INST_ID,
+  SKL_TKN_U16_BLOCK_SIZE,
+  SKL_TKN_U32_MAX_MCPS,
+  SKL_TKN_U32_MEM_PAGES,
+  SKL_TKN_U32_OBS,
+  SKL_TKN_U32_IBS,
+  SKL_TKN_U32_VBUS_ID,
+  SKL_TKN_U32_PARAMS_FIXUP,
+  SKL_TKN_U32_CONVERTER,
+  SKL_TKN_U32_PIPE_ID,
+  SKL_TKN_U32_PIPE_CONN_TYPE,
+  SKL_TKN_U32_PIPE_PRIORITY,
+  SKL_TKN_U32_PIPE_MEM_PGS,
+  SKL_TKN_U32_DIR_PIN_COUNT,
+  SKL_TKN_U32_FMT_CH,
+  SKL_TKN_U32_FMT_FREQ,
+  SKL_TKN_U32_FMT_BIT_DEPTH,
+  SKL_TKN_U32_FMT_SAMPLE_SIZE,
+  SKL_TKN_U32_FMT_CH_CONFIG,
+  SKL_TKN_U32_FMT_INTERLEAVE,
+  SKL_TKN_U32_FMT_SAMPLE_TYPE,
+  SKL_TKN_U32_FMT_CH_MAP,
+  SKL_TKN_U32_PIN_MOD_ID,
+  SKL_TKN_U32_PIN_INST_ID,
+  SKL_TKN_U32_MOD_SET_PARAMS,
+  SKL_TKN_U32_MOD_PARAM_ID,
+  SKL_TKN_U32_CAPS_SET_PARAMS,
+  SKL_TKN_U32_CAPS_PARAMS_ID,
+  SKL_TKN_U32_CAPS_SIZE,
+  SKL_TKN_U32_PROC_DOMAIN,
+  SKL_TKN_U32_LIB_COUNT,
+  SKL_TKN_STR_LIB_NAME,
+  SKL_TKN_U32_PMODE,
+  SKL_TKL_U32_D0I3_CAPS,
+  SKL_TKN_U32_D0I3_CAPS = SKL_TKL_U32_D0I3_CAPS,
+  SKL_TKN_U32_DMA_BUF_SIZE,
+  SKL_TKN_U32_PIPE_DIRECTION,
+  SKL_TKN_U32_PIPE_CONFIG_ID,
+  SKL_TKN_U32_NUM_CONFIGS,
+  SKL_TKN_U32_PATH_MEM_PGS,
+  SKL_TKN_U32_CFG_FREQ,
+  SKL_TKN_U8_CFG_CHAN,
+  SKL_TKN_U8_CFG_BPS,
+  SKL_TKN_CFG_MOD_RES_ID,
+  SKL_TKN_CFG_MOD_FMT_ID,
+  SKL_TKN_U8_NUM_MOD,
+  SKL_TKN_MM_U8_MOD_IDX,
+  SKL_TKN_MM_U8_NUM_RES,
+  SKL_TKN_MM_U8_NUM_INTF,
+  SKL_TKN_MM_U32_RES_ID,
+  SKL_TKN_MM_U32_CPS,
+  SKL_TKN_MM_U32_DMA_SIZE,
+  SKL_TKN_MM_U32_CPC,
+  SKL_TKN_MM_U32_RES_PIN_ID,
+  SKL_TKN_MM_U32_INTF_PIN_ID,
+  SKL_TKN_MM_U32_PIN_BUF,
+  SKL_TKN_MM_U32_FMT_ID,
+  SKL_TKN_MM_U32_NUM_IN_FMT,
+  SKL_TKN_MM_U32_NUM_OUT_FMT,
+  SKL_TKN_U32_ASTATE_IDX,
+  SKL_TKN_U32_ASTATE_COUNT,
+  SKL_TKN_U32_ASTATE_KCPS,
+  SKL_TKN_U32_ASTATE_CLK_SRC,
+  SKL_TKN_U32_FMT_CFG_IDX = 96,
+  SKL_TKN_MAX = SKL_TKN_U32_FMT_CFG_IDX,
+};
+#endif
diff --git a/i686-linux-musl/include/sound/sof/abi.h b/i686-linux-musl/include/sound/sof/abi.h
new file mode 100644
index 0000000..3af3c9d
--- /dev/null
+++ b/i686-linux-musl/include/sound/sof/abi.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 __INCLUDE_UAPI_SOUND_SOF_ABI_H__
+#define __INCLUDE_UAPI_SOUND_SOF_ABI_H__
+#define SOF_ABI_MAJOR 3
+#define SOF_ABI_MINOR 18
+#define SOF_ABI_PATCH 0
+#define SOF_ABI_MAJOR_SHIFT 24
+#define SOF_ABI_MAJOR_MASK 0xff
+#define SOF_ABI_MINOR_SHIFT 12
+#define SOF_ABI_MINOR_MASK 0xfff
+#define SOF_ABI_PATCH_SHIFT 0
+#define SOF_ABI_PATCH_MASK 0xfff
+#define SOF_ABI_VER(major,minor,patch) (((major) << SOF_ABI_MAJOR_SHIFT) | ((minor) << SOF_ABI_MINOR_SHIFT) | ((patch) << SOF_ABI_PATCH_SHIFT))
+#define SOF_ABI_VERSION_MAJOR(version) (((version) >> SOF_ABI_MAJOR_SHIFT) & SOF_ABI_MAJOR_MASK)
+#define SOF_ABI_VERSION_MINOR(version) (((version) >> SOF_ABI_MINOR_SHIFT) & SOF_ABI_MINOR_MASK)
+#define SOF_ABI_VERSION_PATCH(version) (((version) >> SOF_ABI_PATCH_SHIFT) & SOF_ABI_PATCH_MASK)
+#define SOF_ABI_VERSION_INCOMPATIBLE(sof_ver,client_ver) (SOF_ABI_VERSION_MAJOR((sof_ver)) != SOF_ABI_VERSION_MAJOR((client_ver)))
+#define SOF_ABI_VERSION SOF_ABI_VER(SOF_ABI_MAJOR, SOF_ABI_MINOR, SOF_ABI_PATCH)
+#define SOF_ABI_MAGIC 0x00464F53
+#endif
diff --git a/i686-linux-musl/include/sound/sof/fw.h b/i686-linux-musl/include/sound/sof/fw.h
new file mode 100644
index 0000000..c36c2b9
--- /dev/null
+++ b/i686-linux-musl/include/sound/sof/fw.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 __INCLUDE_UAPI_SOF_FW_H__
+#define __INCLUDE_UAPI_SOF_FW_H__
+#include <linux/types.h>
+#define SND_SOF_FW_SIG_SIZE 4
+#define SND_SOF_FW_ABI 1
+#define SND_SOF_FW_SIG "Reef"
+enum snd_sof_fw_blk_type {
+  SOF_FW_BLK_TYPE_INVALID = - 1,
+  SOF_FW_BLK_TYPE_START = 0,
+  SOF_FW_BLK_TYPE_RSRVD0 = SOF_FW_BLK_TYPE_START,
+  SOF_FW_BLK_TYPE_IRAM = 1,
+  SOF_FW_BLK_TYPE_DRAM = 2,
+  SOF_FW_BLK_TYPE_SRAM = 3,
+  SOF_FW_BLK_TYPE_ROM = 4,
+  SOF_FW_BLK_TYPE_IMR = 5,
+  SOF_FW_BLK_TYPE_RSRVD6 = 6,
+  SOF_FW_BLK_TYPE_RSRVD7 = 7,
+  SOF_FW_BLK_TYPE_RSRVD8 = 8,
+  SOF_FW_BLK_TYPE_RSRVD9 = 9,
+  SOF_FW_BLK_TYPE_RSRVD10 = 10,
+  SOF_FW_BLK_TYPE_RSRVD11 = 11,
+  SOF_FW_BLK_TYPE_RSRVD12 = 12,
+  SOF_FW_BLK_TYPE_RSRVD13 = 13,
+  SOF_FW_BLK_TYPE_RSRVD14 = 14,
+  SOF_FW_BLK_TYPE_NUM
+};
+struct snd_sof_blk_hdr {
+  enum snd_sof_fw_blk_type type;
+  __u32 size;
+  __u32 offset;
+} __packed;
+enum snd_sof_fw_mod_type {
+  SOF_FW_BASE = 0,
+  SOF_FW_MODULE = 1,
+};
+struct snd_sof_mod_hdr {
+  enum snd_sof_fw_mod_type type;
+  __u32 size;
+  __u32 num_blocks;
+} __packed;
+struct snd_sof_fw_header {
+  unsigned char sig[SND_SOF_FW_SIG_SIZE];
+  __u32 file_size;
+  __u32 num_modules;
+  __u32 abi;
+} __packed;
+#endif
diff --git a/i686-linux-musl/include/sound/sof/header.h b/i686-linux-musl/include/sound/sof/header.h
new file mode 100644
index 0000000..3fbd4a4
--- /dev/null
+++ b/i686-linux-musl/include/sound/sof/header.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 __INCLUDE_UAPI_SOUND_SOF_USER_HEADER_H__
+#define __INCLUDE_UAPI_SOUND_SOF_USER_HEADER_H__
+#include <linux/types.h>
+struct sof_abi_hdr {
+  __u32 magic;
+  __u32 type;
+  __u32 size;
+  __u32 abi;
+  __u32 reserved[4];
+  __u32 data[0];
+} __packed;
+#endif
diff --git a/i686-linux-musl/include/sound/sof/tokens.h b/i686-linux-musl/include/sound/sof/tokens.h
new file mode 100644
index 0000000..4499cd3
--- /dev/null
+++ b/i686-linux-musl/include/sound/sof/tokens.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 __INCLUDE_UAPI_SOF_TOPOLOGY_H__
+#define __INCLUDE_UAPI_SOF_TOPOLOGY_H__
+#define SOF_TPLG_KCTL_VOL_ID 256
+#define SOF_TPLG_KCTL_ENUM_ID 257
+#define SOF_TPLG_KCTL_BYTES_ID 258
+#define SOF_TPLG_KCTL_SWITCH_ID 259
+#define SOF_TPLG_KCTL_BYTES_VOLATILE_RO 260
+#define SOF_TPLG_KCTL_BYTES_VOLATILE_RW 261
+#define SOF_TPLG_KCTL_BYTES_WO_ID 262
+#define SOF_TKN_BUF_SIZE 100
+#define SOF_TKN_BUF_CAPS 101
+#define SOF_TKN_DAI_TYPE 154
+#define SOF_TKN_DAI_INDEX 155
+#define SOF_TKN_DAI_DIRECTION 156
+#define SOF_TKN_SCHED_PERIOD 200
+#define SOF_TKN_SCHED_PRIORITY 201
+#define SOF_TKN_SCHED_MIPS 202
+#define SOF_TKN_SCHED_CORE 203
+#define SOF_TKN_SCHED_FRAMES 204
+#define SOF_TKN_SCHED_TIME_DOMAIN 205
+#define SOF_TKN_SCHED_DYNAMIC_PIPELINE 206
+#define SOF_TKN_VOLUME_RAMP_STEP_TYPE 250
+#define SOF_TKN_VOLUME_RAMP_STEP_MS 251
+#define SOF_TKN_SRC_RATE_IN 300
+#define SOF_TKN_SRC_RATE_OUT 301
+#define SOF_TKN_ASRC_RATE_IN 320
+#define SOF_TKN_ASRC_RATE_OUT 321
+#define SOF_TKN_ASRC_ASYNCHRONOUS_MODE 322
+#define SOF_TKN_ASRC_OPERATION_MODE 323
+#define SOF_TKN_PCM_DMAC_CONFIG 353
+#define SOF_TKN_COMP_PERIOD_SINK_COUNT 400
+#define SOF_TKN_COMP_PERIOD_SOURCE_COUNT 401
+#define SOF_TKN_COMP_FORMAT 402
+#define SOF_TKN_COMP_CORE_ID 404
+#define SOF_TKN_COMP_UUID 405
+#define SOF_TKN_INTEL_SSP_CLKS_CONTROL 500
+#define SOF_TKN_INTEL_SSP_MCLK_ID 501
+#define SOF_TKN_INTEL_SSP_SAMPLE_BITS 502
+#define SOF_TKN_INTEL_SSP_FRAME_PULSE_WIDTH 503
+#define SOF_TKN_INTEL_SSP_QUIRKS 504
+#define SOF_TKN_INTEL_SSP_TDM_PADDING_PER_SLOT 505
+#define SOF_TKN_INTEL_SSP_BCLK_DELAY 506
+#define SOF_TKN_INTEL_DMIC_DRIVER_VERSION 600
+#define SOF_TKN_INTEL_DMIC_CLK_MIN 601
+#define SOF_TKN_INTEL_DMIC_CLK_MAX 602
+#define SOF_TKN_INTEL_DMIC_DUTY_MIN 603
+#define SOF_TKN_INTEL_DMIC_DUTY_MAX 604
+#define SOF_TKN_INTEL_DMIC_NUM_PDM_ACTIVE 605
+#define SOF_TKN_INTEL_DMIC_SAMPLE_RATE 608
+#define SOF_TKN_INTEL_DMIC_FIFO_WORD_LENGTH 609
+#define SOF_TKN_INTEL_DMIC_UNMUTE_RAMP_TIME_MS 610
+#define SOF_TKN_INTEL_DMIC_PDM_CTRL_ID 700
+#define SOF_TKN_INTEL_DMIC_PDM_MIC_A_Enable 701
+#define SOF_TKN_INTEL_DMIC_PDM_MIC_B_Enable 702
+#define SOF_TKN_INTEL_DMIC_PDM_POLARITY_A 703
+#define SOF_TKN_INTEL_DMIC_PDM_POLARITY_B 704
+#define SOF_TKN_INTEL_DMIC_PDM_CLK_EDGE 705
+#define SOF_TKN_INTEL_DMIC_PDM_SKEW 706
+#define SOF_TKN_TONE_SAMPLE_RATE 800
+#define SOF_TKN_PROCESS_TYPE 900
+#define SOF_TKN_EFFECT_TYPE SOF_TKN_PROCESS_TYPE
+#define SOF_TKN_IMX_SAI_MCLK_ID 1000
+#define SOF_TKN_IMX_ESAI_MCLK_ID 1100
+#define SOF_TKN_STREAM_PLAYBACK_COMPATIBLE_D0I3 1200
+#define SOF_TKN_STREAM_CAPTURE_COMPATIBLE_D0I3 1201
+#define SOF_TKN_MUTE_LED_USE 1300
+#define SOF_TKN_MUTE_LED_DIRECTION 1301
+#define SOF_TKN_INTEL_ALH_RATE 1400
+#define SOF_TKN_INTEL_ALH_CH 1401
+#define SOF_TKN_INTEL_HDA_RATE 1500
+#define SOF_TKN_INTEL_HDA_CH 1501
+#endif
diff --git a/i686-linux-musl/include/sound/tlv.h b/i686-linux-musl/include/sound/tlv.h
new file mode 100644
index 0000000..0822429
--- /dev/null
+++ b/i686-linux-musl/include/sound/tlv.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_SOUND_TLV_H
+#define __UAPI_SOUND_TLV_H
+#define SNDRV_CTL_TLVT_CONTAINER 0
+#define SNDRV_CTL_TLVT_DB_SCALE 1
+#define SNDRV_CTL_TLVT_DB_LINEAR 2
+#define SNDRV_CTL_TLVT_DB_RANGE 3
+#define SNDRV_CTL_TLVT_DB_MINMAX 4
+#define SNDRV_CTL_TLVT_DB_MINMAX_MUTE 5
+#define SNDRV_CTL_TLVT_CHMAP_FIXED 0x101
+#define SNDRV_CTL_TLVT_CHMAP_VAR 0x102
+#define SNDRV_CTL_TLVT_CHMAP_PAIRED 0x103
+#define SNDRV_CTL_TLVD_ITEM(type,...) (type), SNDRV_CTL_TLVD_LENGTH(__VA_ARGS__), __VA_ARGS__
+#define SNDRV_CTL_TLVD_LENGTH(...) ((unsigned int) sizeof((const unsigned int[]) { __VA_ARGS__ }))
+#define SNDRV_CTL_TLVO_TYPE 0
+#define SNDRV_CTL_TLVO_LEN 1
+#define SNDRV_CTL_TLVD_CONTAINER_ITEM(...) SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_CONTAINER, __VA_ARGS__)
+#define SNDRV_CTL_TLVD_DECLARE_CONTAINER(name,...) unsigned int name[] = { SNDRV_CTL_TLVD_CONTAINER_ITEM(__VA_ARGS__) }
+#define SNDRV_CTL_TLVD_DB_SCALE_MASK 0xffff
+#define SNDRV_CTL_TLVD_DB_SCALE_MUTE 0x10000
+#define SNDRV_CTL_TLVD_DB_SCALE_ITEM(min,step,mute) SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_SCALE, (min), ((step) & SNDRV_CTL_TLVD_DB_SCALE_MASK) | ((mute) ? SNDRV_CTL_TLVD_DB_SCALE_MUTE : 0))
+#define SNDRV_CTL_TLVD_DECLARE_DB_SCALE(name,min,step,mute) unsigned int name[] = { SNDRV_CTL_TLVD_DB_SCALE_ITEM(min, step, mute) }
+#define SNDRV_CTL_TLVO_DB_SCALE_MIN 2
+#define SNDRV_CTL_TLVO_DB_SCALE_MUTE_AND_STEP 3
+#define SNDRV_CTL_TLVD_DB_MINMAX_ITEM(min_dB,max_dB) SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_MINMAX, (min_dB), (max_dB))
+#define SNDRV_CTL_TLVD_DB_MINMAX_MUTE_ITEM(min_dB,max_dB) SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_MINMAX_MUTE, (min_dB), (max_dB))
+#define SNDRV_CTL_TLVD_DECLARE_DB_MINMAX(name,min_dB,max_dB) unsigned int name[] = { SNDRV_CTL_TLVD_DB_MINMAX_ITEM(min_dB, max_dB) }
+#define SNDRV_CTL_TLVD_DECLARE_DB_MINMAX_MUTE(name,min_dB,max_dB) unsigned int name[] = { SNDRV_CTL_TLVD_DB_MINMAX_MUTE_ITEM(min_dB, max_dB) }
+#define SNDRV_CTL_TLVO_DB_MINMAX_MIN 2
+#define SNDRV_CTL_TLVO_DB_MINMAX_MAX 3
+#define SNDRV_CTL_TLVD_DB_LINEAR_ITEM(min_dB,max_dB) SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_LINEAR, (min_dB), (max_dB))
+#define SNDRV_CTL_TLVD_DECLARE_DB_LINEAR(name,min_dB,max_dB) unsigned int name[] = { SNDRV_CTL_TLVD_DB_LINEAR_ITEM(min_dB, max_dB) }
+#define SNDRV_CTL_TLVO_DB_LINEAR_MIN 2
+#define SNDRV_CTL_TLVO_DB_LINEAR_MAX 3
+#define SNDRV_CTL_TLVD_DB_RANGE_ITEM(...) SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_RANGE, __VA_ARGS__)
+#define SNDRV_CTL_TLVD_DECLARE_DB_RANGE(name,...) unsigned int name[] = { SNDRV_CTL_TLVD_DB_RANGE_ITEM(__VA_ARGS__) }
+#define SNDRV_CTL_TLVD_DB_GAIN_MUTE - 9999999
+#endif
diff --git a/i686-linux-musl/include/sound/usb_stream.h b/i686-linux-musl/include/sound/usb_stream.h
new file mode 100644
index 0000000..bb7fe80
--- /dev/null
+++ b/i686-linux-musl/include/sound/usb_stream.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__SOUND_USB_STREAM_H
+#define _UAPI__SOUND_USB_STREAM_H
+#define USB_STREAM_INTERFACE_VERSION 2
+#define SNDRV_USB_STREAM_IOCTL_SET_PARAMS _IOW('H', 0x90, struct usb_stream_config)
+struct usb_stream_packet {
+  unsigned offset;
+  unsigned length;
+};
+struct usb_stream_config {
+  unsigned version;
+  unsigned sample_rate;
+  unsigned period_frames;
+  unsigned frame_size;
+};
+struct usb_stream {
+  struct usb_stream_config cfg;
+  unsigned read_size;
+  unsigned write_size;
+  int period_size;
+  unsigned state;
+  int idle_insize;
+  int idle_outsize;
+  int sync_packet;
+  unsigned insize_done;
+  unsigned periods_done;
+  unsigned periods_polled;
+  struct usb_stream_packet outpacket[2];
+  unsigned inpackets;
+  unsigned inpacket_head;
+  unsigned inpacket_split;
+  unsigned inpacket_split_at;
+  unsigned next_inpacket_split;
+  unsigned next_inpacket_split_at;
+  struct usb_stream_packet inpacket[0];
+};
+enum usb_stream_state {
+  usb_stream_invalid,
+  usb_stream_stopped,
+  usb_stream_sync0,
+  usb_stream_sync1,
+  usb_stream_ready,
+  usb_stream_running,
+  usb_stream_xrun,
+};
+#endif
diff --git a/i686-linux-musl/include/spawn.h b/i686-linux-musl/include/spawn.h
new file mode 100644
index 0000000..8eb73e0
--- /dev/null
+++ b/i686-linux-musl/include/spawn.h
@@ -0,0 +1,83 @@
+#ifndef _SPAWN_H
+#define _SPAWN_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_mode_t
+#define __NEED_pid_t
+#define __NEED_sigset_t
+
+#include <bits/alltypes.h>
+
+struct sched_param;
+
+#define POSIX_SPAWN_RESETIDS 1
+#define POSIX_SPAWN_SETPGROUP 2
+#define POSIX_SPAWN_SETSIGDEF 4
+#define POSIX_SPAWN_SETSIGMASK 8
+#define POSIX_SPAWN_SETSCHEDPARAM 16
+#define POSIX_SPAWN_SETSCHEDULER 32
+#define POSIX_SPAWN_USEVFORK 64
+#define POSIX_SPAWN_SETSID 128
+
+typedef struct {
+	int __flags;
+	pid_t __pgrp;
+	sigset_t __def, __mask;
+	int __prio, __pol;
+	void *__fn;
+	char __pad[64-sizeof(void *)];
+} posix_spawnattr_t;
+
+typedef struct {
+	int __pad0[2];
+	void *__actions;
+	int __pad[16];
+} posix_spawn_file_actions_t;
+
+int posix_spawn(pid_t *__restrict, const char *__restrict, const posix_spawn_file_actions_t *,
+	const posix_spawnattr_t *__restrict, char *const *__restrict, char *const *__restrict);
+int posix_spawnp(pid_t *__restrict, const char *__restrict, const posix_spawn_file_actions_t *,
+	const posix_spawnattr_t *__restrict, char *const *__restrict, char *const *__restrict);
+
+int posix_spawnattr_init(posix_spawnattr_t *);
+int posix_spawnattr_destroy(posix_spawnattr_t *);
+
+int posix_spawnattr_setflags(posix_spawnattr_t *, short);
+int posix_spawnattr_getflags(const posix_spawnattr_t *__restrict, short *__restrict);
+
+int posix_spawnattr_setpgroup(posix_spawnattr_t *, pid_t);
+int posix_spawnattr_getpgroup(const posix_spawnattr_t *__restrict, pid_t *__restrict);
+
+int posix_spawnattr_setsigmask(posix_spawnattr_t *__restrict, const sigset_t *__restrict);
+int posix_spawnattr_getsigmask(const posix_spawnattr_t *__restrict, sigset_t *__restrict);
+
+int posix_spawnattr_setsigdefault(posix_spawnattr_t *__restrict, const sigset_t *__restrict);
+int posix_spawnattr_getsigdefault(const posix_spawnattr_t *__restrict, sigset_t *__restrict);
+
+int posix_spawnattr_setschedparam(posix_spawnattr_t *__restrict, const struct sched_param *__restrict);
+int posix_spawnattr_getschedparam(const posix_spawnattr_t *__restrict, struct sched_param *__restrict);
+int posix_spawnattr_setschedpolicy(posix_spawnattr_t *, int);
+int posix_spawnattr_getschedpolicy(const posix_spawnattr_t *__restrict, int *__restrict);
+
+int posix_spawn_file_actions_init(posix_spawn_file_actions_t *);
+int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *);
+
+int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *__restrict, int, const char *__restrict, int, mode_t);
+int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *, int);
+int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *, int, int);
+
+#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
+int posix_spawn_file_actions_addchdir_np(posix_spawn_file_actions_t *__restrict, const char *__restrict);
+int posix_spawn_file_actions_addfchdir_np(posix_spawn_file_actions_t *, int);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/stdalign.h b/i686-linux-musl/include/stdalign.h
new file mode 100644
index 0000000..2cc94be
--- /dev/null
+++ b/i686-linux-musl/include/stdalign.h
@@ -0,0 +1,20 @@
+#ifndef _STDALIGN_H
+#define _STDALIGN_H
+
+#ifndef __cplusplus
+
+/* this whole header only works in C11 or with compiler extensions */
+#if __STDC_VERSION__ < 201112L && defined( __GNUC__)
+#define _Alignas(t) __attribute__((__aligned__(t)))
+#define _Alignof(t) __alignof__(t)
+#endif
+
+#define alignas _Alignas
+#define alignof _Alignof
+
+#endif
+
+#define __alignas_is_defined 1
+#define __alignof_is_defined 1
+
+#endif
diff --git a/i686-linux-musl/include/stdarg.h b/i686-linux-musl/include/stdarg.h
new file mode 100644
index 0000000..3256f80
--- /dev/null
+++ b/i686-linux-musl/include/stdarg.h
@@ -0,0 +1,21 @@
+#ifndef _STDARG_H
+#define _STDARG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __NEED_va_list
+
+#include <bits/alltypes.h>
+
+#define va_start(v,l)   __builtin_va_start(v,l)
+#define va_end(v)       __builtin_va_end(v)
+#define va_arg(v,l)     __builtin_va_arg(v,l)
+#define va_copy(d,s)    __builtin_va_copy(d,s)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/stdbool.h b/i686-linux-musl/include/stdbool.h
new file mode 100644
index 0000000..a9d7ab7
--- /dev/null
+++ b/i686-linux-musl/include/stdbool.h
@@ -0,0 +1,14 @@
+#ifndef _STDBOOL_H
+#define _STDBOOL_H
+
+#ifndef __cplusplus
+
+#define true 1
+#define false 0
+#define bool _Bool
+
+#endif
+
+#define __bool_true_false_are_defined 1
+
+#endif
diff --git a/i686-linux-musl/include/stdc-predef.h b/i686-linux-musl/include/stdc-predef.h
new file mode 100644
index 0000000..af1a279
--- /dev/null
+++ b/i686-linux-musl/include/stdc-predef.h
@@ -0,0 +1,13 @@
+#ifndef _STDC_PREDEF_H
+#define _STDC_PREDEF_H
+
+#define __STDC_ISO_10646__ 201206L
+
+#if !defined(__GCC_IEC_559) || __GCC_IEC_559 > 0
+#define __STDC_IEC_559__ 1
+#endif
+
+#define __STDC_UTF_16__ 1
+#define __STDC_UTF_32__ 1
+
+#endif
diff --git a/i686-linux-musl/include/stddef.h b/i686-linux-musl/include/stddef.h
new file mode 100644
index 0000000..f25b863
--- /dev/null
+++ b/i686-linux-musl/include/stddef.h
@@ -0,0 +1,27 @@
+#ifndef _STDDEF_H
+#define _STDDEF_H
+
+#if __cplusplus >= 201103L
+#define NULL nullptr
+#elif defined(__cplusplus)
+#define NULL 0L
+#else
+#define NULL ((void*)0)
+#endif
+
+#define __NEED_ptrdiff_t
+#define __NEED_size_t
+#define __NEED_wchar_t
+#if __STDC_VERSION__ >= 201112L || __cplusplus >= 201103L
+#define __NEED_max_align_t
+#endif
+
+#include <bits/alltypes.h>
+
+#if __GNUC__ > 3
+#define offsetof(type, member) __builtin_offsetof(type, member)
+#else
+#define offsetof(type, member) ((size_t)( (char *)&(((type *)0)->member) - (char *)0 ))
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/stdint.h b/i686-linux-musl/include/stdint.h
new file mode 100644
index 0000000..a296819
--- /dev/null
+++ b/i686-linux-musl/include/stdint.h
@@ -0,0 +1,117 @@
+#ifndef _STDINT_H
+#define _STDINT_H
+
+#define __NEED_int8_t
+#define __NEED_int16_t
+#define __NEED_int32_t
+#define __NEED_int64_t
+
+#define __NEED_uint8_t
+#define __NEED_uint16_t
+#define __NEED_uint32_t
+#define __NEED_uint64_t
+
+#define __NEED_intptr_t
+#define __NEED_uintptr_t
+
+#define __NEED_intmax_t
+#define __NEED_uintmax_t
+
+#include <bits/alltypes.h>
+
+typedef int8_t int_fast8_t;
+typedef int64_t int_fast64_t;
+
+typedef int8_t  int_least8_t;
+typedef int16_t int_least16_t;
+typedef int32_t int_least32_t;
+typedef int64_t int_least64_t;
+
+typedef uint8_t uint_fast8_t;
+typedef uint64_t uint_fast64_t;
+
+typedef uint8_t  uint_least8_t;
+typedef uint16_t uint_least16_t;
+typedef uint32_t uint_least32_t;
+typedef uint64_t uint_least64_t;
+
+#define INT8_MIN   (-1-0x7f)
+#define INT16_MIN  (-1-0x7fff)
+#define INT32_MIN  (-1-0x7fffffff)
+#define INT64_MIN  (-1-0x7fffffffffffffff)
+
+#define INT8_MAX   (0x7f)
+#define INT16_MAX  (0x7fff)
+#define INT32_MAX  (0x7fffffff)
+#define INT64_MAX  (0x7fffffffffffffff)
+
+#define UINT8_MAX  (0xff)
+#define UINT16_MAX (0xffff)
+#define UINT32_MAX (0xffffffffu)
+#define UINT64_MAX (0xffffffffffffffffu)
+
+#define INT_FAST8_MIN   INT8_MIN
+#define INT_FAST64_MIN  INT64_MIN
+
+#define INT_LEAST8_MIN   INT8_MIN
+#define INT_LEAST16_MIN  INT16_MIN
+#define INT_LEAST32_MIN  INT32_MIN
+#define INT_LEAST64_MIN  INT64_MIN
+
+#define INT_FAST8_MAX   INT8_MAX
+#define INT_FAST64_MAX  INT64_MAX
+
+#define INT_LEAST8_MAX   INT8_MAX
+#define INT_LEAST16_MAX  INT16_MAX
+#define INT_LEAST32_MAX  INT32_MAX
+#define INT_LEAST64_MAX  INT64_MAX
+
+#define UINT_FAST8_MAX  UINT8_MAX
+#define UINT_FAST64_MAX UINT64_MAX
+
+#define UINT_LEAST8_MAX  UINT8_MAX
+#define UINT_LEAST16_MAX UINT16_MAX
+#define UINT_LEAST32_MAX UINT32_MAX
+#define UINT_LEAST64_MAX UINT64_MAX
+
+#define INTMAX_MIN  INT64_MIN
+#define INTMAX_MAX  INT64_MAX
+#define UINTMAX_MAX UINT64_MAX
+
+#define WINT_MIN 0U
+#define WINT_MAX UINT32_MAX
+
+#if L'\0'-1 > 0
+#define WCHAR_MAX (0xffffffffu+L'\0')
+#define WCHAR_MIN (0+L'\0')
+#else
+#define WCHAR_MAX (0x7fffffff+L'\0')
+#define WCHAR_MIN (-1-0x7fffffff+L'\0')
+#endif
+
+#define SIG_ATOMIC_MIN  INT32_MIN
+#define SIG_ATOMIC_MAX  INT32_MAX
+
+#include <bits/stdint.h>
+
+#define INT8_C(c)  c
+#define INT16_C(c) c
+#define INT32_C(c) c
+
+#define UINT8_C(c)  c
+#define UINT16_C(c) c
+#define UINT32_C(c) c ## U
+
+#if UINTPTR_MAX == UINT64_MAX
+#define INT64_C(c) c ## L
+#define UINT64_C(c) c ## UL
+#define INTMAX_C(c)  c ## L
+#define UINTMAX_C(c) c ## UL
+#else
+#define INT64_C(c) c ## LL
+#define UINT64_C(c) c ## ULL
+#define INTMAX_C(c)  c ## LL
+#define UINTMAX_C(c) c ## ULL
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/stdio.h b/i686-linux-musl/include/stdio.h
new file mode 100644
index 0000000..d1ed01f
--- /dev/null
+++ b/i686-linux-musl/include/stdio.h
@@ -0,0 +1,224 @@
+#ifndef _STDIO_H
+#define _STDIO_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_FILE
+#define __NEED___isoc_va_list
+#define __NEED_size_t
+
+#if __STDC_VERSION__ < 201112L
+#define __NEED_struct__IO_FILE
+#endif
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+#define __NEED_ssize_t
+#define __NEED_off_t
+#define __NEED_va_list
+#endif
+
+#include <bits/alltypes.h>
+
+#if __cplusplus >= 201103L
+#define NULL nullptr
+#elif defined(__cplusplus)
+#define NULL 0L
+#else
+#define NULL ((void*)0)
+#endif
+
+#undef EOF
+#define EOF (-1)
+
+#undef SEEK_SET
+#undef SEEK_CUR
+#undef SEEK_END
+#define SEEK_SET 0
+#define SEEK_CUR 1
+#define SEEK_END 2
+
+#define _IOFBF 0
+#define _IOLBF 1
+#define _IONBF 2
+
+#define BUFSIZ 1024
+#define FILENAME_MAX 4096
+#define FOPEN_MAX 1000
+#define TMP_MAX 10000
+#define L_tmpnam 20
+
+typedef union _G_fpos64_t {
+	char __opaque[16];
+	long long __lldata;
+	double __align;
+} fpos_t;
+
+extern FILE *const stdin;
+extern FILE *const stdout;
+extern FILE *const stderr;
+
+#define stdin  (stdin)
+#define stdout (stdout)
+#define stderr (stderr)
+
+FILE *fopen(const char *__restrict, const char *__restrict);
+FILE *freopen(const char *__restrict, const char *__restrict, FILE *__restrict);
+int fclose(FILE *);
+
+int remove(const char *);
+int rename(const char *, const char *);
+
+int feof(FILE *);
+int ferror(FILE *);
+int fflush(FILE *);
+void clearerr(FILE *);
+
+int fseek(FILE *, long, int);
+long ftell(FILE *);
+void rewind(FILE *);
+
+int fgetpos(FILE *__restrict, fpos_t *__restrict);
+int fsetpos(FILE *, const fpos_t *);
+
+size_t fread(void *__restrict, size_t, size_t, FILE *__restrict);
+size_t fwrite(const void *__restrict, size_t, size_t, FILE *__restrict);
+
+int fgetc(FILE *);
+int getc(FILE *);
+int getchar(void);
+int ungetc(int, FILE *);
+
+int fputc(int, FILE *);
+int putc(int, FILE *);
+int putchar(int);
+
+char *fgets(char *__restrict, int, FILE *__restrict);
+#if __STDC_VERSION__ < 201112L
+char *gets(char *);
+#endif
+
+int fputs(const char *__restrict, FILE *__restrict);
+int puts(const char *);
+
+int printf(const char *__restrict, ...);
+int fprintf(FILE *__restrict, const char *__restrict, ...);
+int sprintf(char *__restrict, const char *__restrict, ...);
+int snprintf(char *__restrict, size_t, const char *__restrict, ...);
+
+int vprintf(const char *__restrict, __isoc_va_list);
+int vfprintf(FILE *__restrict, const char *__restrict, __isoc_va_list);
+int vsprintf(char *__restrict, const char *__restrict, __isoc_va_list);
+int vsnprintf(char *__restrict, size_t, const char *__restrict, __isoc_va_list);
+
+int scanf(const char *__restrict, ...);
+int fscanf(FILE *__restrict, const char *__restrict, ...);
+int sscanf(const char *__restrict, const char *__restrict, ...);
+int vscanf(const char *__restrict, __isoc_va_list);
+int vfscanf(FILE *__restrict, const char *__restrict, __isoc_va_list);
+int vsscanf(const char *__restrict, const char *__restrict, __isoc_va_list);
+
+void perror(const char *);
+
+int setvbuf(FILE *__restrict, char *__restrict, int, size_t);
+void setbuf(FILE *__restrict, char *__restrict);
+
+char *tmpnam(char *);
+FILE *tmpfile(void);
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+FILE *fmemopen(void *__restrict, size_t, const char *__restrict);
+FILE *open_memstream(char **, size_t *);
+FILE *fdopen(int, const char *);
+FILE *popen(const char *, const char *);
+int pclose(FILE *);
+int fileno(FILE *);
+int fseeko(FILE *, off_t, int);
+off_t ftello(FILE *);
+int dprintf(int, const char *__restrict, ...);
+int vdprintf(int, const char *__restrict, __isoc_va_list);
+void flockfile(FILE *);
+int ftrylockfile(FILE *);
+void funlockfile(FILE *);
+int getc_unlocked(FILE *);
+int getchar_unlocked(void);
+int putc_unlocked(int, FILE *);
+int putchar_unlocked(int);
+ssize_t getdelim(char **__restrict, size_t *__restrict, int, FILE *__restrict);
+ssize_t getline(char **__restrict, size_t *__restrict, FILE *__restrict);
+int renameat(int, const char *, int, const char *);
+char *ctermid(char *);
+#define L_ctermid 20
+#endif
+
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+#define P_tmpdir "/tmp"
+char *tempnam(const char *, const char *);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define L_cuserid 20
+char *cuserid(char *);
+void setlinebuf(FILE *);
+void setbuffer(FILE *, char *, size_t);
+int fgetc_unlocked(FILE *);
+int fputc_unlocked(int, FILE *);
+int fflush_unlocked(FILE *);
+size_t fread_unlocked(void *, size_t, size_t, FILE *);
+size_t fwrite_unlocked(const void *, size_t, size_t, FILE *);
+void clearerr_unlocked(FILE *);
+int feof_unlocked(FILE *);
+int ferror_unlocked(FILE *);
+int fileno_unlocked(FILE *);
+int getw(FILE *);
+int putw(int, FILE *);
+char *fgetln(FILE *, size_t *);
+int asprintf(char **, const char *, ...);
+int vasprintf(char **, const char *, __isoc_va_list);
+#endif
+
+#ifdef _GNU_SOURCE
+char *fgets_unlocked(char *, int, FILE *);
+int fputs_unlocked(const char *, FILE *);
+
+typedef ssize_t (cookie_read_function_t)(void *, char *, size_t);
+typedef ssize_t (cookie_write_function_t)(void *, const char *, size_t);
+typedef int (cookie_seek_function_t)(void *, off_t *, int);
+typedef int (cookie_close_function_t)(void *);
+
+typedef struct _IO_cookie_io_functions_t {
+	cookie_read_function_t *read;
+	cookie_write_function_t *write;
+	cookie_seek_function_t *seek;
+	cookie_close_function_t *close;
+} cookie_io_functions_t;
+
+FILE *fopencookie(void *, const char *, cookie_io_functions_t);
+#endif
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define tmpfile64 tmpfile
+#define fopen64 fopen
+#define freopen64 freopen
+#define fseeko64 fseeko
+#define ftello64 ftello
+#define fgetpos64 fgetpos
+#define fsetpos64 fsetpos
+#define fpos64_t fpos_t
+#define off64_t off_t
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/stdio_ext.h b/i686-linux-musl/include/stdio_ext.h
new file mode 100644
index 0000000..e3ab7fd
--- /dev/null
+++ b/i686-linux-musl/include/stdio_ext.h
@@ -0,0 +1,34 @@
+#ifndef _STDIO_EXT_H
+#define _STDIO_EXT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#define FSETLOCKING_QUERY 0
+#define FSETLOCKING_INTERNAL 1
+#define FSETLOCKING_BYCALLER 2
+
+void _flushlbf(void);
+int __fsetlocking(FILE *, int);
+int __fwriting(FILE *);
+int __freading(FILE *);
+int __freadable(FILE *);
+int __fwritable(FILE *);
+int __flbf(FILE *);
+size_t __fbufsize(FILE *);
+size_t __fpending(FILE *);
+int __fpurge(FILE *);
+
+size_t __freadahead(FILE *);
+const char *__freadptr(FILE *, size_t *);
+void __freadptrinc(FILE *, size_t);
+void __fseterr(FILE *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/stdlib.h b/i686-linux-musl/include/stdlib.h
new file mode 100644
index 0000000..b507ca3
--- /dev/null
+++ b/i686-linux-musl/include/stdlib.h
@@ -0,0 +1,179 @@
+#ifndef _STDLIB_H
+#define _STDLIB_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#if __cplusplus >= 201103L
+#define NULL nullptr
+#elif defined(__cplusplus)
+#define NULL 0L
+#else
+#define NULL ((void*)0)
+#endif
+
+#define __NEED_size_t
+#define __NEED_wchar_t
+
+#include <bits/alltypes.h>
+
+int atoi (const char *);
+long atol (const char *);
+long long atoll (const char *);
+double atof (const char *);
+
+float strtof (const char *__restrict, char **__restrict);
+double strtod (const char *__restrict, char **__restrict);
+long double strtold (const char *__restrict, char **__restrict);
+
+long strtol (const char *__restrict, char **__restrict, int);
+unsigned long strtoul (const char *__restrict, char **__restrict, int);
+long long strtoll (const char *__restrict, char **__restrict, int);
+unsigned long long strtoull (const char *__restrict, char **__restrict, int);
+
+int rand (void);
+void srand (unsigned);
+
+void *malloc (size_t);
+void *calloc (size_t, size_t);
+void *realloc (void *, size_t);
+void free (void *);
+void *aligned_alloc(size_t, size_t);
+
+_Noreturn void abort (void);
+int atexit (void (*) (void));
+_Noreturn void exit (int);
+_Noreturn void _Exit (int);
+int at_quick_exit (void (*) (void));
+_Noreturn void quick_exit (int);
+
+char *getenv (const char *);
+
+int system (const char *);
+
+void *bsearch (const void *, const void *, size_t, size_t, int (*)(const void *, const void *));
+void qsort (void *, size_t, size_t, int (*)(const void *, const void *));
+
+int abs (int);
+long labs (long);
+long long llabs (long long);
+
+typedef struct { int quot, rem; } div_t;
+typedef struct { long quot, rem; } ldiv_t;
+typedef struct { long long quot, rem; } lldiv_t;
+
+div_t div (int, int);
+ldiv_t ldiv (long, long);
+lldiv_t lldiv (long long, long long);
+
+int mblen (const char *, size_t);
+int mbtowc (wchar_t *__restrict, const char *__restrict, size_t);
+int wctomb (char *, wchar_t);
+size_t mbstowcs (wchar_t *__restrict, const char *__restrict, size_t);
+size_t wcstombs (char *__restrict, const wchar_t *__restrict, size_t);
+
+#define EXIT_FAILURE 1
+#define EXIT_SUCCESS 0
+
+size_t __ctype_get_mb_cur_max(void);
+#define MB_CUR_MAX (__ctype_get_mb_cur_max())
+
+#define RAND_MAX (0x7fffffff)
+
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+
+#define WNOHANG    1
+#define WUNTRACED  2
+
+#define WEXITSTATUS(s) (((s) & 0xff00) >> 8)
+#define WTERMSIG(s) ((s) & 0x7f)
+#define WSTOPSIG(s) WEXITSTATUS(s)
+#define WIFEXITED(s) (!WTERMSIG(s))
+#define WIFSTOPPED(s) ((short)((((s)&0xffff)*0x10001)>>8) > 0x7f00)
+#define WIFSIGNALED(s) (((s)&0xffff)-1U < 0xffu)
+
+int posix_memalign (void **, size_t, size_t);
+int setenv (const char *, const char *, int);
+int unsetenv (const char *);
+int mkstemp (char *);
+int mkostemp (char *, int);
+char *mkdtemp (char *);
+int getsubopt (char **, char *const *, char **);
+int rand_r (unsigned *);
+
+#endif
+
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+char *realpath (const char *__restrict, char *__restrict);
+long int random (void);
+void srandom (unsigned int);
+char *initstate (unsigned int, char *, size_t);
+char *setstate (char *);
+int putenv (char *);
+int posix_openpt (int);
+int grantpt (int);
+int unlockpt (int);
+char *ptsname (int);
+char *l64a (long);
+long a64l (const char *);
+void setkey (const char *);
+double drand48 (void);
+double erand48 (unsigned short [3]);
+long int lrand48 (void);
+long int nrand48 (unsigned short [3]);
+long mrand48 (void);
+long jrand48 (unsigned short [3]);
+void srand48 (long);
+unsigned short *seed48 (unsigned short [3]);
+void lcong48 (unsigned short [7]);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#include <alloca.h>
+char *mktemp (char *);
+int mkstemps (char *, int);
+int mkostemps (char *, int, int);
+void *valloc (size_t);
+void *memalign(size_t, size_t);
+int getloadavg(double *, int);
+int clearenv(void);
+#define WCOREDUMP(s) ((s) & 0x80)
+#define WIFCONTINUED(s) ((s) == 0xffff)
+void *reallocarray (void *, size_t, size_t);
+void qsort_r (void *, size_t, size_t, int (*)(const void *, const void *, void *), void *);
+#endif
+
+#ifdef _GNU_SOURCE
+int ptsname_r(int, char *, size_t);
+char *ecvt(double, int, int *, int *);
+char *fcvt(double, int, int *, int *);
+char *gcvt(double, int, char *);
+char *secure_getenv(const char *);
+struct __locale_struct;
+float strtof_l(const char *__restrict, char **__restrict, struct __locale_struct *);
+double strtod_l(const char *__restrict, char **__restrict, struct __locale_struct *);
+long double strtold_l(const char *__restrict, char **__restrict, struct __locale_struct *);
+#endif
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define mkstemp64 mkstemp
+#define mkostemp64 mkostemp
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define mkstemps64 mkstemps
+#define mkostemps64 mkostemps
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/stdnoreturn.h b/i686-linux-musl/include/stdnoreturn.h
new file mode 100644
index 0000000..5c6aeeb
--- /dev/null
+++ b/i686-linux-musl/include/stdnoreturn.h
@@ -0,0 +1,7 @@
+#ifndef _STDNORETURN_H
+#define _STDNORETURN_H
+#ifndef __cplusplus
+#include <features.h>
+#define noreturn _Noreturn
+#endif
+#endif
diff --git a/i686-linux-musl/include/string.h b/i686-linux-musl/include/string.h
new file mode 100644
index 0000000..43ad094
--- /dev/null
+++ b/i686-linux-musl/include/string.h
@@ -0,0 +1,107 @@
+#ifndef	_STRING_H
+#define	_STRING_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#if __cplusplus >= 201103L
+#define NULL nullptr
+#elif defined(__cplusplus)
+#define NULL 0L
+#else
+#define NULL ((void*)0)
+#endif
+
+#define __NEED_size_t
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+#define __NEED_locale_t
+#endif
+
+#include <bits/alltypes.h>
+
+void *memcpy (void *__restrict, const void *__restrict, size_t);
+void *memmove (void *, const void *, size_t);
+void *memset (void *, int, size_t);
+int memcmp (const void *, const void *, size_t);
+void *memchr (const void *, int, size_t);
+
+char *strcpy (char *__restrict, const char *__restrict);
+char *strncpy (char *__restrict, const char *__restrict, size_t);
+
+char *strcat (char *__restrict, const char *__restrict);
+char *strncat (char *__restrict, const char *__restrict, size_t);
+
+int strcmp (const char *, const char *);
+int strncmp (const char *, const char *, size_t);
+
+int strcoll (const char *, const char *);
+size_t strxfrm (char *__restrict, const char *__restrict, size_t);
+
+char *strchr (const char *, int);
+char *strrchr (const char *, int);
+
+size_t strcspn (const char *, const char *);
+size_t strspn (const char *, const char *);
+char *strpbrk (const char *, const char *);
+char *strstr (const char *, const char *);
+char *strtok (char *__restrict, const char *__restrict);
+
+size_t strlen (const char *);
+
+char *strerror (int);
+
+#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
+#include <strings.h>
+#endif
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+char *strtok_r (char *__restrict, const char *__restrict, char **__restrict);
+int strerror_r (int, char *, size_t);
+char *stpcpy(char *__restrict, const char *__restrict);
+char *stpncpy(char *__restrict, const char *__restrict, size_t);
+size_t strnlen (const char *, size_t);
+char *strdup (const char *);
+char *strndup (const char *, size_t);
+char *strsignal(int);
+char *strerror_l (int, locale_t);
+int strcoll_l (const char *, const char *, locale_t);
+size_t strxfrm_l (char *__restrict, const char *__restrict, size_t, locale_t);
+#endif
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+void *memccpy (void *__restrict, const void *__restrict, int, size_t);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+char *strsep(char **, const char *);
+size_t strlcat (char *, const char *, size_t);
+size_t strlcpy (char *, const char *, size_t);
+void explicit_bzero (void *, size_t);
+#endif
+
+#ifdef _GNU_SOURCE
+#define	strdupa(x)	strcpy(alloca(strlen(x)+1),x)
+int strverscmp (const char *, const char *);
+char *strchrnul(const char *, int);
+char *strcasestr(const char *, const char *);
+void *memmem(const void *, size_t, const void *, size_t);
+void *memrchr(const void *, int, size_t);
+void *mempcpy(void *, const void *, size_t);
+#ifndef __cplusplus
+char *basename();
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/strings.h b/i686-linux-musl/include/strings.h
new file mode 100644
index 0000000..db0960b
--- /dev/null
+++ b/i686-linux-musl/include/strings.h
@@ -0,0 +1,39 @@
+#ifndef	_STRINGS_H
+#define	_STRINGS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define __NEED_size_t
+#define __NEED_locale_t
+#include <bits/alltypes.h>
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_POSIX_SOURCE) \
+ || (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE+0 < 200809L) \
+ || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700)
+int bcmp (const void *, const void *, size_t);
+void bcopy (const void *, void *, size_t);
+void bzero (void *, size_t);
+char *index (const char *, int);
+char *rindex (const char *, int);
+#endif
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)  || defined(_BSD_SOURCE)
+int ffs (int);
+int ffsl (long);
+int ffsll (long long);
+#endif
+
+int strcasecmp (const char *, const char *);
+int strncasecmp (const char *, const char *, size_t);
+
+int strcasecmp_l (const char *, const char *, locale_t);
+int strncasecmp_l (const char *, const char *, size_t, locale_t);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/stropts.h b/i686-linux-musl/include/stropts.h
new file mode 100644
index 0000000..c99c922
--- /dev/null
+++ b/i686-linux-musl/include/stropts.h
@@ -0,0 +1,139 @@
+#ifndef _STROPTS_H
+#define _STROPTS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __SID		('S' << 8)
+
+#define I_NREAD		(__SID | 1)
+#define I_PUSH		(__SID | 2)
+#define I_POP		(__SID | 3)
+#define I_LOOK		(__SID | 4)
+#define I_FLUSH		(__SID | 5)
+#define I_SRDOPT	(__SID | 6)
+#define I_GRDOPT	(__SID | 7)
+#define I_STR		(__SID | 8)
+#define I_SETSIG	(__SID | 9)
+#define I_GETSIG	(__SID |10)
+#define I_FIND		(__SID |11)
+#define I_LINK		(__SID |12)
+#define I_UNLINK	(__SID |13)
+#define I_PEEK		(__SID |15)
+#define I_FDINSERT	(__SID |16)
+#define I_SENDFD	(__SID |17)
+#define I_RECVFD	(__SID |14)
+#define I_SWROPT	(__SID |19)
+#define I_GWROPT	(__SID |20)
+#define I_LIST		(__SID |21)
+#define I_PLINK		(__SID |22)
+#define I_PUNLINK	(__SID |23)
+#define I_FLUSHBAND	(__SID |28)
+#define I_CKBAND	(__SID |29)
+#define I_GETBAND	(__SID |30)
+#define I_ATMARK	(__SID |31)
+#define I_SETCLTIME	(__SID |32)
+#define I_GETCLTIME	(__SID |33)
+#define I_CANPUT	(__SID |34)
+
+#define FMNAMESZ	8
+
+#define FLUSHR		0x01
+#define FLUSHW		0x02
+#define FLUSHRW		0x03
+#define FLUSHBAND	0x04
+
+#define S_INPUT		0x0001
+#define S_HIPRI		0x0002
+#define S_OUTPUT	0x0004
+#define S_MSG		0x0008
+#define S_ERROR		0x0010
+#define S_HANGUP	0x0020
+#define S_RDNORM	0x0040
+#define S_WRNORM	S_OUTPUT
+#define S_RDBAND	0x0080
+#define S_WRBAND	0x0100
+#define S_BANDURG	0x0200
+
+#define RS_HIPRI	0x01
+
+#define RNORM		0x0000
+#define RMSGD		0x0001
+#define RMSGN		0x0002
+#define RPROTDAT	0x0004
+#define RPROTDIS	0x0008
+#define RPROTNORM	0x0010
+#define RPROTMASK	0x001C
+
+#define SNDZERO		0x001
+#define SNDPIPE		0x002
+
+#define ANYMARK		0x01
+#define LASTMARK	0x02
+
+#define MUXID_ALL	(-1)
+
+#define MSG_HIPRI	0x01
+#define MSG_ANY		0x02
+#define MSG_BAND	0x04
+
+#define MORECTL		1
+#define MOREDATA	2
+
+struct bandinfo {
+	unsigned char bi_pri;
+	int bi_flag;
+};
+
+struct strbuf {
+	int maxlen;
+	int len;
+	char *buf;
+};
+
+struct strpeek {
+	struct strbuf ctlbuf;
+	struct strbuf databuf;
+	unsigned flags;
+};
+
+struct strfdinsert {
+	struct strbuf ctlbuf;
+	struct strbuf databuf;
+	unsigned flags;
+	int fildes;
+	int offset;
+};
+
+struct strioctl {
+	int ic_cmd;
+	int ic_timout;
+	int ic_len;
+	char *ic_dp;
+};
+
+struct strrecvfd {
+	int fd;
+	int uid;
+	int gid;
+	char __fill[8];
+};
+
+struct str_mlist {
+	char l_name[FMNAMESZ + 1];
+};
+
+struct str_list {
+	int sl_nmods;
+	struct str_mlist *sl_modlist;
+};
+
+int isastream(int);
+int ioctl(int, int, ...);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/acct.h b/i686-linux-musl/include/sys/acct.h
new file mode 100644
index 0000000..fae9d05
--- /dev/null
+++ b/i686-linux-musl/include/sys/acct.h
@@ -0,0 +1,72 @@
+#ifndef _SYS_ACCT_H
+#define _SYS_ACCT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <time.h>
+#include <stdint.h>
+
+#define ACCT_COMM 16
+
+typedef uint16_t comp_t;
+
+struct acct {
+	char ac_flag;
+	uint16_t ac_uid;
+	uint16_t ac_gid;
+	uint16_t ac_tty;
+	uint32_t 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;
+	uint32_t ac_exitcode;
+	char ac_comm[ACCT_COMM+1];
+	char ac_pad[10];
+};
+
+
+struct acct_v3 {
+	char ac_flag;
+	char ac_version;
+	uint16_t ac_tty;
+	uint32_t ac_exitcode;
+	uint32_t ac_uid;
+	uint32_t ac_gid;
+	uint32_t ac_pid;
+	uint32_t ac_ppid;
+	uint32_t 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 1
+#define ASU 2
+#define ACORE 8
+#define AXSIG 16
+#define ACCT_BYTEORDER (128*(__BYTE_ORDER==__BIG_ENDIAN))
+#define AHZ 100
+
+int acct(const char *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/auxv.h b/i686-linux-musl/include/sys/auxv.h
new file mode 100644
index 0000000..ddccf57
--- /dev/null
+++ b/i686-linux-musl/include/sys/auxv.h
@@ -0,0 +1,17 @@
+#ifndef _SYS_AUXV_H
+#define _SYS_AUXV_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <elf.h>
+#include <bits/hwcap.h>
+
+unsigned long getauxval(unsigned long);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/cachectl.h b/i686-linux-musl/include/sys/cachectl.h
new file mode 100644
index 0000000..f3b896a
--- /dev/null
+++ b/i686-linux-musl/include/sys/cachectl.h
@@ -0,0 +1,22 @@
+#ifndef _SYS_CACHECTL_H
+#define _SYS_CACHECTL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define ICACHE (1<<0)
+#define DCACHE (1<<1)
+#define BCACHE (ICACHE|DCACHE)
+#define CACHEABLE 0
+#define UNCACHEABLE 1
+ 
+int cachectl(void *, int, int);
+int cacheflush(void *, int, int);
+int _flush_cache(void *, int, int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/cdefs.h b/i686-linux-musl/include/sys/cdefs.h
new file mode 100644
index 0000000..03302bd
--- /dev/null
+++ b/i686-linux-musl/include/sys/cdefs.h
@@ -0,0 +1,9 @@
+#pragma once
+
+#if defined(__cplusplus)
+#define __BEGIN_DECLS extern "C" {
+#define __END_DECLS }
+#else
+#define __BEGIN_DECLS
+#define __END_DECLS
+#endif
diff --git a/i686-linux-musl/include/sys/dir.h b/i686-linux-musl/include/sys/dir.h
new file mode 100644
index 0000000..9ba1c79
--- /dev/null
+++ b/i686-linux-musl/include/sys/dir.h
@@ -0,0 +1,2 @@
+#include <dirent.h>
+#define direct dirent
diff --git a/i686-linux-musl/include/sys/epoll.h b/i686-linux-musl/include/sys/epoll.h
new file mode 100644
index 0000000..ac81a84
--- /dev/null
+++ b/i686-linux-musl/include/sys/epoll.h
@@ -0,0 +1,69 @@
+#ifndef	_SYS_EPOLL_H
+#define	_SYS_EPOLL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+#include <sys/types.h>
+#include <fcntl.h>
+
+#define __NEED_sigset_t
+
+#include <bits/alltypes.h>
+
+#define EPOLL_CLOEXEC O_CLOEXEC
+#define EPOLL_NONBLOCK O_NONBLOCK
+
+enum EPOLL_EVENTS { __EPOLL_DUMMY };
+#define EPOLLIN 0x001
+#define EPOLLPRI 0x002
+#define EPOLLOUT 0x004
+#define EPOLLRDNORM 0x040
+#define EPOLLNVAL 0x020
+#define EPOLLRDBAND 0x080
+#define EPOLLWRNORM 0x100
+#define EPOLLWRBAND 0x200
+#define EPOLLMSG 0x400
+#define EPOLLERR 0x008
+#define EPOLLHUP 0x010
+#define EPOLLRDHUP 0x2000
+#define EPOLLEXCLUSIVE (1U<<28)
+#define EPOLLWAKEUP (1U<<29)
+#define EPOLLONESHOT (1U<<30)
+#define EPOLLET (1U<<31)
+
+#define EPOLL_CTL_ADD 1
+#define EPOLL_CTL_DEL 2
+#define EPOLL_CTL_MOD 3
+
+typedef union epoll_data {
+	void *ptr;
+	int fd;
+	uint32_t u32;
+	uint64_t u64;
+} epoll_data_t;
+
+struct epoll_event {
+	uint32_t events;
+	epoll_data_t data;
+}
+#ifdef __x86_64__
+__attribute__ ((__packed__))
+#endif
+;
+
+
+int epoll_create(int);
+int epoll_create1(int);
+int epoll_ctl(int, int, int, struct epoll_event *);
+int epoll_wait(int, struct epoll_event *, int, int);
+int epoll_pwait(int, struct epoll_event *, int, int, const sigset_t *);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* sys/epoll.h */
diff --git a/i686-linux-musl/include/sys/errno.h b/i686-linux-musl/include/sys/errno.h
new file mode 100644
index 0000000..35a3e5a
--- /dev/null
+++ b/i686-linux-musl/include/sys/errno.h
@@ -0,0 +1,2 @@
+#warning redirecting incorrect #include <sys/errno.h> to <errno.h>
+#include <errno.h>
diff --git a/i686-linux-musl/include/sys/eventfd.h b/i686-linux-musl/include/sys/eventfd.h
new file mode 100644
index 0000000..dc5c88f
--- /dev/null
+++ b/i686-linux-musl/include/sys/eventfd.h
@@ -0,0 +1,26 @@
+#ifndef _SYS_EVENTFD_H
+#define _SYS_EVENTFD_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+#include <fcntl.h>
+
+typedef uint64_t eventfd_t;
+
+#define EFD_SEMAPHORE 1
+#define EFD_CLOEXEC O_CLOEXEC
+#define EFD_NONBLOCK O_NONBLOCK
+
+int eventfd(unsigned int, int);
+int eventfd_read(int, eventfd_t *);
+int eventfd_write(int, eventfd_t);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* sys/eventfd.h */
diff --git a/i686-linux-musl/include/sys/fanotify.h b/i686-linux-musl/include/sys/fanotify.h
new file mode 100644
index 0000000..10e5f15
--- /dev/null
+++ b/i686-linux-musl/include/sys/fanotify.h
@@ -0,0 +1,111 @@
+#ifndef _FANOTIFY_H
+#define _FANOTIFY_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <sys/statfs.h>
+
+struct fanotify_event_metadata {
+	unsigned event_len;
+	unsigned char vers;
+	unsigned char reserved;
+	unsigned short metadata_len;
+	unsigned long long mask
+#ifdef __GNUC__
+	__attribute__((__aligned__(8)))
+#endif
+	;
+	int fd;
+	int pid;
+};
+
+struct fanotify_event_info_header {
+	unsigned char info_type;
+	unsigned char pad;
+	unsigned short len;
+};
+
+struct fanotify_event_info_fid {
+	struct fanotify_event_info_header hdr;
+	fsid_t fsid;
+	unsigned char handle[];
+};
+
+struct fanotify_response {
+	int fd;
+	unsigned response;
+};
+
+#define FAN_ACCESS 0x01
+#define FAN_MODIFY 0x02
+#define FAN_ATTRIB 0x04
+#define FAN_CLOSE_WRITE 0x08
+#define FAN_CLOSE_NOWRITE 0x10
+#define FAN_OPEN 0x20
+#define FAN_MOVED_FROM 0x40
+#define FAN_MOVED_TO 0x80
+#define FAN_CREATE 0x100
+#define FAN_DELETE 0x200
+#define FAN_DELETE_SELF 0x400
+#define FAN_MOVE_SELF 0x800
+#define FAN_OPEN_EXEC 0x1000
+#define FAN_Q_OVERFLOW 0x4000
+#define FAN_OPEN_PERM 0x10000
+#define FAN_ACCESS_PERM 0x20000
+#define FAN_OPEN_EXEC_PERM 0x40000
+#define FAN_DIR_MODIFY 0x00080000
+#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 0x01
+#define FAN_NONBLOCK 0x02
+#define FAN_CLASS_NOTIF 0
+#define FAN_CLASS_CONTENT 0x04
+#define FAN_CLASS_PRE_CONTENT 0x08
+#define FAN_ALL_CLASS_BITS (FAN_CLASS_NOTIF | FAN_CLASS_CONTENT | FAN_CLASS_PRE_CONTENT)
+#define FAN_UNLIMITED_QUEUE 0x10
+#define FAN_UNLIMITED_MARKS 0x20
+#define FAN_ENABLE_AUDIT 0x40
+#define FAN_REPORT_TID 0x100
+#define FAN_REPORT_FID 0x200
+#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 0x01
+#define FAN_MARK_REMOVE 0x02
+#define FAN_MARK_DONT_FOLLOW 0x04
+#define FAN_MARK_ONLYDIR 0x08
+#define FAN_MARK_IGNORED_MASK 0x20
+#define FAN_MARK_IGNORED_SURV_MODIFY 0x40
+#define FAN_MARK_FLUSH 0x80
+#define FAN_MARK_INODE 0x00
+#define FAN_MARK_MOUNT 0x10
+#define FAN_MARK_FILESYSTEM 0x100
+#define FAN_MARK_TYPE_MASK (FAN_MARK_INODE | FAN_MARK_MOUNT | FAN_MARK_FILESYSTEM)
+#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
+#define FAN_EVENT_INFO_TYPE_FID 1
+#define FAN_EVENT_INFO_TYPE_DFID_NAME 2
+#define FAN_EVENT_INFO_TYPE_DFID 3
+#define FAN_ALLOW 0x01
+#define FAN_DENY 0x02
+#define FAN_AUDIT 0x10
+#define FAN_NOFD -1
+#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))
+
+int fanotify_init(unsigned, unsigned);
+int fanotify_mark(int, unsigned, unsigned long long, int, const char *);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/sys/fcntl.h b/i686-linux-musl/include/sys/fcntl.h
new file mode 100644
index 0000000..3dd928e
--- /dev/null
+++ b/i686-linux-musl/include/sys/fcntl.h
@@ -0,0 +1,2 @@
+#warning redirecting incorrect #include <sys/fcntl.h> to <fcntl.h>
+#include <fcntl.h>
diff --git a/i686-linux-musl/include/sys/file.h b/i686-linux-musl/include/sys/file.h
new file mode 100644
index 0000000..4fc83b9
--- /dev/null
+++ b/i686-linux-musl/include/sys/file.h
@@ -0,0 +1,21 @@
+#ifndef _SYS_FILE_H
+#define _SYS_FILE_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define LOCK_SH	1
+#define LOCK_EX	2
+#define LOCK_NB	4
+#define LOCK_UN	8
+
+#define L_SET 0
+#define L_INCR 1
+#define L_XTND 2
+
+int flock(int, int);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/sys/fsuid.h b/i686-linux-musl/include/sys/fsuid.h
new file mode 100644
index 0000000..c7a9b8f
--- /dev/null
+++ b/i686-linux-musl/include/sys/fsuid.h
@@ -0,0 +1,20 @@
+#ifndef _SYS_FSUID_H
+#define _SYS_FSUID_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __NEED_uid_t
+#define __NEED_gid_t
+
+#include <bits/alltypes.h>
+
+int setfsuid(uid_t);
+int setfsgid(gid_t);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/inotify.h b/i686-linux-musl/include/sys/inotify.h
new file mode 100644
index 0000000..69b5863
--- /dev/null
+++ b/i686-linux-musl/include/sys/inotify.h
@@ -0,0 +1,58 @@
+#ifndef _SYS_INOTIFY_H
+#define _SYS_INOTIFY_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+#include <fcntl.h>
+
+struct inotify_event {
+	int wd;
+	uint32_t mask, cookie, len;
+	char name[];
+};
+
+#define IN_CLOEXEC O_CLOEXEC
+#define IN_NONBLOCK O_NONBLOCK
+
+#define IN_ACCESS        0x00000001
+#define IN_MODIFY        0x00000002
+#define IN_ATTRIB        0x00000004
+#define IN_CLOSE_WRITE   0x00000008
+#define IN_CLOSE_NOWRITE 0x00000010
+#define IN_CLOSE         (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
+#define IN_OPEN          0x00000020
+#define IN_MOVED_FROM    0x00000040
+#define IN_MOVED_TO      0x00000080
+#define IN_MOVE          (IN_MOVED_FROM | IN_MOVED_TO)
+#define IN_CREATE        0x00000100
+#define IN_DELETE        0x00000200
+#define IN_DELETE_SELF   0x00000400
+#define IN_MOVE_SELF     0x00000800
+#define IN_ALL_EVENTS    0x00000fff
+
+#define IN_UNMOUNT       0x00002000
+#define IN_Q_OVERFLOW    0x00004000
+#define IN_IGNORED       0x00008000
+
+#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
+
+int inotify_init(void);
+int inotify_init1(int);
+int inotify_add_watch(int, const char *, uint32_t);
+int inotify_rm_watch(int, int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/io.h b/i686-linux-musl/include/sys/io.h
new file mode 100644
index 0000000..16658ce
--- /dev/null
+++ b/i686-linux-musl/include/sys/io.h
@@ -0,0 +1,17 @@
+#ifndef	_SYS_IO_H
+#define	_SYS_IO_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#include <bits/io.h>
+
+int iopl(int);
+int ioperm(unsigned long, unsigned long, int);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/sys/ioctl.h b/i686-linux-musl/include/sys/ioctl.h
new file mode 100644
index 0000000..a9a2346
--- /dev/null
+++ b/i686-linux-musl/include/sys/ioctl.h
@@ -0,0 +1,120 @@
+#ifndef	_SYS_IOCTL_H
+#define	_SYS_IOCTL_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __NEED_struct_winsize
+
+#include <bits/alltypes.h>
+#include <bits/ioctl.h>
+
+#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
+
+#define TIOCPKT_DATA       0
+#define TIOCPKT_FLUSHREAD  1
+#define TIOCPKT_FLUSHWRITE 2
+#define TIOCPKT_STOP       4
+#define TIOCPKT_START      8
+#define TIOCPKT_NOSTOP    16
+#define TIOCPKT_DOSTOP    32
+#define TIOCPKT_IOCTL     64
+
+#define TIOCSER_TEMT 1
+
+#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 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 SIOCDEVPRIVATE     0x89F0
+#define SIOCPROTOPRIVATE   0x89E0
+
+int ioctl (int, int, ...);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/sys/ipc.h b/i686-linux-musl/include/sys/ipc.h
new file mode 100644
index 0000000..9e366b7
--- /dev/null
+++ b/i686-linux-musl/include/sys/ipc.h
@@ -0,0 +1,42 @@
+#ifndef _SYS_IPC_H
+#define _SYS_IPC_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_uid_t
+#define __NEED_gid_t
+#define __NEED_mode_t
+#define __NEED_key_t
+
+#include <bits/alltypes.h>
+
+#define __ipc_perm_key __key
+#define __ipc_perm_seq __seq
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define __key key
+#define __seq seq
+#endif
+
+#include <bits/ipc.h>
+#include <bits/ipcstat.h>
+
+#define IPC_CREAT  01000
+#define IPC_EXCL   02000
+#define IPC_NOWAIT 04000
+
+#define IPC_RMID 0
+#define IPC_SET  1
+#define IPC_INFO 3
+
+#define IPC_PRIVATE ((key_t) 0)
+
+key_t ftok (const char *, int);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/sys/kd.h b/i686-linux-musl/include/sys/kd.h
new file mode 100644
index 0000000..42122b9
--- /dev/null
+++ b/i686-linux-musl/include/sys/kd.h
@@ -0,0 +1 @@
+#include <bits/kd.h>
diff --git a/i686-linux-musl/include/sys/klog.h b/i686-linux-musl/include/sys/klog.h
new file mode 100644
index 0000000..aa66684
--- /dev/null
+++ b/i686-linux-musl/include/sys/klog.h
@@ -0,0 +1,14 @@
+#ifndef	_SYS_KLOG_H
+#define	_SYS_KLOG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int klogctl (int, char *, int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/membarrier.h b/i686-linux-musl/include/sys/membarrier.h
new file mode 100644
index 0000000..11193ed
--- /dev/null
+++ b/i686-linux-musl/include/sys/membarrier.h
@@ -0,0 +1,21 @@
+#ifndef _SYS_MEMBARRIER_H
+#define _SYS_MEMBARRIER_H
+
+#define MEMBARRIER_CMD_QUERY 0
+#define MEMBARRIER_CMD_GLOBAL 1
+#define MEMBARRIER_CMD_GLOBAL_EXPEDITED 2
+#define MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED 4
+#define MEMBARRIER_CMD_PRIVATE_EXPEDITED 8
+#define MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED 16
+#define MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE 32
+#define MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE 64
+#define MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ 128
+#define MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ 256
+
+#define MEMBARRIER_CMD_SHARED MEMBARRIER_CMD_GLOBAL
+
+#define MEMBARRIER_CMD_FLAG_CPU 1
+
+int membarrier(int, int);
+
+#endif
diff --git a/i686-linux-musl/include/sys/mman.h b/i686-linux-musl/include/sys/mman.h
new file mode 100644
index 0000000..80a3baa
--- /dev/null
+++ b/i686-linux-musl/include/sys/mman.h
@@ -0,0 +1,152 @@
+#ifndef	_SYS_MMAN_H
+#define	_SYS_MMAN_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_mode_t
+#define __NEED_size_t
+#define __NEED_off_t
+
+#if defined(_GNU_SOURCE)
+#define __NEED_ssize_t
+#endif
+
+#include <bits/alltypes.h>
+
+#define MAP_FAILED ((void *) -1)
+
+#define MAP_SHARED     0x01
+#define MAP_PRIVATE    0x02
+#define MAP_SHARED_VALIDATE 0x03
+#define MAP_TYPE       0x0f
+#define MAP_FIXED      0x10
+#define MAP_ANON       0x20
+#define MAP_ANONYMOUS  MAP_ANON
+#define MAP_NORESERVE  0x4000
+#define MAP_GROWSDOWN  0x0100
+#define MAP_DENYWRITE  0x0800
+#define MAP_EXECUTABLE 0x1000
+#define MAP_LOCKED     0x2000
+#define MAP_POPULATE   0x8000
+#define MAP_NONBLOCK   0x10000
+#define MAP_STACK      0x20000
+#define MAP_HUGETLB    0x40000
+#define MAP_SYNC       0x80000
+#define MAP_FIXED_NOREPLACE 0x100000
+#define MAP_FILE       0
+
+#define MAP_HUGE_SHIFT 26
+#define MAP_HUGE_MASK  0x3f
+#define MAP_HUGE_16KB  (14 << 26)
+#define MAP_HUGE_64KB  (16 << 26)
+#define MAP_HUGE_512KB (19 << 26)
+#define MAP_HUGE_1MB   (20 << 26)
+#define MAP_HUGE_2MB   (21 << 26)
+#define MAP_HUGE_8MB   (23 << 26)
+#define MAP_HUGE_16MB  (24 << 26)
+#define MAP_HUGE_32MB  (25 << 26)
+#define MAP_HUGE_256MB (28 << 26)
+#define MAP_HUGE_512MB (29 << 26)
+#define MAP_HUGE_1GB   (30 << 26)
+#define MAP_HUGE_2GB   (31 << 26)
+#define MAP_HUGE_16GB  (34U << 26)
+
+#define PROT_NONE      0
+#define PROT_READ      1
+#define PROT_WRITE     2
+#define PROT_EXEC      4
+#define PROT_GROWSDOWN 0x01000000
+#define PROT_GROWSUP   0x02000000
+
+#define MS_ASYNC       1
+#define MS_INVALIDATE  2
+#define MS_SYNC        4
+
+#define MCL_CURRENT    1
+#define MCL_FUTURE     2
+#define MCL_ONFAULT    4
+
+#define POSIX_MADV_NORMAL     0
+#define POSIX_MADV_RANDOM     1
+#define POSIX_MADV_SEQUENTIAL 2
+#define POSIX_MADV_WILLNEED   3
+#define POSIX_MADV_DONTNEED   4
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define MADV_NORMAL      0
+#define MADV_RANDOM      1
+#define MADV_SEQUENTIAL  2
+#define MADV_WILLNEED    3
+#define MADV_DONTNEED    4
+#define MADV_FREE        8
+#define MADV_REMOVE      9
+#define MADV_DONTFORK    10
+#define MADV_DOFORK      11
+#define MADV_MERGEABLE   12
+#define MADV_UNMERGEABLE 13
+#define MADV_HUGEPAGE    14
+#define MADV_NOHUGEPAGE  15
+#define MADV_DONTDUMP    16
+#define MADV_DODUMP      17
+#define MADV_WIPEONFORK  18
+#define MADV_KEEPONFORK  19
+#define MADV_COLD        20
+#define MADV_PAGEOUT     21
+#define MADV_HWPOISON    100
+#define MADV_SOFT_OFFLINE 101
+#endif
+
+#ifdef _GNU_SOURCE
+#define MREMAP_MAYMOVE 1
+#define MREMAP_FIXED 2
+#define MREMAP_DONTUNMAP 4
+
+#define MLOCK_ONFAULT 0x01
+
+#define MFD_CLOEXEC 0x0001U
+#define MFD_ALLOW_SEALING 0x0002U
+#define MFD_HUGETLB 0x0004U
+#endif
+
+#include <bits/mman.h>
+
+void *mmap (void *, size_t, int, int, int, off_t);
+int munmap (void *, size_t);
+
+int mprotect (void *, size_t, int);
+int msync (void *, size_t, int);
+
+int posix_madvise (void *, size_t, int);
+
+int mlock (const void *, size_t);
+int munlock (const void *, size_t);
+int mlockall (int);
+int munlockall (void);
+
+#ifdef _GNU_SOURCE
+void *mremap (void *, size_t, size_t, int, ...);
+int remap_file_pages (void *, size_t, int, size_t, int);
+int memfd_create (const char *, unsigned);
+int mlock2 (const void *, size_t, unsigned);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+int madvise (void *, size_t, int);
+int mincore (void *, size_t, unsigned char *);
+#endif
+
+int shm_open (const char *, int, mode_t);
+int shm_unlink (const char *);
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define mmap64 mmap
+#define off64_t off_t
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/sys/mount.h b/i686-linux-musl/include/sys/mount.h
new file mode 100644
index 0000000..09bd6e9
--- /dev/null
+++ b/i686-linux-musl/include/sys/mount.h
@@ -0,0 +1,75 @@
+#ifndef _SYS_MOUNT_H
+#define _SYS_MOUNT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <sys/ioctl.h>
+
+#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 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_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_NOREMOTELOCK (1<<27)
+#define MS_NOSEC       (1<<28)
+#define MS_BORN        (1<<29)
+#define MS_ACTIVE      (1<<30)
+#define MS_NOUSER      (1U<<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 MNT_FORCE       1
+#define MNT_DETACH      2
+#define MNT_EXPIRE      4
+#define UMOUNT_NOFOLLOW 8
+
+int mount(const char *, const char *, const char *, unsigned long, const void *);
+int umount(const char *);
+int umount2(const char *, int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/msg.h b/i686-linux-musl/include/sys/msg.h
new file mode 100644
index 0000000..db5c62a
--- /dev/null
+++ b/i686-linux-musl/include/sys/msg.h
@@ -0,0 +1,53 @@
+#ifndef _SYS_MSG_H
+#define _SYS_MSG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <sys/ipc.h>
+
+#define __NEED_pid_t
+#define __NEED_key_t
+#define __NEED_time_t
+#define __NEED_size_t
+#define __NEED_ssize_t
+
+#include <bits/alltypes.h>
+
+typedef unsigned long msgqnum_t;
+typedef unsigned long msglen_t;
+
+#include <bits/msg.h>
+
+#define __msg_cbytes msg_cbytes
+
+#define MSG_NOERROR 010000
+#define MSG_EXCEPT  020000
+
+#define MSG_STAT (11 | (IPC_STAT & 0x100))
+#define MSG_INFO 12
+#define MSG_STAT_ANY (13 | (IPC_STAT & 0x100))
+
+struct msginfo {
+	int msgpool, msgmap, msgmax, msgmnb, msgmni, msgssz, msgtql;
+	unsigned short msgseg;
+};
+
+int msgctl (int, int, struct msqid_ds *);
+int msgget (key_t, int);
+ssize_t msgrcv (int, void *, size_t, long, int);
+int msgsnd (int, const void *, size_t, int);
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+struct msgbuf {
+	long mtype;
+	char mtext[1];
+};
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/mtio.h b/i686-linux-musl/include/sys/mtio.h
new file mode 100644
index 0000000..f16a529
--- /dev/null
+++ b/i686-linux-musl/include/sys/mtio.h
@@ -0,0 +1,188 @@
+#ifndef _SYS_MTIO_H
+#define _SYS_MTIO_H
+
+#include <sys/types.h>
+#include <sys/ioctl.h>
+
+struct mtop {
+	short mt_op;
+	int mt_count;
+};
+
+#define _IOT_mtop _IOT (_IOTS (short), 1, _IOTS (int), 1, 0, 0)
+#define _IOT_mtget _IOT (_IOTS (long), 7, 0, 0, 0, 0)
+#define _IOT_mtpos _IOT_SIMPLE (long)
+#define _IOT_mtconfiginfo _IOT (_IOTS (long), 2, _IOTS (short), 3, _IOTS (long), 1)
+
+
+#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
+
+struct mtget {
+	long mt_type;
+	long mt_resid;
+	long mt_dsreg;
+	long mt_gstat;
+	long mt_erreg;
+	int mt_fileno;
+	int 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_ISSCSI1		0x71
+#define MT_ISSCSI2		0x72
+#define MT_ISFTAPE_UNKNOWN	0x800000
+#define MT_ISFTAPE_FLAG		0x800000
+
+struct mt_tape_info {
+	long t_type;
+	char *t_name;
+};
+
+#define MT_TAPE_INFO \
+{									      \
+	{MT_ISUNKNOWN,		"Unknown type of tape device"},		      \
+	{MT_ISQIC02,		"Generic QIC-02 tape streamer"},	      \
+	{MT_ISWT5150,		"Wangtek 5150, QIC-150"},		      \
+	{MT_ISARCHIVE_5945L2,	"Archive 5945L-2"},			      \
+	{MT_ISCMSJ500,		"CMS Jumbo 500"},			      \
+	{MT_ISTDC3610,		"Tandberg TDC 3610, QIC-24"},		      \
+	{MT_ISARCHIVE_VP60I,	"Archive VP60i, QIC-02"},		      \
+	{MT_ISARCHIVE_2150L,	"Archive Viper 2150L"},			      \
+	{MT_ISARCHIVE_2060L,	"Archive Viper 2060L"},			      \
+	{MT_ISARCHIVESC499,	"Archive SC-499 QIC-36 controller"},	      \
+	{MT_ISQIC02_ALL_FEATURES, "Generic QIC-02 tape, all features"},	      \
+	{MT_ISWT5099EEN24,	"Wangtek 5099-een24, 60MB"},		      \
+	{MT_ISTEAC_MT2ST,	"Teac MT-2ST 155mb data cassette drive"},     \
+	{MT_ISEVEREX_FT40A,	"Everex FT40A, QIC-40"},		      \
+	{MT_ISSCSI1,		"Generic SCSI-1 tape"},			      \
+	{MT_ISSCSI2,		"Generic SCSI-2 tape"},			      \
+	{0, 0}								      \
+}
+
+struct mtpos {
+	long mt_blkno;
+};
+
+struct mtconfiginfo  {
+	long mt_type;
+	long ifc_type;
+	unsigned short irqnr;
+	unsigned short dmanr;
+	unsigned short port;
+	unsigned long debug;
+	unsigned have_dens:1;
+	unsigned have_bsf:1;
+	unsigned have_fsr:1;
+	unsigned have_bsr:1;
+	unsigned have_eod:1;
+	unsigned have_seek:1;
+	unsigned have_tell:1;
+	unsigned have_ras1:1;
+	unsigned have_ras2:1;
+	unsigned have_ras3:1;
+	unsigned have_qfa:1;
+	unsigned pad1:5;
+	char reserved[10];
+};
+
+#define	MTIOCTOP _IOW('m', 1, struct mtop)
+#define	MTIOCGET _IOR('m', 2, struct mtget)
+#define	MTIOCPOS _IOR('m', 3, struct mtpos)
+
+#define	MTIOCGETCONFIG	_IOR('m', 4, struct mtconfiginfo)
+#define	MTIOCSETCONFIG	_IOW('m', 5, struct mtconfiginfo)
+
+#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 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_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_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
+#ifndef DEFTAPE
+# define DEFTAPE	"/dev/tape"
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/param.h b/i686-linux-musl/include/sys/param.h
new file mode 100644
index 0000000..ce6b801
--- /dev/null
+++ b/i686-linux-musl/include/sys/param.h
@@ -0,0 +1,35 @@
+#ifndef _SYS_PARAM_H
+#define _SYS_PARAM_H
+
+#define MAXSYMLINKS 20
+#define MAXHOSTNAMELEN 64
+#define MAXNAMLEN 255
+#define MAXPATHLEN 4096
+#define NBBY 8
+#define NGROUPS 32
+#define CANBSIZ 255
+#define NOFILE 256
+#define NCARGS 131072
+#define DEV_BSIZE 512
+#define NOGROUP (-1)
+
+#undef MIN
+#undef MAX
+#define MIN(a,b) (((a)<(b))?(a):(b))
+#define MAX(a,b) (((a)>(b))?(a):(b))
+
+#define __bitop(x,i,o) ((x)[(i)/8] o (1<<(i)%8))
+#define setbit(x,i) __bitop(x,i,|=)
+#define clrbit(x,i) __bitop(x,i,&=~)
+#define isset(x,i) __bitop(x,i,&)
+#define isclr(x,i) !isset(x,i)
+
+#define howmany(n,d) (((n)+((d)-1))/(d))
+#define roundup(n,d) (howmany(n,d)*(d))
+#define powerof2(n) !(((n)-1) & (n))
+
+#include <sys/resource.h>
+#include <endian.h>
+#include <limits.h>
+
+#endif
diff --git a/i686-linux-musl/include/sys/personality.h b/i686-linux-musl/include/sys/personality.h
new file mode 100644
index 0000000..411dc47
--- /dev/null
+++ b/i686-linux-musl/include/sys/personality.h
@@ -0,0 +1,49 @@
+#ifndef _PERSONALITY_H
+#define _PERSONALITY_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define UNAME26            0x0020000
+#define ADDR_NO_RANDOMIZE  0x0040000
+#define FDPIC_FUNCPTRS     0x0080000
+#define MMAP_PAGE_ZERO     0x0100000
+#define ADDR_COMPAT_LAYOUT 0x0200000
+#define READ_IMPLIES_EXEC  0x0400000
+#define ADDR_LIMIT_32BIT   0x0800000
+#define SHORT_INODE        0x1000000
+#define WHOLE_SECONDS      0x2000000
+#define STICKY_TIMEOUTS    0x4000000
+#define ADDR_LIMIT_3GB     0x8000000
+
+#define PER_LINUX 0
+#define PER_LINUX_32BIT ADDR_LIMIT_32BIT
+#define PER_LINUX_FDPIC FDPIC_FUNCPTRS
+#define PER_SVR4 (1 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO)
+#define PER_SVR3 (2 | STICKY_TIMEOUTS | SHORT_INODE)
+#define PER_SCOSVR3 (3 | STICKY_TIMEOUTS | WHOLE_SECONDS | SHORT_INODE)
+#define PER_OSR5 (3 | STICKY_TIMEOUTS | WHOLE_SECONDS)
+#define PER_WYSEV386 (4 | STICKY_TIMEOUTS | SHORT_INODE)
+#define PER_ISCR4 (5 | STICKY_TIMEOUTS)
+#define PER_BSD 6
+#define PER_SUNOS (6 | STICKY_TIMEOUTS)
+#define PER_XENIX (7 | STICKY_TIMEOUTS | SHORT_INODE)
+#define PER_LINUX32 8
+#define PER_LINUX32_3GB (8 | ADDR_LIMIT_3GB)
+#define PER_IRIX32 (9 | STICKY_TIMEOUTS)
+#define PER_IRIXN32 (0xa | STICKY_TIMEOUTS)
+#define PER_IRIX64 (0x0b | STICKY_TIMEOUTS)
+#define PER_RISCOS 0xc
+#define PER_SOLARIS (0xd | STICKY_TIMEOUTS)
+#define PER_UW7 (0xe | STICKY_TIMEOUTS | MMAP_PAGE_ZERO)
+#define PER_OSF4 0xf
+#define PER_HPUX 0x10
+#define PER_MASK 0xff
+
+int personality(unsigned long);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/sys/poll.h b/i686-linux-musl/include/sys/poll.h
new file mode 100644
index 0000000..9917040
--- /dev/null
+++ b/i686-linux-musl/include/sys/poll.h
@@ -0,0 +1,2 @@
+#warning redirecting incorrect #include <sys/poll.h> to <poll.h>
+#include <poll.h>
diff --git a/i686-linux-musl/include/sys/prctl.h b/i686-linux-musl/include/sys/prctl.h
new file mode 100644
index 0000000..4ba73f4
--- /dev/null
+++ b/i686-linux-musl/include/sys/prctl.h
@@ -0,0 +1,177 @@
+#ifndef _SYS_PRCTL_H
+#define _SYS_PRCTL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.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 {
+	uint64_t start_code;
+	uint64_t end_code;
+	uint64_t start_data;
+	uint64_t end_data;
+	uint64_t start_brk;
+	uint64_t brk;
+	uint64_t start_stack;
+	uint64_t arg_start;
+	uint64_t arg_end;
+	uint64_t env_start;
+	uint64_t env_end;
+	uint64_t *auxv;
+	uint32_t auxv_size;
+	uint32_t exe_fd;
+};
+
+#define PR_SET_PTRACER 0x59616d61
+#define PR_SET_PTRACER_ANY (-1UL)
+
+#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_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_SHIFT 1
+#define PR_MTE_TCF_NONE  (0UL << 1)
+#define PR_MTE_TCF_SYNC  (1UL << 1)
+#define PR_MTE_TCF_ASYNC (2UL << 1)
+#define PR_MTE_TCF_MASK  (3UL << 1)
+#define PR_MTE_TAG_SHIFT 3
+#define PR_MTE_TAG_MASK  (0xffffUL << 3)
+
+#define PR_SET_IO_FLUSHER 57
+#define PR_GET_IO_FLUSHER 58
+
+int prctl (int, ...);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/procfs.h b/i686-linux-musl/include/sys/procfs.h
new file mode 100644
index 0000000..38e58c1
--- /dev/null
+++ b/i686-linux-musl/include/sys/procfs.h
@@ -0,0 +1,63 @@
+#ifndef _SYS_PROCFS_H
+#define _SYS_PROCFS_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/user.h>
+
+struct elf_siginfo {
+	int si_signo;
+	int si_code;
+	int si_errno;
+};
+
+struct elf_prstatus {
+	struct elf_siginfo pr_info;
+	short int pr_cursig;
+	unsigned long int pr_sigpend;
+	unsigned long int pr_sighold;
+	pid_t pr_pid;
+	pid_t pr_ppid;
+	pid_t pr_pgrp;
+	pid_t pr_sid;
+	struct {
+		long tv_sec, tv_usec;
+	} pr_utime, pr_stime, pr_cutime, pr_cstime;
+	elf_gregset_t pr_reg;
+	int pr_fpvalid;
+};
+
+#define ELF_PRARGSZ 80
+
+struct elf_prpsinfo {
+	char pr_state;
+	char pr_sname;
+	char pr_zomb;
+	char pr_nice;
+	unsigned long int pr_flag;
+#if UINTPTR_MAX == 0xffffffff
+	unsigned short int pr_uid;
+	unsigned short int pr_gid;
+#else
+	unsigned int pr_uid;
+	unsigned int pr_gid;
+#endif
+	int pr_pid, pr_ppid, pr_pgrp, pr_sid;
+	char pr_fname[16];
+	char pr_psargs[ELF_PRARGSZ];
+};
+
+typedef void *psaddr_t;
+typedef elf_gregset_t prgregset_t;
+typedef elf_fpregset_t prfpregset_t;
+typedef pid_t lwpid_t;
+typedef struct elf_prstatus prstatus_t;
+typedef struct elf_prpsinfo prpsinfo_t;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/sys/ptrace.h b/i686-linux-musl/include/sys/ptrace.h
new file mode 100644
index 0000000..5d62a98
--- /dev/null
+++ b/i686-linux-musl/include/sys/ptrace.h
@@ -0,0 +1,138 @@
+#ifndef _SYS_PTRACE_H
+#define _SYS_PTRACE_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+
+#define PTRACE_TRACEME 0
+#define PT_TRACE_ME PTRACE_TRACEME
+
+#define PTRACE_PEEKTEXT 1
+#define PTRACE_PEEKDATA 2
+#define PTRACE_PEEKUSER 3
+#define PTRACE_POKETEXT 4
+#define PTRACE_POKEDATA 5
+#define PTRACE_POKEUSER 6
+#define PTRACE_CONT 7
+#define PTRACE_KILL 8
+#define PTRACE_SINGLESTEP 9
+#define PTRACE_GETREGS 12
+#define PTRACE_SETREGS 13
+#define PTRACE_GETFPREGS 14
+#define PTRACE_SETFPREGS 15
+#define PTRACE_ATTACH 16
+#define PTRACE_DETACH 17
+#define PTRACE_GETFPXREGS 18
+#define PTRACE_SETFPXREGS 19
+#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
+#define PTRACE_GETSIGMASK 0x420a
+#define PTRACE_SETSIGMASK 0x420b
+#define PTRACE_SECCOMP_GET_FILTER 0x420c
+#define PTRACE_SECCOMP_GET_METADATA 0x420d
+#define PTRACE_GET_SYSCALL_INFO 0x420e
+
+#define PT_READ_I PTRACE_PEEKTEXT
+#define PT_READ_D PTRACE_PEEKDATA
+#define PT_READ_U PTRACE_PEEKUSER
+#define PT_WRITE_I PTRACE_POKETEXT
+#define PT_WRITE_D PTRACE_POKEDATA
+#define PT_WRITE_U PTRACE_POKEUSER
+#define PT_CONTINUE PTRACE_CONT
+#define PT_KILL PTRACE_KILL
+#define PT_STEP PTRACE_SINGLESTEP
+#define PT_GETREGS PTRACE_GETREGS
+#define PT_SETREGS PTRACE_SETREGS
+#define PT_GETFPREGS PTRACE_GETFPREGS
+#define PT_SETFPREGS PTRACE_SETFPREGS
+#define PT_ATTACH PTRACE_ATTACH
+#define PT_DETACH PTRACE_DETACH
+#define PT_GETFPXREGS PTRACE_GETFPXREGS
+#define PT_SETFPXREGS PTRACE_SETFPXREGS
+#define PT_SYSCALL PTRACE_SYSCALL
+#define PT_SETOPTIONS PTRACE_SETOPTIONS
+#define PT_GETEVENTMSG PTRACE_GETEVENTMSG
+#define PT_GETSIGINFO PTRACE_GETSIGINFO
+#define PT_SETSIGINFO PTRACE_SETSIGINFO
+
+#define PTRACE_O_TRACESYSGOOD   0x00000001
+#define PTRACE_O_TRACEFORK      0x00000002
+#define PTRACE_O_TRACEVFORK     0x00000004
+#define PTRACE_O_TRACECLONE     0x00000008
+#define PTRACE_O_TRACEEXEC      0x00000010
+#define PTRACE_O_TRACEVFORKDONE 0x00000020
+#define PTRACE_O_TRACEEXIT      0x00000040
+#define PTRACE_O_TRACESECCOMP   0x00000080
+#define PTRACE_O_EXITKILL       0x00100000
+#define PTRACE_O_SUSPEND_SECCOMP 0x00200000
+#define PTRACE_O_MASK           0x003000ff
+
+#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_PEEKSIGINFO_SHARED 1
+
+#define PTRACE_SYSCALL_INFO_NONE 0
+#define PTRACE_SYSCALL_INFO_ENTRY 1
+#define PTRACE_SYSCALL_INFO_EXIT 2
+#define PTRACE_SYSCALL_INFO_SECCOMP 3
+
+#include <bits/ptrace.h>
+
+struct __ptrace_peeksiginfo_args {
+	uint64_t off;
+	uint32_t flags;
+	int32_t nr;
+};
+
+struct __ptrace_seccomp_metadata {
+	uint64_t filter_off;
+	uint64_t flags;
+};
+
+struct __ptrace_syscall_info {
+	uint8_t op;
+	uint8_t __pad[3];
+	uint32_t arch;
+	uint64_t instruction_pointer;
+	uint64_t stack_pointer;
+	union {
+		struct {
+			uint64_t nr;
+			uint64_t args[6];
+		} entry;
+		struct {
+			int64_t rval;
+			uint8_t is_error;
+		} exit;
+		struct {
+			uint64_t nr;
+			uint64_t args[6];
+			uint32_t ret_data;
+		} seccomp;
+	};
+};
+
+long ptrace(int, ...);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/sys/quota.h b/i686-linux-musl/include/sys/quota.h
new file mode 100644
index 0000000..3ed7378
--- /dev/null
+++ b/i686-linux-musl/include/sys/quota.h
@@ -0,0 +1,102 @@
+#ifndef _SYS_QUOTA_H
+#define _SYS_QUOTA_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+
+#define _LINUX_QUOTA_VERSION 2
+
+#define dbtob(num) ((num) << 10)
+#define btodb(num) ((num) >> 10)
+#define fs_to_dq_blocks(num, blksize) (((num) * (blksize)) / 1024)
+
+#define MAX_IQ_TIME 604800
+#define MAX_DQ_TIME 604800
+
+#define MAXQUOTAS 2
+#define USRQUOTA  0
+#define GRPQUOTA  1
+
+#define INITQFNAMES { "user", "group", "undefined" };
+
+#define QUOTAFILENAME "quota"
+#define QUOTAGROUP "staff"
+
+#define NR_DQHASH 43
+#define NR_DQUOTS 256
+
+#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	QFMT_VFS_OLD 1
+#define	QFMT_VFS_V0 2
+#define QFMT_OCFS2 3
+#define	QFMT_VFS_V1 4
+
+#define QIF_BLIMITS	1
+#define QIF_SPACE	2
+#define QIF_ILIMITS	4
+#define QIF_INODES	8
+#define QIF_BTIME	16
+#define QIF_ITIME	32
+#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 dqblk {
+	uint64_t dqb_bhardlimit;
+	uint64_t dqb_bsoftlimit;
+	uint64_t dqb_curspace;
+	uint64_t dqb_ihardlimit;
+	uint64_t dqb_isoftlimit;
+	uint64_t dqb_curinodes;
+	uint64_t dqb_btime;
+	uint64_t dqb_itime;
+	uint32_t dqb_valid;
+};
+
+#define	dq_bhardlimit	dq_dqb.dqb_bhardlimit
+#define	dq_bsoftlimit	dq_dqb.dqb_bsoftlimit
+#define dq_curspace	dq_dqb.dqb_curspace
+#define dq_valid	dq_dqb.dqb_valid
+#define	dq_ihardlimit	dq_dqb.dqb_ihardlimit
+#define	dq_isoftlimit	dq_dqb.dqb_isoftlimit
+#define	dq_curinodes	dq_dqb.dqb_curinodes
+#define	dq_btime	dq_dqb.dqb_btime
+#define	dq_itime	dq_dqb.dqb_itime
+
+#define dqoff(UID)      ((long long)(UID) * sizeof (struct dqblk))
+
+#define IIF_BGRACE	1
+#define IIF_IGRACE	2
+#define IIF_FLAGS	4
+#define IIF_ALL		(IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)
+
+struct dqinfo {
+	uint64_t dqi_bgrace;
+	uint64_t dqi_igrace;
+	uint32_t dqi_flags;
+	uint32_t dqi_valid;
+};
+
+int quotactl(int, const char *, int, char *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/random.h b/i686-linux-musl/include/sys/random.h
new file mode 100644
index 0000000..59e40ab
--- /dev/null
+++ b/i686-linux-musl/include/sys/random.h
@@ -0,0 +1,20 @@
+#ifndef _SYS_RANDOM_H
+#define _SYS_RANDOM_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __NEED_size_t
+#define __NEED_ssize_t
+#include <bits/alltypes.h>
+
+#define GRND_NONBLOCK	0x0001
+#define GRND_RANDOM	0x0002
+#define GRND_INSECURE	0x0004
+
+ssize_t getrandom(void *, size_t, unsigned);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/sys/reboot.h b/i686-linux-musl/include/sys/reboot.h
new file mode 100644
index 0000000..9702edd
--- /dev/null
+++ b/i686-linux-musl/include/sys/reboot.h
@@ -0,0 +1,20 @@
+#ifndef _SYS_REBOOT_H
+#define _SYS_REBOOT_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define RB_AUTOBOOT     0x01234567
+#define RB_HALT_SYSTEM  0xcdef0123
+#define RB_ENABLE_CAD   0x89abcdef
+#define RB_DISABLE_CAD  0
+#define RB_POWER_OFF    0x4321fedc
+#define RB_SW_SUSPEND   0xd000fce2
+#define RB_KEXEC        0x45584543
+
+int reboot(int);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/sys/reg.h b/i686-linux-musl/include/sys/reg.h
new file mode 100644
index 0000000..b47452d
--- /dev/null
+++ b/i686-linux-musl/include/sys/reg.h
@@ -0,0 +1,9 @@
+#ifndef _SYS_REG_H
+#define _SYS_REG_H
+
+#include <limits.h>
+#include <unistd.h>
+
+#include <bits/reg.h>
+
+#endif
diff --git a/i686-linux-musl/include/sys/resource.h b/i686-linux-musl/include/sys/resource.h
new file mode 100644
index 0000000..3068328
--- /dev/null
+++ b/i686-linux-musl/include/sys/resource.h
@@ -0,0 +1,116 @@
+#ifndef	_SYS_RESOURCE_H
+#define	_SYS_RESOURCE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <sys/time.h>
+
+#define __NEED_id_t
+
+#ifdef _GNU_SOURCE
+#define __NEED_pid_t
+#endif
+
+#include <bits/alltypes.h>
+#include <bits/resource.h>
+
+typedef unsigned long long rlim_t;
+
+struct rlimit {
+	rlim_t rlim_cur;
+	rlim_t rlim_max;
+};
+
+struct rusage {
+	struct timeval ru_utime;
+	struct timeval ru_stime;
+	/* linux extentions, but useful */
+	long	ru_maxrss;
+	long	ru_ixrss;
+	long	ru_idrss;
+	long	ru_isrss;
+	long	ru_minflt;
+	long	ru_majflt;
+	long	ru_nswap;
+	long	ru_inblock;
+	long	ru_oublock;
+	long	ru_msgsnd;
+	long	ru_msgrcv;
+	long	ru_nsignals;
+	long	ru_nvcsw;
+	long	ru_nivcsw;
+	/* room for more... */
+	long    __reserved[16];
+};
+
+int getrlimit (int, struct rlimit *);
+int setrlimit (int, const struct rlimit *);
+int getrusage (int, struct rusage *);
+
+int getpriority (int, id_t);
+int setpriority (int, id_t, int);
+
+#ifdef _GNU_SOURCE
+int prlimit(pid_t, int, const struct rlimit *, struct rlimit *);
+#define prlimit64 prlimit
+#endif
+
+#define PRIO_MIN (-20)
+#define PRIO_MAX 20
+
+#define PRIO_PROCESS 0
+#define PRIO_PGRP    1
+#define PRIO_USER    2
+
+#define RUSAGE_SELF     0
+#define RUSAGE_CHILDREN (-1)
+#define RUSAGE_THREAD   1
+
+#define RLIM_INFINITY (~0ULL)
+#define RLIM_SAVED_CUR RLIM_INFINITY
+#define RLIM_SAVED_MAX RLIM_INFINITY
+
+#define RLIMIT_CPU     0
+#define RLIMIT_FSIZE   1
+#define RLIMIT_DATA    2
+#define RLIMIT_STACK   3
+#define RLIMIT_CORE    4
+#ifndef RLIMIT_RSS
+#define RLIMIT_RSS     5
+#define RLIMIT_NPROC   6
+#define RLIMIT_NOFILE  7
+#define RLIMIT_MEMLOCK 8
+#define RLIMIT_AS      9
+#endif
+#define RLIMIT_LOCKS   10
+#define RLIMIT_SIGPENDING 11
+#define RLIMIT_MSGQUEUE 12
+#define RLIMIT_NICE    13
+#define RLIMIT_RTPRIO  14
+#define RLIMIT_RTTIME  15
+#define RLIMIT_NLIMITS 16
+
+#define RLIM_NLIMITS RLIMIT_NLIMITS
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define RLIM64_INFINITY RLIM_INFINITY
+#define RLIM64_SAVED_CUR RLIM_SAVED_CUR
+#define RLIM64_SAVED_MAX RLIM_SAVED_MAX
+#define getrlimit64 getrlimit
+#define setrlimit64 setrlimit
+#define rlimit64 rlimit
+#define rlim64_t rlim_t
+#endif
+
+#if _REDIR_TIME64
+__REDIR(getrusage, __getrusage_time64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/select.h b/i686-linux-musl/include/sys/select.h
new file mode 100644
index 0000000..b3bab1d
--- /dev/null
+++ b/i686-linux-musl/include/sys/select.h
@@ -0,0 +1,46 @@
+#ifndef _SYS_SELECT_H
+#define _SYS_SELECT_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_size_t
+#define __NEED_time_t
+#define __NEED_suseconds_t
+#define __NEED_struct_timeval
+#define __NEED_struct_timespec
+#define __NEED_sigset_t
+
+#include <bits/alltypes.h>
+
+#define FD_SETSIZE 1024
+
+typedef unsigned long fd_mask;
+
+typedef struct {
+	unsigned long fds_bits[FD_SETSIZE / 8 / sizeof(long)];
+} fd_set;
+
+#define FD_ZERO(s) do { int __i; unsigned long *__b=(s)->fds_bits; for(__i=sizeof (fd_set)/sizeof (long); __i; __i--) *__b++=0; } while(0)
+#define FD_SET(d, s)   ((s)->fds_bits[(d)/(8*sizeof(long))] |= (1UL<<((d)%(8*sizeof(long)))))
+#define FD_CLR(d, s)   ((s)->fds_bits[(d)/(8*sizeof(long))] &= ~(1UL<<((d)%(8*sizeof(long)))))
+#define FD_ISSET(d, s) !!((s)->fds_bits[(d)/(8*sizeof(long))] & (1UL<<((d)%(8*sizeof(long)))))
+
+int select (int, fd_set *__restrict, fd_set *__restrict, fd_set *__restrict, struct timeval *__restrict);
+int pselect (int, fd_set *__restrict, fd_set *__restrict, fd_set *__restrict, const struct timespec *__restrict, const sigset_t *__restrict);
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define NFDBITS (8*(int)sizeof(long))
+#endif
+
+#if _REDIR_TIME64
+__REDIR(select, __select_time64);
+__REDIR(pselect, __pselect_time64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/sys/sem.h b/i686-linux-musl/include/sys/sem.h
new file mode 100644
index 0000000..a747784
--- /dev/null
+++ b/i686-linux-musl/include/sys/sem.h
@@ -0,0 +1,72 @@
+#ifndef _SYS_SEM_H
+#define _SYS_SEM_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_size_t
+#define __NEED_pid_t
+#define __NEED_time_t
+#ifdef _GNU_SOURCE
+#define __NEED_struct_timespec
+#endif
+#include <bits/alltypes.h>
+
+#include <sys/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
+
+#include <bits/sem.h>
+
+#define _SEM_SEMUN_UNDEFINED 1
+
+#define SEM_STAT (18 | (IPC_STAT & 0x100))
+#define SEM_INFO 19
+#define SEM_STAT_ANY (20 | (IPC_STAT & 0x100))
+
+struct  seminfo {
+	int semmap;
+	int semmni;
+	int semmns;
+	int semmnu;
+	int semmsl;
+	int semopm;
+	int semume;
+	int semusz;
+	int semvmx;
+	int semaem;
+};
+
+struct sembuf {
+	unsigned short sem_num;
+	short sem_op;
+	short sem_flg;
+};
+
+int semctl(int, int, int, ...);
+int semget(key_t, int, int);
+int semop(int, struct sembuf *, size_t);
+
+#ifdef _GNU_SOURCE
+int semtimedop(int, struct sembuf *, size_t, const struct timespec *);
+#endif
+
+#if _REDIR_TIME64
+#ifdef _GNU_SOURCE
+__REDIR(semtimedop, __semtimedop_time64);
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/sys/sendfile.h b/i686-linux-musl/include/sys/sendfile.h
new file mode 100644
index 0000000..e7570d8
--- /dev/null
+++ b/i686-linux-musl/include/sys/sendfile.h
@@ -0,0 +1,22 @@
+#ifndef _SYS_SENDFILE_H
+#define _SYS_SENDFILE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <unistd.h>
+
+ssize_t sendfile(int, int, off_t *, size_t);
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define sendfile64 sendfile
+#define off64_t off_t
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/shm.h b/i686-linux-musl/include/sys/shm.h
new file mode 100644
index 0000000..fd708ca
--- /dev/null
+++ b/i686-linux-musl/include/sys/shm.h
@@ -0,0 +1,70 @@
+#ifndef _SYS_SHM_H
+#define _SYS_SHM_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_time_t
+#define __NEED_size_t
+#define __NEED_pid_t
+
+#include <bits/alltypes.h>
+
+#include <sys/ipc.h>
+
+#ifdef _GNU_SOURCE
+#define __used_ids used_ids
+#define __swap_attempts swap_attempts
+#define __swap_successes swap_successes
+#endif
+
+#include <bits/shm.h>
+
+#define SHM_R 0400
+#define SHM_W 0200
+
+#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 | (IPC_STAT & 0x100))
+#define SHM_INFO 14
+#define SHM_STAT_ANY (15 | (IPC_STAT & 0x100))
+#define SHM_DEST 01000
+#define SHM_LOCKED 02000
+#define SHM_HUGETLB 04000
+#define SHM_NORESERVE 010000
+
+#define SHM_HUGE_SHIFT 26
+#define SHM_HUGE_MASK  0x3f
+#define SHM_HUGE_64KB  (16 << 26)
+#define SHM_HUGE_512KB (19 << 26)
+#define SHM_HUGE_1MB   (20 << 26)
+#define SHM_HUGE_2MB   (21 << 26)
+#define SHM_HUGE_8MB   (23 << 26)
+#define SHM_HUGE_16MB  (24 << 26)
+#define SHM_HUGE_32MB  (25 << 26)
+#define SHM_HUGE_256MB (28 << 26)
+#define SHM_HUGE_512MB (29 << 26)
+#define SHM_HUGE_1GB   (30 << 26)
+#define SHM_HUGE_2GB   (31 << 26)
+#define SHM_HUGE_16GB  (34U << 26)
+
+typedef unsigned long shmatt_t;
+
+void *shmat(int, const void *, int);
+int shmctl(int, int, struct shmid_ds *);
+int shmdt(const void *);
+int shmget(key_t, size_t, int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/signal.h b/i686-linux-musl/include/sys/signal.h
new file mode 100644
index 0000000..45bdcc6
--- /dev/null
+++ b/i686-linux-musl/include/sys/signal.h
@@ -0,0 +1,2 @@
+#warning redirecting incorrect #include <sys/signal.h> to <signal.h>
+#include <signal.h>
diff --git a/i686-linux-musl/include/sys/signalfd.h b/i686-linux-musl/include/sys/signalfd.h
new file mode 100644
index 0000000..e881e2c
--- /dev/null
+++ b/i686-linux-musl/include/sys/signalfd.h
@@ -0,0 +1,49 @@
+#ifndef _SYS_SIGNALFD_H
+#define _SYS_SIGNALFD_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+#include <fcntl.h>
+
+#define __NEED_sigset_t
+
+#include <bits/alltypes.h>
+
+#define SFD_CLOEXEC O_CLOEXEC
+#define SFD_NONBLOCK O_NONBLOCK
+
+int signalfd(int, const sigset_t *, int);
+
+struct signalfd_siginfo {
+	uint32_t  ssi_signo;
+	int32_t   ssi_errno;
+	int32_t   ssi_code;
+	uint32_t  ssi_pid;
+	uint32_t  ssi_uid;
+	int32_t   ssi_fd;
+	uint32_t  ssi_tid;
+	uint32_t  ssi_band;
+	uint32_t  ssi_overrun;
+	uint32_t  ssi_trapno;
+	int32_t   ssi_status;
+	int32_t   ssi_int;
+	uint64_t  ssi_ptr;
+	uint64_t  ssi_utime;
+	uint64_t  ssi_stime;
+	uint64_t  ssi_addr;
+	uint16_t  ssi_addr_lsb;
+	uint16_t  __pad2;
+	int32_t   ssi_syscall;
+	uint64_t  ssi_call_addr;
+	uint32_t  ssi_arch;
+	uint8_t   __pad[128-14*4-5*8-2*2];
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/socket.h b/i686-linux-musl/include/sys/socket.h
new file mode 100644
index 0000000..cc06bdf
--- /dev/null
+++ b/i686-linux-musl/include/sys/socket.h
@@ -0,0 +1,413 @@
+#ifndef	_SYS_SOCKET_H
+#define	_SYS_SOCKET_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_socklen_t
+#define __NEED_sa_family_t
+#define __NEED_size_t
+#define __NEED_ssize_t
+#define __NEED_uid_t
+#define __NEED_pid_t
+#define __NEED_gid_t
+#define __NEED_struct_iovec
+
+#include <bits/alltypes.h>
+
+#include <bits/socket.h>
+
+struct msghdr {
+	void *msg_name;
+	socklen_t msg_namelen;
+	struct iovec *msg_iov;
+#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN
+	int __pad1;
+#endif
+	int msg_iovlen;
+#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN
+	int __pad1;
+#endif
+	void *msg_control;
+#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN
+	int __pad2;
+#endif
+	socklen_t msg_controllen;
+#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN
+	int __pad2;
+#endif
+	int msg_flags;
+};
+
+struct cmsghdr {
+#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN
+	int __pad1;
+#endif
+	socklen_t cmsg_len;
+#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN
+	int __pad1;
+#endif
+	int cmsg_level;
+	int cmsg_type;
+};
+
+#ifdef _GNU_SOURCE
+struct ucred {
+	pid_t pid;
+	uid_t uid;
+	gid_t gid;
+};
+
+struct mmsghdr {
+	struct msghdr msg_hdr;
+	unsigned int  msg_len;
+};
+
+struct timespec;
+
+int sendmmsg (int, struct mmsghdr *, unsigned int, unsigned int);
+int recvmmsg (int, struct mmsghdr *, unsigned int, unsigned int, struct timespec *);
+#endif
+
+struct linger {
+	int l_onoff;
+	int l_linger;
+};
+
+#define SHUT_RD 0
+#define SHUT_WR 1
+#define SHUT_RDWR 2
+
+#ifndef SOCK_STREAM
+#define SOCK_STREAM    1
+#define SOCK_DGRAM     2
+#endif
+
+#define SOCK_RAW       3
+#define SOCK_RDM       4
+#define SOCK_SEQPACKET 5
+#define SOCK_DCCP      6
+#define SOCK_PACKET    10
+
+#ifndef SOCK_CLOEXEC
+#define SOCK_CLOEXEC   02000000
+#define SOCK_NONBLOCK  04000
+#endif
+
+#define PF_UNSPEC       0
+#define PF_LOCAL        1
+#define PF_UNIX         PF_LOCAL
+#define PF_FILE         PF_LOCAL
+#define PF_INET         2
+#define PF_AX25         3
+#define PF_IPX          4
+#define PF_APPLETALK    5
+#define PF_NETROM       6
+#define PF_BRIDGE       7
+#define PF_ATMPVC       8
+#define PF_X25          9
+#define PF_INET6        10
+#define PF_ROSE         11
+#define PF_DECnet       12
+#define PF_NETBEUI      13
+#define PF_SECURITY     14
+#define PF_KEY          15
+#define PF_NETLINK      16
+#define PF_ROUTE        PF_NETLINK
+#define PF_PACKET       17
+#define PF_ASH          18
+#define PF_ECONET       19
+#define PF_ATMSVC       20
+#define PF_RDS          21
+#define PF_SNA          22
+#define PF_IRDA         23
+#define PF_PPPOX        24
+#define PF_WANPIPE      25
+#define PF_LLC          26
+#define PF_IB           27
+#define PF_MPLS         28
+#define PF_CAN          29
+#define PF_TIPC         30
+#define PF_BLUETOOTH    31
+#define PF_IUCV         32
+#define PF_RXRPC        33
+#define PF_ISDN         34
+#define PF_PHONET       35
+#define PF_IEEE802154   36
+#define PF_CAIF         37
+#define PF_ALG          38
+#define PF_NFC          39
+#define PF_VSOCK        40
+#define PF_KCM          41
+#define PF_QIPCRTR      42
+#define PF_SMC          43
+#define PF_XDP          44
+#define PF_MAX          45
+
+#define AF_UNSPEC       PF_UNSPEC
+#define AF_LOCAL        PF_LOCAL
+#define AF_UNIX         AF_LOCAL
+#define AF_FILE         AF_LOCAL
+#define AF_INET         PF_INET
+#define AF_AX25         PF_AX25
+#define AF_IPX          PF_IPX
+#define AF_APPLETALK    PF_APPLETALK
+#define AF_NETROM       PF_NETROM
+#define AF_BRIDGE       PF_BRIDGE
+#define AF_ATMPVC       PF_ATMPVC
+#define AF_X25          PF_X25
+#define AF_INET6        PF_INET6
+#define AF_ROSE         PF_ROSE
+#define AF_DECnet       PF_DECnet
+#define AF_NETBEUI      PF_NETBEUI
+#define AF_SECURITY     PF_SECURITY
+#define AF_KEY          PF_KEY
+#define AF_NETLINK      PF_NETLINK
+#define AF_ROUTE        PF_ROUTE
+#define AF_PACKET       PF_PACKET
+#define AF_ASH          PF_ASH
+#define AF_ECONET       PF_ECONET
+#define AF_ATMSVC       PF_ATMSVC
+#define AF_RDS          PF_RDS
+#define AF_SNA          PF_SNA
+#define AF_IRDA         PF_IRDA
+#define AF_PPPOX        PF_PPPOX
+#define AF_WANPIPE      PF_WANPIPE
+#define AF_LLC          PF_LLC
+#define AF_IB           PF_IB
+#define AF_MPLS         PF_MPLS
+#define AF_CAN          PF_CAN
+#define AF_TIPC         PF_TIPC
+#define AF_BLUETOOTH    PF_BLUETOOTH
+#define AF_IUCV         PF_IUCV
+#define AF_RXRPC        PF_RXRPC
+#define AF_ISDN         PF_ISDN
+#define AF_PHONET       PF_PHONET
+#define AF_IEEE802154   PF_IEEE802154
+#define AF_CAIF         PF_CAIF
+#define AF_ALG          PF_ALG
+#define AF_NFC          PF_NFC
+#define AF_VSOCK        PF_VSOCK
+#define AF_KCM          PF_KCM
+#define AF_QIPCRTR      PF_QIPCRTR
+#define AF_SMC          PF_SMC
+#define AF_XDP          PF_XDP
+#define AF_MAX          PF_MAX
+
+#ifndef SO_DEBUG
+#define SO_DEBUG        1
+#define SO_REUSEADDR    2
+#define SO_TYPE         3
+#define SO_ERROR        4
+#define SO_DONTROUTE    5
+#define SO_BROADCAST    6
+#define SO_SNDBUF       7
+#define SO_RCVBUF       8
+#define SO_KEEPALIVE    9
+#define SO_OOBINLINE    10
+#define SO_NO_CHECK     11
+#define SO_PRIORITY     12
+#define SO_LINGER       13
+#define SO_BSDCOMPAT    14
+#define SO_REUSEPORT    15
+#define SO_PASSCRED     16
+#define SO_PEERCRED     17
+#define SO_RCVLOWAT     18
+#define SO_SNDLOWAT     19
+#define SO_ACCEPTCONN   30
+#define SO_PEERSEC      31
+#define SO_SNDBUFFORCE  32
+#define SO_RCVBUFFORCE  33
+#define SO_PROTOCOL     38
+#define SO_DOMAIN       39
+#endif
+
+#ifndef SO_RCVTIMEO
+#if __LONG_MAX == 0x7fffffff
+#define SO_RCVTIMEO     66
+#define SO_SNDTIMEO     67
+#else
+#define SO_RCVTIMEO     20
+#define SO_SNDTIMEO     21
+#endif
+#endif
+
+#ifndef SO_TIMESTAMP
+#if __LONG_MAX == 0x7fffffff
+#define SO_TIMESTAMP    63
+#define SO_TIMESTAMPNS  64
+#define SO_TIMESTAMPING 65
+#else
+#define SO_TIMESTAMP    29
+#define SO_TIMESTAMPNS  35
+#define SO_TIMESTAMPING 37
+#endif
+#endif
+
+#define SO_SECURITY_AUTHENTICATION              22
+#define SO_SECURITY_ENCRYPTION_TRANSPORT        23
+#define SO_SECURITY_ENCRYPTION_NETWORK          24
+
+#define SO_BINDTODEVICE 25
+
+#define SO_ATTACH_FILTER        26
+#define SO_DETACH_FILTER        27
+#define SO_GET_FILTER           SO_ATTACH_FILTER
+
+#define SO_PEERNAME             28
+#define SCM_TIMESTAMP           SO_TIMESTAMP
+#define SO_PASSSEC              34
+#define SCM_TIMESTAMPNS         SO_TIMESTAMPNS
+#define SO_MARK                 36
+#define SCM_TIMESTAMPING        SO_TIMESTAMPING
+#define SO_RXQ_OVFL             40
+#define SO_WIFI_STATUS          41
+#define SCM_WIFI_STATUS         SO_WIFI_STATUS
+#define SO_PEEK_OFF             42
+#define SO_NOFCS                43
+#define SO_LOCK_FILTER          44
+#define SO_SELECT_ERR_QUEUE     45
+#define SO_BUSY_POLL            46
+#define SO_MAX_PACING_RATE      47
+#define SO_BPF_EXTENSIONS       48
+#define SO_INCOMING_CPU         49
+#define SO_ATTACH_BPF           50
+#define SO_DETACH_BPF           SO_DETACH_FILTER
+#define SO_ATTACH_REUSEPORT_CBPF 51
+#define SO_ATTACH_REUSEPORT_EBPF 52
+#define SO_CNX_ADVICE           53
+#define SCM_TIMESTAMPING_OPT_STATS 54
+#define SO_MEMINFO              55
+#define SO_INCOMING_NAPI_ID     56
+#define SO_COOKIE               57
+#define SCM_TIMESTAMPING_PKTINFO 58
+#define SO_PEERGROUPS           59
+#define SO_ZEROCOPY             60
+#define SO_TXTIME               61
+#define SCM_TXTIME              SO_TXTIME
+#define SO_BINDTOIFINDEX        62
+#define SO_DETACH_REUSEPORT_BPF 68
+
+#ifndef SOL_SOCKET
+#define SOL_SOCKET      1
+#endif
+
+#define SOL_IP          0
+#define SOL_IPV6        41
+#define SOL_ICMPV6      58
+
+#define SOL_RAW         255
+#define SOL_DECNET      261
+#define SOL_X25         262
+#define SOL_PACKET      263
+#define SOL_ATM         264
+#define SOL_AAL         265
+#define SOL_IRDA        266
+#define SOL_NETBEUI     267
+#define SOL_LLC         268
+#define SOL_DCCP        269
+#define SOL_NETLINK     270
+#define SOL_TIPC        271
+#define SOL_RXRPC       272
+#define SOL_PPPOL2TP    273
+#define SOL_BLUETOOTH   274
+#define SOL_PNPIPE      275
+#define SOL_RDS         276
+#define SOL_IUCV        277
+#define SOL_CAIF        278
+#define SOL_ALG         279
+#define SOL_NFC         280
+#define SOL_KCM         281
+#define SOL_TLS         282
+#define SOL_XDP         283
+
+#define SOMAXCONN       128
+
+#define MSG_OOB       0x0001
+#define MSG_PEEK      0x0002
+#define MSG_DONTROUTE 0x0004
+#define MSG_CTRUNC    0x0008
+#define MSG_PROXY     0x0010
+#define MSG_TRUNC     0x0020
+#define MSG_DONTWAIT  0x0040
+#define MSG_EOR       0x0080
+#define MSG_WAITALL   0x0100
+#define MSG_FIN       0x0200
+#define MSG_SYN       0x0400
+#define MSG_CONFIRM   0x0800
+#define MSG_RST       0x1000
+#define MSG_ERRQUEUE  0x2000
+#define MSG_NOSIGNAL  0x4000
+#define MSG_MORE      0x8000
+#define MSG_WAITFORONE 0x10000
+#define MSG_BATCH     0x40000
+#define MSG_ZEROCOPY  0x4000000
+#define MSG_FASTOPEN  0x20000000
+#define MSG_CMSG_CLOEXEC 0x40000000
+
+#define __CMSG_LEN(cmsg) (((cmsg)->cmsg_len + sizeof(long) - 1) & ~(long)(sizeof(long) - 1))
+#define __CMSG_NEXT(cmsg) ((unsigned char *)(cmsg) + __CMSG_LEN(cmsg))
+#define __MHDR_END(mhdr) ((unsigned char *)(mhdr)->msg_control + (mhdr)->msg_controllen)
+
+#define CMSG_DATA(cmsg) ((unsigned char *) (((struct cmsghdr *)(cmsg)) + 1))
+#define CMSG_NXTHDR(mhdr, cmsg) ((cmsg)->cmsg_len < sizeof (struct cmsghdr) || \
+	__CMSG_LEN(cmsg) + sizeof(struct cmsghdr) >= (size_t)(__MHDR_END(mhdr) - (unsigned char *)(cmsg)) \
+	? 0 : (struct cmsghdr *)__CMSG_NEXT(cmsg))
+#define CMSG_FIRSTHDR(mhdr) ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) 0)
+
+#define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) & (size_t) ~(sizeof (size_t) - 1))
+#define CMSG_SPACE(len) (CMSG_ALIGN (len) + CMSG_ALIGN (sizeof (struct cmsghdr)))
+#define CMSG_LEN(len)   (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len))
+
+#define SCM_RIGHTS      0x01
+#define SCM_CREDENTIALS 0x02
+
+struct sockaddr {
+	sa_family_t sa_family;
+	char sa_data[14];
+};
+
+struct sockaddr_storage {
+	sa_family_t ss_family;
+	char __ss_padding[128-sizeof(long)-sizeof(sa_family_t)];
+	unsigned long __ss_align;
+};
+
+int socket (int, int, int);
+int socketpair (int, int, int, int [2]);
+
+int shutdown (int, int);
+
+int bind (int, const struct sockaddr *, socklen_t);
+int connect (int, const struct sockaddr *, socklen_t);
+int listen (int, int);
+int accept (int, struct sockaddr *__restrict, socklen_t *__restrict);
+int accept4(int, struct sockaddr *__restrict, socklen_t *__restrict, int);
+
+int getsockname (int, struct sockaddr *__restrict, socklen_t *__restrict);
+int getpeername (int, struct sockaddr *__restrict, socklen_t *__restrict);
+
+ssize_t send (int, const void *, size_t, int);
+ssize_t recv (int, void *, size_t, int);
+ssize_t sendto (int, const void *, size_t, int, const struct sockaddr *, socklen_t);
+ssize_t recvfrom (int, void *__restrict, size_t, int, struct sockaddr *__restrict, socklen_t *__restrict);
+ssize_t sendmsg (int, const struct msghdr *, int);
+ssize_t recvmsg (int, struct msghdr *, int);
+
+int getsockopt (int, int, int, void *__restrict, socklen_t *__restrict);
+int setsockopt (int, int, int, const void *, socklen_t);
+
+int sockatmark (int);
+
+#if _REDIR_TIME64
+#ifdef _GNU_SOURCE
+__REDIR(recvmmsg, __recvmmsg_time64);
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/sys/soundcard.h b/i686-linux-musl/include/sys/soundcard.h
new file mode 100644
index 0000000..5ca7764
--- /dev/null
+++ b/i686-linux-musl/include/sys/soundcard.h
@@ -0,0 +1 @@
+#include <bits/soundcard.h>
diff --git a/i686-linux-musl/include/sys/stat.h b/i686-linux-musl/include/sys/stat.h
new file mode 100644
index 0000000..10d446c
--- /dev/null
+++ b/i686-linux-musl/include/sys/stat.h
@@ -0,0 +1,127 @@
+#ifndef	_SYS_STAT_H
+#define	_SYS_STAT_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_dev_t
+#define __NEED_ino_t
+#define __NEED_mode_t
+#define __NEED_nlink_t
+#define __NEED_uid_t
+#define __NEED_gid_t
+#define __NEED_off_t
+#define __NEED_time_t
+#define __NEED_blksize_t
+#define __NEED_blkcnt_t
+#define __NEED_struct_timespec
+
+#include <bits/alltypes.h>
+
+#include <bits/stat.h>
+
+#define st_atime st_atim.tv_sec
+#define st_mtime st_mtim.tv_sec
+#define st_ctime st_ctim.tv_sec
+
+#define S_IFMT  0170000
+
+#define S_IFDIR 0040000
+#define S_IFCHR 0020000
+#define S_IFBLK 0060000
+#define S_IFREG 0100000
+#define S_IFIFO 0010000
+#define S_IFLNK 0120000
+#define S_IFSOCK 0140000
+
+#define S_TYPEISMQ(buf)  0
+#define S_TYPEISSEM(buf) 0
+#define S_TYPEISSHM(buf) 0
+#define S_TYPEISTMO(buf) 0
+
+#define S_ISDIR(mode)  (((mode) & S_IFMT) == S_IFDIR)
+#define S_ISCHR(mode)  (((mode) & S_IFMT) == S_IFCHR)
+#define S_ISBLK(mode)  (((mode) & S_IFMT) == S_IFBLK)
+#define S_ISREG(mode)  (((mode) & S_IFMT) == S_IFREG)
+#define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFIFO)
+#define S_ISLNK(mode)  (((mode) & S_IFMT) == S_IFLNK)
+#define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK)
+
+#ifndef S_IRUSR
+#define S_ISUID 04000
+#define S_ISGID 02000
+#define S_ISVTX 01000
+#define S_IRUSR 0400
+#define S_IWUSR 0200
+#define S_IXUSR 0100
+#define S_IRWXU 0700
+#define S_IRGRP 0040
+#define S_IWGRP 0020
+#define S_IXGRP 0010
+#define S_IRWXG 0070
+#define S_IROTH 0004
+#define S_IWOTH 0002
+#define S_IXOTH 0001
+#define S_IRWXO 0007
+#endif
+
+#define UTIME_NOW  0x3fffffff
+#define UTIME_OMIT 0x3ffffffe
+
+int stat(const char *__restrict, struct stat *__restrict);
+int fstat(int, struct stat *);
+int lstat(const char *__restrict, struct stat *__restrict);
+int fstatat(int, const char *__restrict, struct stat *__restrict, int);
+int chmod(const char *, mode_t);
+int fchmod(int, mode_t);
+int fchmodat(int, const char *, mode_t, int);
+mode_t umask(mode_t);
+int mkdir(const char *, mode_t);
+int mkfifo(const char *, mode_t);
+int mkdirat(int, const char *, mode_t);
+int mkfifoat(int, const char *, mode_t);
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+int mknod(const char *, mode_t, dev_t);
+int mknodat(int, const char *, mode_t, dev_t);
+#endif
+
+int futimens(int, const struct timespec [2]);
+int utimensat(int, const char *, const struct timespec [2], int);
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+int lchmod(const char *, mode_t);
+#define S_IREAD S_IRUSR
+#define S_IWRITE S_IWUSR
+#define S_IEXEC S_IXUSR
+#endif
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define stat64 stat
+#define fstat64 fstat
+#define lstat64 lstat
+#define fstatat64 fstatat
+#define blkcnt64_t blkcnt_t
+#define fsblkcnt64_t fsblkcnt_t
+#define fsfilcnt64_t fsfilcnt_t
+#define ino64_t ino_t
+#define off64_t off_t
+#endif
+
+#if _REDIR_TIME64
+__REDIR(stat, __stat_time64);
+__REDIR(fstat, __fstat_time64);
+__REDIR(lstat, __lstat_time64);
+__REDIR(fstatat, __fstatat_time64);
+__REDIR(futimens, __futimens_time64);
+__REDIR(utimensat, __utimensat_time64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+
diff --git a/i686-linux-musl/include/sys/statfs.h b/i686-linux-musl/include/sys/statfs.h
new file mode 100644
index 0000000..6f4c623
--- /dev/null
+++ b/i686-linux-musl/include/sys/statfs.h
@@ -0,0 +1,32 @@
+#ifndef	_SYS_STATFS_H
+#define	_SYS_STATFS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#include <sys/statvfs.h>
+
+typedef struct __fsid_t {
+	int __val[2];
+} fsid_t;
+
+#include <bits/statfs.h>
+
+int statfs (const char *, struct statfs *);
+int fstatfs (int, struct statfs *);
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define statfs64 statfs
+#define fstatfs64 fstatfs
+#define fsblkcnt64_t fsblkcnt_t
+#define fsfilcnt64_t fsfilcnt_t
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/statvfs.h b/i686-linux-musl/include/sys/statvfs.h
new file mode 100644
index 0000000..793490b
--- /dev/null
+++ b/i686-linux-musl/include/sys/statvfs.h
@@ -0,0 +1,56 @@
+#ifndef	_SYS_STATVFS_H
+#define	_SYS_STATVFS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_fsblkcnt_t
+#define __NEED_fsfilcnt_t
+#include <bits/alltypes.h>
+
+struct statvfs {
+	unsigned long f_bsize, f_frsize;
+	fsblkcnt_t f_blocks, f_bfree, f_bavail;
+	fsfilcnt_t f_files, f_ffree, f_favail;
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+	unsigned long f_fsid;
+	unsigned :8*(2*sizeof(int)-sizeof(long));
+#else
+	unsigned :8*(2*sizeof(int)-sizeof(long));
+	unsigned long f_fsid;
+#endif
+	unsigned long f_flag, f_namemax;
+	int __reserved[6];
+};
+
+int statvfs (const char *__restrict, struct statvfs *__restrict);
+int fstatvfs (int, struct statvfs *);
+
+#define ST_RDONLY 1
+#define ST_NOSUID 2
+#define ST_NODEV  4
+#define ST_NOEXEC 8
+#define ST_SYNCHRONOUS 16
+#define ST_MANDLOCK    64
+#define ST_WRITE       128
+#define ST_APPEND      256
+#define ST_IMMUTABLE   512
+#define ST_NOATIME     1024
+#define ST_NODIRATIME  2048
+#define ST_RELATIME    4096
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define statvfs64 statvfs
+#define fstatvfs64 fstatvfs
+#define fsblkcnt64_t fsblkcnt_t
+#define fsfilcnt64_t fsfilcnt_t
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/stropts.h b/i686-linux-musl/include/sys/stropts.h
new file mode 100644
index 0000000..5b5bc02
--- /dev/null
+++ b/i686-linux-musl/include/sys/stropts.h
@@ -0,0 +1 @@
+#include <stropts.h>
diff --git a/i686-linux-musl/include/sys/swap.h b/i686-linux-musl/include/sys/swap.h
new file mode 100644
index 0000000..11c0f92
--- /dev/null
+++ b/i686-linux-musl/include/sys/swap.h
@@ -0,0 +1,21 @@
+#ifndef _SYS_SWAP_H
+#define _SYS_SWAP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define	SWAP_FLAG_PREFER        0x8000
+#define	SWAP_FLAG_PRIO_MASK     0x7fff
+#define	SWAP_FLAG_PRIO_SHIFT    0
+#define SWAP_FLAG_DISCARD       0x10000
+
+int swapon (const char *, int);
+int swapoff (const char *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/syscall.h b/i686-linux-musl/include/sys/syscall.h
new file mode 100644
index 0000000..24987dd
--- /dev/null
+++ b/i686-linux-musl/include/sys/syscall.h
@@ -0,0 +1,6 @@
+#ifndef _SYS_SYSCALL_H
+#define _SYS_SYSCALL_H
+
+#include <bits/syscall.h>
+
+#endif
diff --git a/i686-linux-musl/include/sys/sysinfo.h b/i686-linux-musl/include/sys/sysinfo.h
new file mode 100644
index 0000000..3b7d0e3
--- /dev/null
+++ b/i686-linux-musl/include/sys/sysinfo.h
@@ -0,0 +1,36 @@
+#ifndef _SYS_SYSINFO_H
+#define _SYS_SYSINFO_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SI_LOAD_SHIFT 16
+
+struct sysinfo {
+	long uptime;
+	unsigned long loads[3];
+	unsigned long totalram;
+	unsigned long freeram;
+	unsigned long sharedram;
+	unsigned long bufferram;
+	unsigned long totalswap;
+	unsigned long freeswap;
+	unsigned short procs, pad;
+	unsigned long totalhigh;
+	unsigned long freehigh;
+	unsigned mem_unit;
+	char __reserved[256];
+};
+
+int sysinfo (struct sysinfo *);
+int get_nprocs_conf (void);
+int get_nprocs (void);
+long get_phys_pages (void);
+long get_avphys_pages (void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/syslog.h b/i686-linux-musl/include/sys/syslog.h
new file mode 100644
index 0000000..7761ece
--- /dev/null
+++ b/i686-linux-musl/include/sys/syslog.h
@@ -0,0 +1 @@
+#include <syslog.h>
diff --git a/i686-linux-musl/include/sys/sysmacros.h b/i686-linux-musl/include/sys/sysmacros.h
new file mode 100644
index 0000000..07a3ef1
--- /dev/null
+++ b/i686-linux-musl/include/sys/sysmacros.h
@@ -0,0 +1,15 @@
+#ifndef _SYS_SYSMACROS_H
+#define _SYS_SYSMACROS_H
+
+#define major(x) \
+	((unsigned)( (((x)>>31>>1) & 0xfffff000) | (((x)>>8) & 0x00000fff) ))
+#define minor(x) \
+	((unsigned)( (((x)>>12) & 0xffffff00) | ((x) & 0x000000ff) ))
+
+#define makedev(x,y) ( \
+        (((x)&0xfffff000ULL) << 32) | \
+	(((x)&0x00000fffULL) << 8) | \
+        (((y)&0xffffff00ULL) << 12) | \
+	(((y)&0x000000ffULL)) )
+
+#endif
diff --git a/i686-linux-musl/include/sys/termios.h b/i686-linux-musl/include/sys/termios.h
new file mode 100644
index 0000000..f5f751f
--- /dev/null
+++ b/i686-linux-musl/include/sys/termios.h
@@ -0,0 +1,2 @@
+#warning redirecting incorrect #include <sys/termios.h> to <termios.h>
+#include <termios.h>
diff --git a/i686-linux-musl/include/sys/time.h b/i686-linux-musl/include/sys/time.h
new file mode 100644
index 0000000..cdc67ef
--- /dev/null
+++ b/i686-linux-musl/include/sys/time.h
@@ -0,0 +1,76 @@
+#ifndef _SYS_TIME_H
+#define _SYS_TIME_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#include <sys/select.h>
+
+int gettimeofday (struct timeval *__restrict, void *__restrict);
+
+#define ITIMER_REAL    0
+#define ITIMER_VIRTUAL 1
+#define ITIMER_PROF    2
+
+struct itimerval {
+	struct timeval it_interval;
+	struct timeval it_value;
+};
+
+int getitimer (int, struct itimerval *);
+int setitimer (int, const struct itimerval *__restrict, struct itimerval *__restrict);
+int utimes (const char *, const struct timeval [2]);
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+struct timezone {
+	int tz_minuteswest;
+	int tz_dsttime;
+};
+int futimes(int, const struct timeval [2]);
+int futimesat(int, const char *, const struct timeval [2]);
+int lutimes(const char *, const struct timeval [2]);
+int settimeofday(const struct timeval *, const struct timezone *);
+int adjtime (const struct timeval *, struct timeval *);
+#define timerisset(t) ((t)->tv_sec || (t)->tv_usec)
+#define timerclear(t) ((t)->tv_sec = (t)->tv_usec = 0)
+#define timercmp(s,t,op) ((s)->tv_sec == (t)->tv_sec ? \
+	(s)->tv_usec op (t)->tv_usec : (s)->tv_sec op (t)->tv_sec)
+#define timeradd(s,t,a) (void) ( (a)->tv_sec = (s)->tv_sec + (t)->tv_sec, \
+	((a)->tv_usec = (s)->tv_usec + (t)->tv_usec) >= 1000000 && \
+	((a)->tv_usec -= 1000000, (a)->tv_sec++) )
+#define timersub(s,t,a) (void) ( (a)->tv_sec = (s)->tv_sec - (t)->tv_sec, \
+	((a)->tv_usec = (s)->tv_usec - (t)->tv_usec) < 0 && \
+	((a)->tv_usec += 1000000, (a)->tv_sec--) )
+#endif
+
+#if defined(_GNU_SOURCE)
+#define TIMEVAL_TO_TIMESPEC(tv, ts) ( \
+	(ts)->tv_sec = (tv)->tv_sec, \
+	(ts)->tv_nsec = (tv)->tv_usec * 1000, \
+	(void)0 )
+#define TIMESPEC_TO_TIMEVAL(tv, ts) ( \
+	(tv)->tv_sec = (ts)->tv_sec, \
+	(tv)->tv_usec = (ts)->tv_nsec / 1000, \
+	(void)0 )
+#endif
+
+#if _REDIR_TIME64
+__REDIR(gettimeofday, __gettimeofday_time64);
+__REDIR(getitimer, __getitimer_time64);
+__REDIR(setitimer, __setitimer_time64);
+__REDIR(utimes, __utimes_time64);
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+__REDIR(futimes, __futimes_time64);
+__REDIR(futimesat, __futimesat_time64);
+__REDIR(lutimes, __lutimes_time64);
+__REDIR(settimeofday, __settimeofday_time64);
+__REDIR(adjtime, __adjtime64);
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/sys/timeb.h b/i686-linux-musl/include/sys/timeb.h
new file mode 100644
index 0000000..628239b
--- /dev/null
+++ b/i686-linux-musl/include/sys/timeb.h
@@ -0,0 +1,28 @@
+#ifndef _SYS_TIMEB_H
+#define _SYS_TIMEB_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_time_t
+
+#include <bits/alltypes.h>
+
+struct timeb {
+	time_t time;
+	unsigned short millitm;
+	short timezone, dstflag;
+};
+
+int ftime(struct timeb *);
+
+#if _REDIR_TIME64
+__REDIR(ftime, __ftime64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/sys/timerfd.h b/i686-linux-musl/include/sys/timerfd.h
new file mode 100644
index 0000000..1b832cd
--- /dev/null
+++ b/i686-linux-musl/include/sys/timerfd.h
@@ -0,0 +1,32 @@
+#ifndef _SYS_TIMERFD_H
+#define _SYS_TIMERFD_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <time.h>
+#include <fcntl.h>
+
+#define TFD_NONBLOCK O_NONBLOCK
+#define TFD_CLOEXEC O_CLOEXEC
+
+#define TFD_TIMER_ABSTIME 1
+#define TFD_TIMER_CANCEL_ON_SET (1 << 1)
+
+struct itimerspec;
+
+int timerfd_create(int, int);
+int timerfd_settime(int, int, const struct itimerspec *, struct itimerspec *);
+int timerfd_gettime(int, struct itimerspec *);
+
+#if _REDIR_TIME64
+__REDIR(timerfd_settime, __timerfd_settime64);
+__REDIR(timerfd_gettime, __timerfd_gettime64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/times.h b/i686-linux-musl/include/sys/times.h
new file mode 100644
index 0000000..80a5052
--- /dev/null
+++ b/i686-linux-musl/include/sys/times.h
@@ -0,0 +1,25 @@
+#ifndef	_SYS_TIMES_H
+#define	_SYS_TIMES_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __NEED_clock_t
+#include <bits/alltypes.h>
+
+struct tms {
+	clock_t tms_utime;
+	clock_t tms_stime;
+	clock_t tms_cutime;
+	clock_t tms_cstime;
+};
+
+clock_t times (struct tms *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/i686-linux-musl/include/sys/timex.h b/i686-linux-musl/include/sys/timex.h
new file mode 100644
index 0000000..8b417e1
--- /dev/null
+++ b/i686-linux-musl/include/sys/timex.h
@@ -0,0 +1,103 @@
+#ifndef _SYS_TIMEX_H
+#define _SYS_TIMEX_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __NEED_clockid_t
+
+#include <bits/alltypes.h>
+
+#include <sys/time.h>
+
+struct ntptimeval {
+	struct timeval time;
+	long maxerror, esterror;
+};
+
+struct timex {
+	unsigned modes;
+	long offset, freq, maxerror, esterror;
+	int status;
+	long constant, precision, tolerance;
+	struct timeval time;
+	long tick, ppsfreq, jitter;
+	int shift;
+	long stabil, jitcnt, calcnt, errcnt, stbcnt;
+	int tai;
+	int __padding[11];
+};
+
+#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_CLKB	ADJ_TICK
+#define MOD_CLKA	ADJ_OFFSET_SINGLESHOT
+#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
+
+#define MAXTC		6
+
+int adjtimex(struct timex *);
+int clock_adjtime(clockid_t, struct timex *);
+
+#if _REDIR_TIME64
+__REDIR(adjtimex, __adjtimex_time64);
+__REDIR(clock_adjtime, __clock_adjtime64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/ttydefaults.h b/i686-linux-musl/include/sys/ttydefaults.h
new file mode 100644
index 0000000..edb55bc
--- /dev/null
+++ b/i686-linux-musl/include/sys/ttydefaults.h
@@ -0,0 +1,34 @@
+#ifndef _SYS_TTYDEFAULTS_H
+#define _SYS_TTYDEFAULTS_H
+
+#define TTYDEF_IFLAG (BRKINT | ISTRIP | ICRNL | IMAXBEL | IXON | IXANY)
+#define TTYDEF_OFLAG (OPOST | ONLCR | XTABS)
+#define TTYDEF_LFLAG (ECHO | ICANON | ISIG | IEXTEN | ECHOE|ECHOKE|ECHOCTL)
+#define TTYDEF_CFLAG (CREAD | CS7 | PARENB | HUPCL)
+#define TTYDEF_SPEED (B9600)
+#define CTRL(x) ((x)&037)
+#define CEOF CTRL('d')
+
+#define CEOL '\0'
+#define CSTATUS '\0'
+
+#define CERASE 0177
+#define CINTR CTRL('c')
+#define CKILL CTRL('u')
+#define CMIN 1
+#define CQUIT 034
+#define CSUSP CTRL('z')
+#define CTIME 0
+#define CDSUSP CTRL('y')
+#define CSTART CTRL('q')
+#define CSTOP CTRL('s')
+#define CLNEXT CTRL('v')
+#define CDISCARD CTRL('o')
+#define CWERASE CTRL('w')
+#define CREPRINT CTRL('r')
+#define CEOT CEOF
+#define CBRK CEOL
+#define CRPRNT CREPRINT
+#define CFLUSH CDISCARD
+
+#endif
diff --git a/i686-linux-musl/include/sys/types.h b/i686-linux-musl/include/sys/types.h
new file mode 100644
index 0000000..0c35541
--- /dev/null
+++ b/i686-linux-musl/include/sys/types.h
@@ -0,0 +1,85 @@
+#ifndef	_SYS_TYPES_H
+#define	_SYS_TYPES_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_ino_t
+#define __NEED_dev_t
+#define __NEED_uid_t
+#define __NEED_gid_t
+#define __NEED_mode_t
+#define __NEED_nlink_t
+#define __NEED_off_t
+#define __NEED_pid_t
+#define __NEED_size_t
+#define __NEED_ssize_t
+#define __NEED_time_t
+#define __NEED_timer_t
+#define __NEED_clockid_t
+
+#define __NEED_blkcnt_t
+#define __NEED_fsblkcnt_t
+#define __NEED_fsfilcnt_t
+
+#define __NEED_id_t
+#define __NEED_key_t
+#define __NEED_clock_t
+#define __NEED_suseconds_t
+#define __NEED_blksize_t
+
+#define __NEED_pthread_t
+#define __NEED_pthread_attr_t
+#define __NEED_pthread_mutexattr_t
+#define __NEED_pthread_condattr_t
+#define __NEED_pthread_rwlockattr_t
+#define __NEED_pthread_barrierattr_t
+#define __NEED_pthread_mutex_t
+#define __NEED_pthread_cond_t
+#define __NEED_pthread_rwlock_t
+#define __NEED_pthread_barrier_t
+#define __NEED_pthread_spinlock_t
+#define __NEED_pthread_key_t
+#define __NEED_pthread_once_t
+#define __NEED_useconds_t
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define __NEED_int8_t
+#define __NEED_int16_t
+#define __NEED_int32_t
+#define __NEED_int64_t
+#define __NEED_u_int64_t
+#define __NEED_register_t
+#endif
+
+#include <bits/alltypes.h>
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+typedef unsigned char u_int8_t;
+typedef unsigned short u_int16_t;
+typedef unsigned u_int32_t;
+typedef char *caddr_t;
+typedef unsigned char u_char;
+typedef unsigned short u_short, ushort;
+typedef unsigned u_int, uint;
+typedef unsigned long u_long, ulong;
+typedef long long quad_t;
+typedef unsigned long long u_quad_t;
+#include <endian.h>
+#include <sys/select.h>
+#endif
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define blkcnt64_t blkcnt_t
+#define fsblkcnt64_t fsblkcnt_t
+#define fsfilcnt64_t fsfilcnt_t
+#define ino64_t ino_t
+#define off64_t off_t
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/sys/ucontext.h b/i686-linux-musl/include/sys/ucontext.h
new file mode 100644
index 0000000..5fdbd63
--- /dev/null
+++ b/i686-linux-musl/include/sys/ucontext.h
@@ -0,0 +1 @@
+#include <ucontext.h>
diff --git a/i686-linux-musl/include/sys/uio.h b/i686-linux-musl/include/sys/uio.h
new file mode 100644
index 0000000..00f73a2
--- /dev/null
+++ b/i686-linux-musl/include/sys/uio.h
@@ -0,0 +1,48 @@
+#ifndef _SYS_UIO_H
+#define _SYS_UIO_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_size_t
+#define __NEED_ssize_t
+#define __NEED_struct_iovec
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define __NEED_off_t
+#endif
+
+#ifdef _GNU_SOURCE
+#define __NEED_pid_t
+#endif
+
+#include <bits/alltypes.h>
+
+#define UIO_MAXIOV 1024
+
+ssize_t readv (int, const struct iovec *, int);
+ssize_t writev (int, const struct iovec *, int);
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+ssize_t preadv (int, const struct iovec *, int, off_t);
+ssize_t pwritev (int, const struct iovec *, int, off_t);
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define preadv64 preadv
+#define pwritev64 pwritev
+#define off64_t off_t
+#endif
+#endif
+
+#ifdef _GNU_SOURCE
+ssize_t process_vm_writev(pid_t, const struct iovec *, unsigned long, const struct iovec *, unsigned long, unsigned long);
+ssize_t process_vm_readv(pid_t, const struct iovec *, unsigned long, const struct iovec *, unsigned long, unsigned long);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/un.h b/i686-linux-musl/include/sys/un.h
new file mode 100644
index 0000000..1a3193a
--- /dev/null
+++ b/i686-linux-musl/include/sys/un.h
@@ -0,0 +1,31 @@
+#ifndef	_SYS_UN_H
+#define	_SYS_UN_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_sa_family_t
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define __NEED_size_t
+#endif
+
+#include <bits/alltypes.h>
+
+struct sockaddr_un {
+	sa_family_t sun_family;
+	char sun_path[108];
+};
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+size_t strlen(const char *);
+#define SUN_LEN(s) (2+strlen((s)->sun_path))
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/user.h b/i686-linux-musl/include/sys/user.h
new file mode 100644
index 0000000..96a0340
--- /dev/null
+++ b/i686-linux-musl/include/sys/user.h
@@ -0,0 +1,16 @@
+#ifndef _SYS_USER_H
+#define _SYS_USER_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <limits.h>
+#include <stdint.h>
+#include <unistd.h>
+
+#include <bits/user.h>
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/sys/utsname.h b/i686-linux-musl/include/sys/utsname.h
new file mode 100644
index 0000000..2c80fb5
--- /dev/null
+++ b/i686-linux-musl/include/sys/utsname.h
@@ -0,0 +1,29 @@
+#ifndef	_SYS_UTSNAME_H
+#define	_SYS_UTSNAME_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+struct utsname {
+	char sysname[65];
+	char nodename[65];
+	char release[65];
+	char version[65];
+	char machine[65];
+#ifdef _GNU_SOURCE
+	char domainname[65];
+#else
+	char __domainname[65];
+#endif
+};
+
+int uname (struct utsname *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/sys/vfs.h b/i686-linux-musl/include/sys/vfs.h
new file mode 100644
index 0000000..a899db2
--- /dev/null
+++ b/i686-linux-musl/include/sys/vfs.h
@@ -0,0 +1 @@
+#include <sys/statfs.h>
diff --git a/i686-linux-musl/include/sys/vt.h b/i686-linux-musl/include/sys/vt.h
new file mode 100644
index 0000000..5000de4
--- /dev/null
+++ b/i686-linux-musl/include/sys/vt.h
@@ -0,0 +1 @@
+#include <bits/vt.h>
diff --git a/i686-linux-musl/include/sys/wait.h b/i686-linux-musl/include/sys/wait.h
new file mode 100644
index 0000000..d4b1f2e
--- /dev/null
+++ b/i686-linux-musl/include/sys/wait.h
@@ -0,0 +1,67 @@
+#ifndef	_SYS_WAIT_H
+#define	_SYS_WAIT_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_pid_t
+#define __NEED_id_t
+#include <bits/alltypes.h>
+
+typedef enum {
+	P_ALL = 0,
+	P_PID = 1,
+	P_PGID = 2,
+	P_PIDFD = 3
+} idtype_t;
+
+pid_t wait (int *);
+pid_t waitpid (pid_t, int *, int );
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+#include <signal.h>
+int waitid (idtype_t, id_t, siginfo_t *, int);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#include <sys/resource.h>
+pid_t wait3 (int *, int, struct rusage *);
+pid_t wait4 (pid_t, int *, int, struct rusage *);
+#endif
+
+#define WNOHANG    1
+#define WUNTRACED  2
+
+#define WSTOPPED   2
+#define WEXITED    4
+#define WCONTINUED 8
+#define WNOWAIT    0x1000000
+
+#define __WNOTHREAD 0x20000000
+#define __WALL      0x40000000
+#define __WCLONE    0x80000000
+
+#define WEXITSTATUS(s) (((s) & 0xff00) >> 8)
+#define WTERMSIG(s) ((s) & 0x7f)
+#define WSTOPSIG(s) WEXITSTATUS(s)
+#define WCOREDUMP(s) ((s) & 0x80)
+#define WIFEXITED(s) (!WTERMSIG(s))
+#define WIFSTOPPED(s) ((short)((((s)&0xffff)*0x10001)>>8) > 0x7f00)
+#define WIFSIGNALED(s) (((s)&0xffff)-1U < 0xffu)
+#define WIFCONTINUED(s) ((s) == 0xffff)
+
+#if _REDIR_TIME64
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+__REDIR(wait3, __wait3_time64);
+__REDIR(wait4, __wait4_time64);
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/sys/xattr.h b/i686-linux-musl/include/sys/xattr.h
new file mode 100644
index 0000000..eeeaafc
--- /dev/null
+++ b/i686-linux-musl/include/sys/xattr.h
@@ -0,0 +1,32 @@
+#ifndef	_SYS_XATTR_H
+#define	_SYS_XATTR_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __NEED_ssize_t
+#define __NEED_size_t
+#include <bits/alltypes.h>
+
+#define XATTR_CREATE 1
+#define XATTR_REPLACE 2
+
+ssize_t getxattr(const char *, const char *, void *, size_t);
+ssize_t lgetxattr(const char *, const char *, void *, size_t);
+ssize_t fgetxattr(int, const char *, void *, size_t);
+ssize_t listxattr(const char *, char *, size_t);
+ssize_t llistxattr(const char *, char *, size_t);
+ssize_t flistxattr(int, char *, size_t);
+int setxattr(const char *, const char *, const void *, size_t, int);
+int lsetxattr(const char *, const char *, const void *, size_t, int);
+int fsetxattr(int, const char *, const void *, size_t, int);
+int removexattr(const char *, const char *);
+int lremovexattr(const char *, const char *);
+int fremovexattr(int, const char *);
+
+#define __UAPI_DEF_XATTR        0
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/syscall.h b/i686-linux-musl/include/syscall.h
new file mode 100644
index 0000000..4c30578
--- /dev/null
+++ b/i686-linux-musl/include/syscall.h
@@ -0,0 +1 @@
+#include <sys/syscall.h>
diff --git a/i686-linux-musl/include/sysexits.h b/i686-linux-musl/include/sysexits.h
new file mode 100644
index 0000000..16eeb41
--- /dev/null
+++ b/i686-linux-musl/include/sysexits.h
@@ -0,0 +1,21 @@
+#ifndef	_SYSEXITS_H
+#define _SYSEXITS_H
+#define EX_OK 0
+#define EX__BASE 64
+#define EX_USAGE 64
+#define EX_DATAERR 65
+#define EX_NOINPUT 66
+#define EX_NOUSER 67
+#define EX_NOHOST 68
+#define EX_UNAVAILABLE 69
+#define EX_SOFTWARE 70
+#define EX_OSERR 71
+#define EX_OSFILE 72
+#define EX_CANTCREAT 73
+#define EX_IOERR 74
+#define EX_TEMPFAIL 75
+#define EX_PROTOCOL 76
+#define EX_NOPERM 77
+#define EX_CONFIG 78
+#define EX__MAX 78
+#endif
diff --git a/i686-linux-musl/include/syslog.h b/i686-linux-musl/include/syslog.h
new file mode 100644
index 0000000..5b4d296
--- /dev/null
+++ b/i686-linux-musl/include/syslog.h
@@ -0,0 +1,100 @@
+#ifndef _SYSLOG_H
+#define _SYSLOG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define LOG_EMERG   0
+#define LOG_ALERT   1
+#define LOG_CRIT    2
+#define LOG_ERR     3
+#define LOG_WARNING 4
+#define LOG_NOTICE  5
+#define LOG_INFO    6
+#define LOG_DEBUG   7
+
+#define LOG_PRIMASK 7
+#define LOG_PRI(p) ((p)&LOG_PRIMASK)
+#define	LOG_MAKEPRI(f, p) (((f)<<3)|(p))
+
+#define LOG_MASK(p) (1<<(p))
+#define LOG_UPTO(p) ((1<<((p)+1))-1)
+
+#define LOG_KERN     (0<<3)
+#define LOG_USER     (1<<3)
+#define LOG_MAIL     (2<<3)
+#define LOG_DAEMON   (3<<3)
+#define LOG_AUTH     (4<<3)
+#define LOG_SYSLOG   (5<<3)
+#define LOG_LPR      (6<<3)
+#define LOG_NEWS     (7<<3)
+#define LOG_UUCP     (8<<3)
+#define LOG_CRON     (9<<3)
+#define	LOG_AUTHPRIV (10<<3)
+#define	LOG_FTP      (11<<3)
+
+#define LOG_LOCAL0   (16<<3)
+#define LOG_LOCAL1   (17<<3)
+#define LOG_LOCAL2   (18<<3)
+#define LOG_LOCAL3   (19<<3)
+#define LOG_LOCAL4   (20<<3)
+#define LOG_LOCAL5   (21<<3)
+#define LOG_LOCAL6   (22<<3)
+#define LOG_LOCAL7   (23<<3)
+
+#define LOG_NFACILITIES 24
+#define LOG_FACMASK 0x3f8
+#define LOG_FAC(p) (((p)&LOG_FACMASK)>>3)
+
+#define LOG_PID    0x01
+#define LOG_CONS   0x02
+#define LOG_ODELAY 0x04
+#define LOG_NDELAY 0x08
+#define LOG_NOWAIT 0x10
+#define LOG_PERROR 0x20
+
+void closelog (void);
+void openlog (const char *, int, int);
+int setlogmask (int);
+void syslog (int, const char *, ...);
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define _PATH_LOG "/dev/log"
+#define __NEED_va_list
+#include <bits/alltypes.h>
+void vsyslog (int, const char *, va_list);
+#if defined(SYSLOG_NAMES)
+#define	INTERNAL_NOPRI 0x10
+#define	INTERNAL_MARK (LOG_NFACILITIES<<3)
+typedef struct {
+	char *c_name;
+	int c_val;
+} CODE;
+#define prioritynames ((CODE *)(const CODE []){ \
+	{ "alert", LOG_ALERT }, { "crit", LOG_CRIT }, { "debug", LOG_DEBUG }, \
+	{ "emerg", LOG_EMERG }, { "err", LOG_ERR }, { "error", LOG_ERR }, \
+	{ "info", LOG_INFO }, { "none", INTERNAL_NOPRI }, \
+	{ "notice", LOG_NOTICE }, { "panic", LOG_EMERG }, \
+	{ "warn", LOG_WARNING }, { "warning", LOG_WARNING }, { 0, -1 } })
+#define facilitynames ((CODE *)(const CODE []){ \
+	{ "auth", LOG_AUTH }, { "authpriv", LOG_AUTHPRIV }, \
+	{ "cron", LOG_CRON }, { "daemon", LOG_DAEMON }, { "ftp", LOG_FTP }, \
+	{ "kern", LOG_KERN }, { "lpr", LOG_LPR }, { "mail", LOG_MAIL }, \
+	{ "mark", INTERNAL_MARK }, { "news", LOG_NEWS }, \
+	{ "security", LOG_AUTH }, { "syslog", LOG_SYSLOG }, \
+	{ "user", LOG_USER }, { "uucp", LOG_UUCP }, \
+	{ "local0", LOG_LOCAL0 }, { "local1", LOG_LOCAL1 }, \
+	{ "local2", LOG_LOCAL2 }, { "local3", LOG_LOCAL3 }, \
+	{ "local4", LOG_LOCAL4 }, { "local5", LOG_LOCAL5 }, \
+	{ "local6", LOG_LOCAL6 }, { "local7", LOG_LOCAL7 }, { 0, -1 } })
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/tar.h b/i686-linux-musl/include/tar.h
new file mode 100644
index 0000000..be58984
--- /dev/null
+++ b/i686-linux-musl/include/tar.h
@@ -0,0 +1,33 @@
+#ifndef	_TAR_H
+#define	_TAR_H
+
+#define TSUID   04000
+#define TSGID   02000
+#define TSVTX   01000
+#define TUREAD  00400
+#define TUWRITE 00200
+#define TUEXEC  00100
+#define TGREAD  00040
+#define TGWRITE 00020
+#define TGEXEC  00010
+#define TOREAD  00004
+#define TOWRITE 00002
+#define TOEXEC  00001
+
+#define REGTYPE  '0'
+#define AREGTYPE '\0'
+#define LNKTYPE  '1'
+#define SYMTYPE  '2'
+#define CHRTYPE  '3'
+#define BLKTYPE  '4'
+#define DIRTYPE  '5'
+#define FIFOTYPE '6'
+#define CONTTYPE '7'
+
+#define TMAGIC "ustar"
+#define TMAGLEN 6
+
+#define TVERSION "00"
+#define TVERSLEN 2
+
+#endif
diff --git a/i686-linux-musl/include/termios.h b/i686-linux-musl/include/termios.h
new file mode 100644
index 0000000..cbb5330
--- /dev/null
+++ b/i686-linux-musl/include/termios.h
@@ -0,0 +1,50 @@
+#ifndef	_TERMIOS_H
+#define	_TERMIOS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_pid_t
+#define __NEED_struct_winsize
+
+#include <bits/alltypes.h>
+
+typedef unsigned char cc_t;
+typedef unsigned int speed_t;
+typedef unsigned int tcflag_t;
+
+#define NCCS 32
+
+#include <bits/termios.h>
+
+speed_t cfgetospeed (const struct termios *);
+speed_t cfgetispeed (const struct termios *);
+int cfsetospeed (struct termios *, speed_t);
+int cfsetispeed (struct termios *, speed_t);
+
+int tcgetattr (int, struct termios *);
+int tcsetattr (int, int, const struct termios *);
+
+int tcgetwinsize (int, struct winsize *);
+int tcsetwinsize (int, const struct winsize *);
+
+int tcsendbreak (int, int);
+int tcdrain (int);
+int tcflush (int, int);
+int tcflow (int, int);
+
+pid_t tcgetsid (int);
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+void cfmakeraw(struct termios *);
+int cfsetspeed(struct termios *, speed_t);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/tgmath.h b/i686-linux-musl/include/tgmath.h
new file mode 100644
index 0000000..e41ccac
--- /dev/null
+++ b/i686-linux-musl/include/tgmath.h
@@ -0,0 +1,270 @@
+#ifndef _TGMATH_H
+#define _TGMATH_H
+
+/*
+the return types are only correct with gcc (__GNUC__)
+otherwise they are long double or long double complex
+
+the long double version of a function is never chosen when
+sizeof(double) == sizeof(long double)
+(but the return type is set correctly with gcc)
+*/
+
+#include <math.h>
+#include <complex.h>
+
+#define __IS_FP(x) (sizeof((x)+1ULL) == sizeof((x)+1.0f))
+#define __IS_CX(x) (__IS_FP(x) && sizeof(x) == sizeof((x)+I))
+#define __IS_REAL(x) (__IS_FP(x) && 2*sizeof(x) == sizeof((x)+I))
+
+#define __FLT(x) (__IS_REAL(x) && sizeof(x) == sizeof(float))
+#define __LDBL(x) (__IS_REAL(x) && sizeof(x) == sizeof(long double) && sizeof(long double) != sizeof(double))
+
+#define __FLTCX(x) (__IS_CX(x) && sizeof(x) == sizeof(float complex))
+#define __DBLCX(x) (__IS_CX(x) && sizeof(x) == sizeof(double complex))
+#define __LDBLCX(x) (__IS_CX(x) && sizeof(x) == sizeof(long double complex) && sizeof(long double) != sizeof(double))
+
+/* return type */
+
+#ifdef __GNUC__
+/*
+the result must be casted to the right type
+(otherwise the result type is determined by the conversion
+rules applied to all the function return types so it is long
+double or long double complex except for integral functions)
+
+this cannot be done in c99, so the typeof gcc extension is
+used and that the type of ?: depends on wether an operand is
+a null pointer constant or not
+(in c11 _Generic can be used)
+
+the c arguments below must be integer constant expressions
+so they can be in null pointer constants
+(__IS_FP above was carefully chosen this way)
+*/
+/* if c then t else void */
+#define __type1(c,t) __typeof__(*(0?(t*)0:(void*)!(c)))
+/* if c then t1 else t2 */
+#define __type2(c,t1,t2) __typeof__(*(0?(__type1(c,t1)*)0:(__type1(!(c),t2)*)0))
+/* cast to double when x is integral, otherwise use typeof(x) */
+#define __RETCAST(x) ( \
+	__type2(__IS_FP(x), __typeof__(x), double))
+/* 2 args case, should work for complex types (cpow) */
+#define __RETCAST_2(x, y) ( \
+	__type2(__IS_FP(x) && __IS_FP(y), \
+		__typeof__((x)+(y)), \
+		__typeof__((x)+(y)+1.0)))
+/* 3 args case (fma only) */
+#define __RETCAST_3(x, y, z) ( \
+	__type2(__IS_FP(x) && __IS_FP(y) && __IS_FP(z), \
+		__typeof__((x)+(y)+(z)), \
+		__typeof__((x)+(y)+(z)+1.0)))
+/* drop complex from the type of x */
+/* TODO: wrong when sizeof(long double)==sizeof(double) */
+#define __RETCAST_REAL(x) (  \
+	__type2(__IS_FP(x) && sizeof((x)+I) == sizeof(float complex), float, \
+	__type2(sizeof((x)+1.0+I) == sizeof(double complex), double, \
+		long double)))
+/* add complex to the type of x */
+#define __RETCAST_CX(x) (__typeof__(__RETCAST(x)0+I))
+#else
+#define __RETCAST(x)
+#define __RETCAST_2(x, y)
+#define __RETCAST_3(x, y, z)
+#define __RETCAST_REAL(x)
+#define __RETCAST_CX(x)
+#endif
+
+/* function selection */
+
+#define __tg_real_nocast(fun, x) ( \
+	__FLT(x) ? fun ## f (x) : \
+	__LDBL(x) ? fun ## l (x) : \
+	fun(x) )
+
+#define __tg_real(fun, x) (__RETCAST(x)__tg_real_nocast(fun, x))
+
+#define __tg_real_2_1(fun, x, y) (__RETCAST(x)( \
+	__FLT(x) ? fun ## f (x, y) : \
+	__LDBL(x) ? fun ## l (x, y) : \
+	fun(x, y) ))
+
+#define __tg_real_2(fun, x, y) (__RETCAST_2(x, y)( \
+	__FLT(x) && __FLT(y) ? fun ## f (x, y) : \
+	__LDBL((x)+(y)) ? fun ## l (x, y) : \
+	fun(x, y) ))
+
+#define __tg_complex(fun, x) (__RETCAST_CX(x)( \
+	__FLTCX((x)+I) && __IS_FP(x) ? fun ## f (x) : \
+	__LDBLCX((x)+I) ? fun ## l (x) : \
+	fun(x) ))
+
+#define __tg_complex_retreal(fun, x) (__RETCAST_REAL(x)( \
+	__FLTCX((x)+I) && __IS_FP(x) ? fun ## f (x) : \
+	__LDBLCX((x)+I) ? fun ## l (x) : \
+	fun(x) ))
+
+#define __tg_real_complex(fun, x) (__RETCAST(x)( \
+	__FLTCX(x) ? c ## fun ## f (x) : \
+	__DBLCX(x) ? c ## fun (x) : \
+	__LDBLCX(x) ? c ## fun ## l (x) : \
+	__FLT(x) ? fun ## f (x) : \
+	__LDBL(x) ? fun ## l (x) : \
+	fun(x) ))
+
+/* special cases */
+
+#define __tg_real_remquo(x, y, z) (__RETCAST_2(x, y)( \
+	__FLT(x) && __FLT(y) ? remquof(x, y, z) : \
+	__LDBL((x)+(y)) ? remquol(x, y, z) : \
+	remquo(x, y, z) ))
+
+#define __tg_real_fma(x, y, z) (__RETCAST_3(x, y, z)( \
+	__FLT(x) && __FLT(y) && __FLT(z) ? fmaf(x, y, z) : \
+	__LDBL((x)+(y)+(z)) ? fmal(x, y, z) : \
+	fma(x, y, z) ))
+
+#define __tg_real_complex_pow(x, y) (__RETCAST_2(x, y)( \
+	__FLTCX((x)+(y)) && __IS_FP(x) && __IS_FP(y) ? cpowf(x, y) : \
+	__FLTCX((x)+(y)) ? cpow(x, y) : \
+	__DBLCX((x)+(y)) ? cpow(x, y) : \
+	__LDBLCX((x)+(y)) ? cpowl(x, y) : \
+	__FLT(x) && __FLT(y) ? powf(x, y) : \
+	__LDBL((x)+(y)) ? powl(x, y) : \
+	pow(x, y) ))
+
+#define __tg_real_complex_fabs(x) (__RETCAST_REAL(x)( \
+	__FLTCX(x) ? cabsf(x) : \
+	__DBLCX(x) ? cabs(x) : \
+	__LDBLCX(x) ? cabsl(x) : \
+	__FLT(x) ? fabsf(x) : \
+	__LDBL(x) ? fabsl(x) : \
+	fabs(x) ))
+
+/* suppress any macros in math.h or complex.h */
+
+#undef acos
+#undef acosh
+#undef asin
+#undef asinh
+#undef atan
+#undef atan2
+#undef atanh
+#undef carg
+#undef cbrt
+#undef ceil
+#undef cimag
+#undef conj
+#undef copysign
+#undef cos
+#undef cosh
+#undef cproj
+#undef creal
+#undef erf
+#undef erfc
+#undef exp
+#undef exp2
+#undef expm1
+#undef fabs
+#undef fdim
+#undef floor
+#undef fma
+#undef fmax
+#undef fmin
+#undef fmod
+#undef frexp
+#undef hypot
+#undef ilogb
+#undef ldexp
+#undef lgamma
+#undef llrint
+#undef llround
+#undef log
+#undef log10
+#undef log1p
+#undef log2
+#undef logb
+#undef lrint
+#undef lround
+#undef nearbyint
+#undef nextafter
+#undef nexttoward
+#undef pow
+#undef remainder
+#undef remquo
+#undef rint
+#undef round
+#undef scalbln
+#undef scalbn
+#undef sin
+#undef sinh
+#undef sqrt
+#undef tan
+#undef tanh
+#undef tgamma
+#undef trunc
+
+/* tg functions */
+
+#define acos(x)         __tg_real_complex(acos, (x))
+#define acosh(x)        __tg_real_complex(acosh, (x))
+#define asin(x)         __tg_real_complex(asin, (x))
+#define asinh(x)        __tg_real_complex(asinh, (x))
+#define atan(x)         __tg_real_complex(atan, (x))
+#define atan2(x,y)      __tg_real_2(atan2, (x), (y))
+#define atanh(x)        __tg_real_complex(atanh, (x))
+#define carg(x)         __tg_complex_retreal(carg, (x))
+#define cbrt(x)         __tg_real(cbrt, (x))
+#define ceil(x)         __tg_real(ceil, (x))
+#define cimag(x)        __tg_complex_retreal(cimag, (x))
+#define conj(x)         __tg_complex(conj, (x))
+#define copysign(x,y)   __tg_real_2(copysign, (x), (y))
+#define cos(x)          __tg_real_complex(cos, (x))
+#define cosh(x)         __tg_real_complex(cosh, (x))
+#define cproj(x)        __tg_complex(cproj, (x))
+#define creal(x)        __tg_complex_retreal(creal, (x))
+#define erf(x)          __tg_real(erf, (x))
+#define erfc(x)         __tg_real(erfc, (x))
+#define exp(x)          __tg_real_complex(exp, (x))
+#define exp2(x)         __tg_real(exp2, (x))
+#define expm1(x)        __tg_real(expm1, (x))
+#define fabs(x)         __tg_real_complex_fabs(x)
+#define fdim(x,y)       __tg_real_2(fdim, (x), (y))
+#define floor(x)        __tg_real(floor, (x))
+#define fma(x,y,z)      __tg_real_fma((x), (y), (z))
+#define fmax(x,y)       __tg_real_2(fmax, (x), (y))
+#define fmin(x,y)       __tg_real_2(fmin, (x), (y))
+#define fmod(x,y)       __tg_real_2(fmod, (x), (y))
+#define frexp(x,y)      __tg_real_2_1(frexp, (x), (y))
+#define hypot(x,y)      __tg_real_2(hypot, (x), (y))
+#define ilogb(x)        __tg_real_nocast(ilogb, (x))
+#define ldexp(x,y)      __tg_real_2_1(ldexp, (x), (y))
+#define lgamma(x)       __tg_real(lgamma, (x))
+#define llrint(x)       __tg_real_nocast(llrint, (x))
+#define llround(x)      __tg_real_nocast(llround, (x))
+#define log(x)          __tg_real_complex(log, (x))
+#define log10(x)        __tg_real(log10, (x))
+#define log1p(x)        __tg_real(log1p, (x))
+#define log2(x)         __tg_real(log2, (x))
+#define logb(x)         __tg_real(logb, (x))
+#define lrint(x)        __tg_real_nocast(lrint, (x))
+#define lround(x)       __tg_real_nocast(lround, (x))
+#define nearbyint(x)    __tg_real(nearbyint, (x))
+#define nextafter(x,y)  __tg_real_2(nextafter, (x), (y))
+#define nexttoward(x,y) __tg_real_2(nexttoward, (x), (y))
+#define pow(x,y)        __tg_real_complex_pow((x), (y))
+#define remainder(x,y)  __tg_real_2(remainder, (x), (y))
+#define remquo(x,y,z)   __tg_real_remquo((x), (y), (z))
+#define rint(x)         __tg_real(rint, (x))
+#define round(x)        __tg_real(round, (x))
+#define scalbln(x,y)    __tg_real_2_1(scalbln, (x), (y))
+#define scalbn(x,y)     __tg_real_2_1(scalbn, (x), (y))
+#define sin(x)          __tg_real_complex(sin, (x))
+#define sinh(x)         __tg_real_complex(sinh, (x))
+#define sqrt(x)         __tg_real_complex(sqrt, (x))
+#define tan(x)          __tg_real_complex(tan, (x))
+#define tanh(x)         __tg_real_complex(tanh, (x))
+#define tgamma(x)       __tg_real(tgamma, (x))
+#define trunc(x)        __tg_real(trunc, (x))
+
+#endif
diff --git a/i686-linux-musl/include/threads.h b/i686-linux-musl/include/threads.h
new file mode 100644
index 0000000..52ec310
--- /dev/null
+++ b/i686-linux-musl/include/threads.h
@@ -0,0 +1,93 @@
+#ifndef _THREADS_H
+#define _THREADS_H
+
+#include <features.h>
+#include <time.h>
+
+#ifdef __cplusplus
+extern "C" {
+typedef unsigned long thrd_t;
+#else
+typedef struct __pthread *thrd_t;
+#define thread_local _Thread_local
+#endif
+
+typedef int once_flag;
+typedef unsigned tss_t;
+typedef int (*thrd_start_t)(void *);
+typedef void (*tss_dtor_t)(void *);
+
+#define __NEED_cnd_t
+#define __NEED_mtx_t
+
+#include <bits/alltypes.h>
+
+#define TSS_DTOR_ITERATIONS 4
+
+enum {
+	thrd_success  = 0,
+	thrd_busy     = 1,
+	thrd_error    = 2,
+	thrd_nomem    = 3,
+	thrd_timedout = 4,
+};
+
+enum {
+	mtx_plain     = 0,
+	mtx_recursive = 1,
+	mtx_timed     = 2,
+};
+
+#define ONCE_FLAG_INIT 0
+
+int thrd_create(thrd_t *, thrd_start_t, void *);
+_Noreturn void thrd_exit(int);
+
+int thrd_detach(thrd_t);
+int thrd_join(thrd_t, int *);
+
+int thrd_sleep(const struct timespec *, struct timespec *);
+void thrd_yield(void);
+
+thrd_t thrd_current(void);
+int thrd_equal(thrd_t, thrd_t);
+#ifndef __cplusplus
+#define thrd_equal(A, B) ((A) == (B))
+#endif
+
+void call_once(once_flag *, void (*)(void));
+
+int mtx_init(mtx_t *, int);
+void mtx_destroy(mtx_t *);
+
+int mtx_lock(mtx_t *);
+int mtx_timedlock(mtx_t *__restrict, const struct timespec *__restrict);
+int mtx_trylock(mtx_t *);
+int mtx_unlock(mtx_t *);
+
+int cnd_init(cnd_t *);
+void cnd_destroy(cnd_t *);
+
+int cnd_broadcast(cnd_t *);
+int cnd_signal(cnd_t *);
+
+int cnd_timedwait(cnd_t *__restrict, mtx_t *__restrict, const struct timespec *__restrict);
+int cnd_wait(cnd_t *, mtx_t *);
+
+int tss_create(tss_t *, tss_dtor_t);
+void tss_delete(tss_t);
+
+int tss_set(tss_t, void *);
+void *tss_get(tss_t);
+
+#if _REDIR_TIME64
+__REDIR(thrd_sleep, __thrd_sleep_time64);
+__REDIR(mtx_timedlock, __mtx_timedlock_time64);
+__REDIR(cnd_timedwait, __cnd_timedwait_time64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/time.h b/i686-linux-musl/include/time.h
new file mode 100644
index 0000000..3d94837
--- /dev/null
+++ b/i686-linux-musl/include/time.h
@@ -0,0 +1,168 @@
+#ifndef	_TIME_H
+#define _TIME_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#if __cplusplus >= 201103L
+#define NULL nullptr
+#elif defined(__cplusplus)
+#define NULL 0L
+#else
+#define NULL ((void*)0)
+#endif
+
+
+#define __NEED_size_t
+#define __NEED_time_t
+#define __NEED_clock_t
+#define __NEED_struct_timespec
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+#define __NEED_clockid_t
+#define __NEED_timer_t
+#define __NEED_pid_t
+#define __NEED_locale_t
+#endif
+
+#include <bits/alltypes.h>
+
+#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
+#define __tm_gmtoff tm_gmtoff
+#define __tm_zone tm_zone
+#endif
+
+struct tm {
+	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;
+	long __tm_gmtoff;
+	const char *__tm_zone;
+};
+
+clock_t clock (void);
+time_t time (time_t *);
+double difftime (time_t, time_t);
+time_t mktime (struct tm *);
+size_t strftime (char *__restrict, size_t, const char *__restrict, const struct tm *__restrict);
+struct tm *gmtime (const time_t *);
+struct tm *localtime (const time_t *);
+char *asctime (const struct tm *);
+char *ctime (const time_t *);
+int timespec_get(struct timespec *, int);
+
+#define CLOCKS_PER_SEC 1000000L
+
+#define TIME_UTC 1
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+
+size_t strftime_l (char *  __restrict, size_t, const char *  __restrict, const struct tm *  __restrict, locale_t);
+
+struct tm *gmtime_r (const time_t *__restrict, struct tm *__restrict);
+struct tm *localtime_r (const time_t *__restrict, struct tm *__restrict);
+char *asctime_r (const struct tm *__restrict, char *__restrict);
+char *ctime_r (const time_t *, char *);
+
+void tzset (void);
+
+struct itimerspec {
+	struct timespec it_interval;
+	struct timespec it_value;
+};
+
+#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 TIMER_ABSTIME 1
+
+int nanosleep (const struct timespec *, struct timespec *);
+int clock_getres (clockid_t, struct timespec *);
+int clock_gettime (clockid_t, struct timespec *);
+int clock_settime (clockid_t, const struct timespec *);
+int clock_nanosleep (clockid_t, int, const struct timespec *, struct timespec *);
+int clock_getcpuclockid (pid_t, clockid_t *);
+
+struct sigevent;
+int timer_create (clockid_t, struct sigevent *__restrict, timer_t *__restrict);
+int timer_delete (timer_t);
+int timer_settime (timer_t, int, const struct itimerspec *__restrict, struct itimerspec *__restrict);
+int timer_gettime (timer_t, struct itimerspec *);
+int timer_getoverrun (timer_t);
+
+extern char *tzname[2];
+
+#endif
+
+
+#if defined(_XOPEN_SOURCE) || defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
+char *strptime (const char *__restrict, const char *__restrict, struct tm *__restrict);
+extern int daylight;
+extern long timezone;
+extern int getdate_err;
+struct tm *getdate (const char *);
+#endif
+
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+int stime(const time_t *);
+time_t timegm(struct tm *);
+#endif
+
+#if _REDIR_TIME64
+__REDIR(time, __time64);
+__REDIR(difftime, __difftime64);
+__REDIR(mktime, __mktime64);
+__REDIR(gmtime, __gmtime64);
+__REDIR(localtime, __localtime64);
+__REDIR(ctime, __ctime64);
+__REDIR(timespec_get, __timespec_get_time64);
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+__REDIR(gmtime_r, __gmtime64_r);
+__REDIR(localtime_r, __localtime64_r);
+__REDIR(ctime_r, __ctime64_r);
+__REDIR(nanosleep, __nanosleep_time64);
+__REDIR(clock_getres, __clock_getres_time64);
+__REDIR(clock_gettime, __clock_gettime64);
+__REDIR(clock_settime, __clock_settime64);
+__REDIR(clock_nanosleep, __clock_nanosleep_time64);
+__REDIR(timer_settime, __timer_settime64);
+__REDIR(timer_gettime, __timer_gettime64);
+#endif
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+__REDIR(stime, __stime64);
+__REDIR(timegm, __timegm_time64);
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif
diff --git a/i686-linux-musl/include/uchar.h b/i686-linux-musl/include/uchar.h
new file mode 100644
index 0000000..7e5c4d4
--- /dev/null
+++ b/i686-linux-musl/include/uchar.h
@@ -0,0 +1,29 @@
+#ifndef _UCHAR_H
+#define _UCHAR_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if __cplusplus < 201103L
+typedef unsigned short char16_t;
+typedef unsigned char32_t;
+#endif
+
+#define __NEED_mbstate_t
+#define __NEED_size_t
+
+#include <features.h>
+#include <bits/alltypes.h>
+
+size_t c16rtomb(char *__restrict, char16_t, mbstate_t *__restrict);
+size_t mbrtoc16(char16_t *__restrict, const char *__restrict, size_t, mbstate_t *__restrict);
+
+size_t c32rtomb(char *__restrict, char32_t, mbstate_t *__restrict);
+size_t mbrtoc32(char32_t *__restrict, const char *__restrict, size_t, mbstate_t *__restrict);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/ucontext.h b/i686-linux-musl/include/ucontext.h
new file mode 100644
index 0000000..0f75712
--- /dev/null
+++ b/i686-linux-musl/include/ucontext.h
@@ -0,0 +1,25 @@
+#ifndef _UCONTEXT_H
+#define _UCONTEXT_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#include <signal.h>
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define NGREG (sizeof(gregset_t)/sizeof(greg_t))
+#endif
+
+struct __ucontext;
+
+int  getcontext(struct __ucontext *);
+void makecontext(struct __ucontext *, void (*)(), int, ...);
+int  setcontext(const struct __ucontext *);
+int  swapcontext(struct __ucontext *, const struct __ucontext *);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/i686-linux-musl/include/ulimit.h b/i686-linux-musl/include/ulimit.h
new file mode 100644
index 0000000..efdcd31
--- /dev/null
+++ b/i686-linux-musl/include/ulimit.h
@@ -0,0 +1,17 @@
+#ifndef _ULIMIT_H
+#define _ULIMIT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define UL_GETFSIZE 1
+#define UL_SETFSIZE 2
+
+long ulimit (int, ...);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/unistd.h b/i686-linux-musl/include/unistd.h
new file mode 100644
index 0000000..212263a
--- /dev/null
+++ b/i686-linux-musl/include/unistd.h
@@ -0,0 +1,475 @@
+#ifndef	_UNISTD_H
+#define	_UNISTD_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define STDIN_FILENO  0
+#define STDOUT_FILENO 1
+#define STDERR_FILENO 2
+
+#define SEEK_SET 0
+#define SEEK_CUR 1
+#define SEEK_END 2
+#define SEEK_DATA 3
+#define SEEK_HOLE 4
+
+#if __cplusplus >= 201103L
+#define NULL nullptr
+#elif defined(__cplusplus)
+#define NULL 0L
+#else
+#define NULL ((void*)0)
+#endif
+
+#define __NEED_size_t
+#define __NEED_ssize_t
+#define __NEED_uid_t
+#define __NEED_gid_t
+#define __NEED_off_t
+#define __NEED_pid_t
+#define __NEED_intptr_t
+#define __NEED_useconds_t
+
+#include <bits/alltypes.h>
+
+int pipe(int [2]);
+int pipe2(int [2], int);
+int close(int);
+int posix_close(int, int);
+int dup(int);
+int dup2(int, int);
+int dup3(int, int, int);
+off_t lseek(int, off_t, int);
+int fsync(int);
+int fdatasync(int);
+
+ssize_t read(int, void *, size_t);
+ssize_t write(int, const void *, size_t);
+ssize_t pread(int, void *, size_t, off_t);
+ssize_t pwrite(int, const void *, size_t, off_t);
+
+int chown(const char *, uid_t, gid_t);
+int fchown(int, uid_t, gid_t);
+int lchown(const char *, uid_t, gid_t);
+int fchownat(int, const char *, uid_t, gid_t, int);
+
+int link(const char *, const char *);
+int linkat(int, const char *, int, const char *, int);
+int symlink(const char *, const char *);
+int symlinkat(const char *, int, const char *);
+ssize_t readlink(const char *__restrict, char *__restrict, size_t);
+ssize_t readlinkat(int, const char *__restrict, char *__restrict, size_t);
+int unlink(const char *);
+int unlinkat(int, const char *, int);
+int rmdir(const char *);
+int truncate(const char *, off_t);
+int ftruncate(int, off_t);
+
+#define F_OK 0
+#define R_OK 4
+#define W_OK 2
+#define X_OK 1
+
+int access(const char *, int);
+int faccessat(int, const char *, int, int);
+
+int chdir(const char *);
+int fchdir(int);
+char *getcwd(char *, size_t);
+
+unsigned alarm(unsigned);
+unsigned sleep(unsigned);
+int pause(void);
+
+pid_t fork(void);
+pid_t _Fork(void);
+int execve(const char *, char *const [], char *const []);
+int execv(const char *, char *const []);
+int execle(const char *, const char *, ...);
+int execl(const char *, const char *, ...);
+int execvp(const char *, char *const []);
+int execlp(const char *, const char *, ...);
+int fexecve(int, char *const [], char *const []);
+_Noreturn void _exit(int);
+
+pid_t getpid(void);
+pid_t getppid(void);
+pid_t getpgrp(void);
+pid_t getpgid(pid_t);
+int setpgid(pid_t, pid_t);
+pid_t setsid(void);
+pid_t getsid(pid_t);
+char *ttyname(int);
+int ttyname_r(int, char *, size_t);
+int isatty(int);
+pid_t tcgetpgrp(int);
+int tcsetpgrp(int, pid_t);
+
+uid_t getuid(void);
+uid_t geteuid(void);
+gid_t getgid(void);
+gid_t getegid(void);
+int getgroups(int, gid_t []);
+int setuid(uid_t);
+int seteuid(uid_t);
+int setgid(gid_t);
+int setegid(gid_t);
+
+char *getlogin(void);
+int getlogin_r(char *, size_t);
+int gethostname(char *, size_t);
+char *ctermid(char *);
+
+int getopt(int, char * const [], const char *);
+extern char *optarg;
+extern int optind, opterr, optopt;
+
+long pathconf(const char *, int);
+long fpathconf(int, int);
+long sysconf(int);
+size_t confstr(int, char *, size_t);
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define F_ULOCK 0
+#define F_LOCK  1
+#define F_TLOCK 2
+#define F_TEST  3
+int setreuid(uid_t, uid_t);
+int setregid(gid_t, gid_t);
+int lockf(int, int, off_t);
+long gethostid(void);
+int nice(int);
+void sync(void);
+pid_t setpgrp(void);
+char *crypt(const char *, const char *);
+void encrypt(char *, int);
+void swab(const void *__restrict, void *__restrict, ssize_t);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) \
+ || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700)
+int usleep(unsigned);
+unsigned ualarm(unsigned, unsigned);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define L_SET 0
+#define L_INCR 1
+#define L_XTND 2
+int brk(void *);
+void *sbrk(intptr_t);
+pid_t vfork(void);
+int vhangup(void);
+int chroot(const char *);
+int getpagesize(void);
+int getdtablesize(void);
+int sethostname(const char *, size_t);
+int getdomainname(char *, size_t);
+int setdomainname(const char *, size_t);
+int setgroups(size_t, const gid_t *);
+char *getpass(const char *);
+int daemon(int, int);
+void setusershell(void);
+void endusershell(void);
+char *getusershell(void);
+int acct(const char *);
+long syscall(long, ...);
+int execvpe(const char *, char *const [], char *const []);
+int issetugid(void);
+int getentropy(void *, size_t);
+extern int optreset;
+#endif
+
+#ifdef _GNU_SOURCE
+extern char **environ;
+int setresuid(uid_t, uid_t, uid_t);
+int setresgid(gid_t, gid_t, gid_t);
+int getresuid(uid_t *, uid_t *, uid_t *);
+int getresgid(gid_t *, gid_t *, gid_t *);
+char *get_current_dir_name(void);
+int syncfs(int);
+int euidaccess(const char *, int);
+int eaccess(const char *, int);
+ssize_t copy_file_range(int, off_t *, int, off_t *, size_t, unsigned);
+pid_t gettid(void);
+#endif
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define lseek64 lseek
+#define pread64 pread
+#define pwrite64 pwrite
+#define truncate64 truncate
+#define ftruncate64 ftruncate
+#define lockf64 lockf
+#define off64_t off_t
+#endif
+
+#define POSIX_CLOSE_RESTART     0
+
+#define _XOPEN_VERSION          700
+#define _XOPEN_UNIX             1
+#define _XOPEN_ENH_I18N         1
+
+#define _POSIX_VERSION          200809L
+#define _POSIX2_VERSION         _POSIX_VERSION
+
+#define _POSIX_ADVISORY_INFO    _POSIX_VERSION
+#define _POSIX_CHOWN_RESTRICTED 1
+#define _POSIX_IPV6             _POSIX_VERSION
+#define _POSIX_JOB_CONTROL      1
+#define _POSIX_MAPPED_FILES     _POSIX_VERSION
+#define _POSIX_MEMLOCK          _POSIX_VERSION
+#define _POSIX_MEMLOCK_RANGE    _POSIX_VERSION
+#define _POSIX_MEMORY_PROTECTION _POSIX_VERSION
+#define _POSIX_MESSAGE_PASSING  _POSIX_VERSION
+#define _POSIX_FSYNC            _POSIX_VERSION
+#define _POSIX_NO_TRUNC         1
+#define _POSIX_RAW_SOCKETS      _POSIX_VERSION
+#define _POSIX_REALTIME_SIGNALS _POSIX_VERSION
+#define _POSIX_REGEXP           1
+#define _POSIX_SAVED_IDS        1
+#define _POSIX_SHELL            1
+#define _POSIX_SPAWN            _POSIX_VERSION
+#define _POSIX_VDISABLE         0
+
+#define _POSIX_THREADS          _POSIX_VERSION
+#define _POSIX_THREAD_PROCESS_SHARED _POSIX_VERSION
+#define _POSIX_THREAD_SAFE_FUNCTIONS _POSIX_VERSION
+#define _POSIX_THREAD_ATTR_STACKADDR _POSIX_VERSION
+#define _POSIX_THREAD_ATTR_STACKSIZE _POSIX_VERSION
+#define _POSIX_THREAD_PRIORITY_SCHEDULING _POSIX_VERSION
+#define _POSIX_THREAD_CPUTIME   _POSIX_VERSION
+#define _POSIX_TIMERS           _POSIX_VERSION
+#define _POSIX_TIMEOUTS         _POSIX_VERSION
+#define _POSIX_MONOTONIC_CLOCK  _POSIX_VERSION
+#define _POSIX_CPUTIME          _POSIX_VERSION
+#define _POSIX_CLOCK_SELECTION  _POSIX_VERSION
+#define _POSIX_BARRIERS         _POSIX_VERSION
+#define _POSIX_SPIN_LOCKS       _POSIX_VERSION
+#define _POSIX_READER_WRITER_LOCKS _POSIX_VERSION
+#define _POSIX_ASYNCHRONOUS_IO  _POSIX_VERSION
+#define _POSIX_SEMAPHORES       _POSIX_VERSION
+#define _POSIX_SHARED_MEMORY_OBJECTS _POSIX_VERSION
+
+#define _POSIX2_C_BIND          _POSIX_VERSION
+
+#include <bits/posix.h>
+
+
+
+#define _PC_LINK_MAX	0
+#define _PC_MAX_CANON	1
+#define _PC_MAX_INPUT	2
+#define _PC_NAME_MAX	3
+#define _PC_PATH_MAX	4
+#define _PC_PIPE_BUF	5
+#define _PC_CHOWN_RESTRICTED	6
+#define _PC_NO_TRUNC	7
+#define _PC_VDISABLE	8
+#define _PC_SYNC_IO	9
+#define _PC_ASYNC_IO	10
+#define _PC_PRIO_IO	11
+#define _PC_SOCK_MAXBUF	12
+#define _PC_FILESIZEBITS	13
+#define _PC_REC_INCR_XFER_SIZE	14
+#define _PC_REC_MAX_XFER_SIZE	15
+#define _PC_REC_MIN_XFER_SIZE	16
+#define _PC_REC_XFER_ALIGN	17
+#define _PC_ALLOC_SIZE_MIN	18
+#define _PC_SYMLINK_MAX	19
+#define _PC_2_SYMLINKS	20
+
+#define _SC_ARG_MAX	0
+#define _SC_CHILD_MAX	1
+#define _SC_CLK_TCK	2
+#define _SC_NGROUPS_MAX	3
+#define _SC_OPEN_MAX	4
+#define _SC_STREAM_MAX	5
+#define _SC_TZNAME_MAX	6
+#define _SC_JOB_CONTROL	7
+#define _SC_SAVED_IDS	8
+#define _SC_REALTIME_SIGNALS	9
+#define _SC_PRIORITY_SCHEDULING	10
+#define _SC_TIMERS	11
+#define _SC_ASYNCHRONOUS_IO	12
+#define _SC_PRIORITIZED_IO	13
+#define _SC_SYNCHRONIZED_IO	14
+#define _SC_FSYNC	15
+#define _SC_MAPPED_FILES	16
+#define _SC_MEMLOCK	17
+#define _SC_MEMLOCK_RANGE	18
+#define _SC_MEMORY_PROTECTION	19
+#define _SC_MESSAGE_PASSING	20
+#define _SC_SEMAPHORES	21
+#define _SC_SHARED_MEMORY_OBJECTS	22
+#define _SC_AIO_LISTIO_MAX	23
+#define _SC_AIO_MAX	24
+#define _SC_AIO_PRIO_DELTA_MAX	25
+#define _SC_DELAYTIMER_MAX	26
+#define _SC_MQ_OPEN_MAX	27
+#define _SC_MQ_PRIO_MAX	28
+#define _SC_VERSION	29
+#define _SC_PAGE_SIZE	30
+#define _SC_PAGESIZE	30 /* !! */
+#define _SC_RTSIG_MAX	31
+#define _SC_SEM_NSEMS_MAX	32
+#define _SC_SEM_VALUE_MAX	33
+#define _SC_SIGQUEUE_MAX	34
+#define _SC_TIMER_MAX	35
+#define _SC_BC_BASE_MAX	36
+#define _SC_BC_DIM_MAX	37
+#define _SC_BC_SCALE_MAX	38
+#define _SC_BC_STRING_MAX	39
+#define _SC_COLL_WEIGHTS_MAX	40
+#define _SC_EXPR_NEST_MAX	42
+#define _SC_LINE_MAX	43
+#define _SC_RE_DUP_MAX	44
+#define _SC_2_VERSION	46
+#define _SC_2_C_BIND	47
+#define _SC_2_C_DEV	48
+#define _SC_2_FORT_DEV	49
+#define _SC_2_FORT_RUN	50
+#define _SC_2_SW_DEV	51
+#define _SC_2_LOCALEDEF	52
+#define _SC_UIO_MAXIOV	60 /* !! */
+#define _SC_IOV_MAX	60
+#define _SC_THREADS	67
+#define _SC_THREAD_SAFE_FUNCTIONS	68
+#define _SC_GETGR_R_SIZE_MAX	69
+#define _SC_GETPW_R_SIZE_MAX	70
+#define _SC_LOGIN_NAME_MAX	71
+#define _SC_TTY_NAME_MAX	72
+#define _SC_THREAD_DESTRUCTOR_ITERATIONS	73
+#define _SC_THREAD_KEYS_MAX	74
+#define _SC_THREAD_STACK_MIN	75
+#define _SC_THREAD_THREADS_MAX	76
+#define _SC_THREAD_ATTR_STACKADDR	77
+#define _SC_THREAD_ATTR_STACKSIZE	78
+#define _SC_THREAD_PRIORITY_SCHEDULING	79
+#define _SC_THREAD_PRIO_INHERIT	80
+#define _SC_THREAD_PRIO_PROTECT	81
+#define _SC_THREAD_PROCESS_SHARED	82
+#define _SC_NPROCESSORS_CONF	83
+#define _SC_NPROCESSORS_ONLN	84
+#define _SC_PHYS_PAGES	85
+#define _SC_AVPHYS_PAGES	86
+#define _SC_ATEXIT_MAX	87
+#define _SC_PASS_MAX	88
+#define _SC_XOPEN_VERSION	89
+#define _SC_XOPEN_XCU_VERSION	90
+#define _SC_XOPEN_UNIX	91
+#define _SC_XOPEN_CRYPT	92
+#define _SC_XOPEN_ENH_I18N	93
+#define _SC_XOPEN_SHM	94
+#define _SC_2_CHAR_TERM	95
+#define _SC_2_UPE	97
+#define _SC_XOPEN_XPG2	98
+#define _SC_XOPEN_XPG3	99
+#define _SC_XOPEN_XPG4	100
+#define _SC_NZERO	109
+#define _SC_XBS5_ILP32_OFF32	125
+#define _SC_XBS5_ILP32_OFFBIG	126
+#define _SC_XBS5_LP64_OFF64	127
+#define _SC_XBS5_LPBIG_OFFBIG	128
+#define _SC_XOPEN_LEGACY	129
+#define _SC_XOPEN_REALTIME	130
+#define _SC_XOPEN_REALTIME_THREADS	131
+#define _SC_ADVISORY_INFO	132
+#define _SC_BARRIERS	133
+#define _SC_CLOCK_SELECTION	137
+#define _SC_CPUTIME	138
+#define _SC_THREAD_CPUTIME	139
+#define _SC_MONOTONIC_CLOCK	149
+#define _SC_READER_WRITER_LOCKS	153
+#define _SC_SPIN_LOCKS	154
+#define _SC_REGEXP	155
+#define _SC_SHELL	157
+#define _SC_SPAWN	159
+#define _SC_SPORADIC_SERVER	160
+#define _SC_THREAD_SPORADIC_SERVER	161
+#define _SC_TIMEOUTS	164
+#define _SC_TYPED_MEMORY_OBJECTS	165
+#define _SC_2_PBS	168
+#define _SC_2_PBS_ACCOUNTING	169
+#define _SC_2_PBS_LOCATE	170
+#define _SC_2_PBS_MESSAGE	171
+#define _SC_2_PBS_TRACK	172
+#define _SC_SYMLOOP_MAX	173
+#define _SC_STREAMS	174
+#define _SC_2_PBS_CHECKPOINT	175
+#define _SC_V6_ILP32_OFF32	176
+#define _SC_V6_ILP32_OFFBIG	177
+#define _SC_V6_LP64_OFF64	178
+#define _SC_V6_LPBIG_OFFBIG	179
+#define _SC_HOST_NAME_MAX	180
+#define _SC_TRACE	181
+#define _SC_TRACE_EVENT_FILTER	182
+#define _SC_TRACE_INHERIT	183
+#define _SC_TRACE_LOG	184
+
+#define _SC_IPV6	235
+#define _SC_RAW_SOCKETS	236
+#define _SC_V7_ILP32_OFF32	237
+#define _SC_V7_ILP32_OFFBIG	238
+#define _SC_V7_LP64_OFF64	239
+#define _SC_V7_LPBIG_OFFBIG	240
+#define _SC_SS_REPL_MAX	241
+#define _SC_TRACE_EVENT_NAME_MAX	242
+#define _SC_TRACE_NAME_MAX	243
+#define _SC_TRACE_SYS_MAX	244
+#define _SC_TRACE_USER_EVENT_MAX	245
+#define _SC_XOPEN_STREAMS	246
+#define _SC_THREAD_ROBUST_PRIO_INHERIT	247
+#define _SC_THREAD_ROBUST_PRIO_PROTECT	248
+
+#define _CS_PATH	0
+#define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS	1
+#define _CS_GNU_LIBC_VERSION	2
+#define _CS_GNU_LIBPTHREAD_VERSION	3
+#define _CS_POSIX_V5_WIDTH_RESTRICTED_ENVS	4
+#define _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS	5
+
+#define _CS_POSIX_V6_ILP32_OFF32_CFLAGS	1116
+#define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS	1117
+#define _CS_POSIX_V6_ILP32_OFF32_LIBS	1118
+#define _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS	1119
+#define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS	1120
+#define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS	1121
+#define _CS_POSIX_V6_ILP32_OFFBIG_LIBS	1122
+#define _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS	1123
+#define _CS_POSIX_V6_LP64_OFF64_CFLAGS	1124
+#define _CS_POSIX_V6_LP64_OFF64_LDFLAGS	1125
+#define _CS_POSIX_V6_LP64_OFF64_LIBS	1126
+#define _CS_POSIX_V6_LP64_OFF64_LINTFLAGS	1127
+#define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS	1128
+#define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS	1129
+#define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS	1130
+#define _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS	1131
+#define _CS_POSIX_V7_ILP32_OFF32_CFLAGS	1132
+#define _CS_POSIX_V7_ILP32_OFF32_LDFLAGS	1133
+#define _CS_POSIX_V7_ILP32_OFF32_LIBS	1134
+#define _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS	1135
+#define _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS	1136
+#define _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS	1137
+#define _CS_POSIX_V7_ILP32_OFFBIG_LIBS	1138
+#define _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS	1139
+#define _CS_POSIX_V7_LP64_OFF64_CFLAGS	1140
+#define _CS_POSIX_V7_LP64_OFF64_LDFLAGS	1141
+#define _CS_POSIX_V7_LP64_OFF64_LIBS	1142
+#define _CS_POSIX_V7_LP64_OFF64_LINTFLAGS	1143
+#define _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS	1144
+#define _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS	1145
+#define _CS_POSIX_V7_LPBIG_OFFBIG_LIBS	1146
+#define _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS	1147
+#define _CS_V6_ENV	1148
+#define _CS_V7_ENV	1149
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/utime.h b/i686-linux-musl/include/utime.h
new file mode 100644
index 0000000..5755bd5
--- /dev/null
+++ b/i686-linux-musl/include/utime.h
@@ -0,0 +1,29 @@
+#ifndef	_UTIME_H
+#define	_UTIME_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_time_t
+
+#include <bits/alltypes.h>
+
+struct utimbuf {
+	time_t actime;
+	time_t modtime;
+};
+
+int utime (const char *, const struct utimbuf *);
+
+#if _REDIR_TIME64
+__REDIR(utime, __utime64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/utmp.h b/i686-linux-musl/include/utmp.h
new file mode 100644
index 0000000..48a400d
--- /dev/null
+++ b/i686-linux-musl/include/utmp.h
@@ -0,0 +1,52 @@
+#ifndef _UTMP_H
+#define _UTMP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <utmpx.h>
+
+#define ACCOUNTING 9
+#define UT_NAMESIZE 32
+#define UT_HOSTSIZE 256
+#define UT_LINESIZE 32
+
+struct lastlog {
+	time_t ll_time;
+	char ll_line[UT_LINESIZE];
+	char ll_host[UT_HOSTSIZE];
+};
+
+#define ut_time ut_tv.tv_sec
+#define ut_name ut_user
+#define ut_addr ut_addr_v6[0]
+#define utmp utmpx
+#define e_exit __e_exit
+#define e_termination __e_termination
+
+void         endutent(void);
+struct utmp *getutent(void);
+struct utmp *getutid(const struct utmp *);
+struct utmp *getutline(const struct utmp *);
+struct utmp *pututline(const struct utmp *);
+void         setutent(void);
+
+void updwtmp(const char *, const struct utmp *);
+int utmpname(const char *);
+
+int login_tty(int);
+
+#define _PATH_UTMP "/dev/null/utmp"
+#define _PATH_WTMP "/dev/null/wtmp"
+
+#define UTMP_FILE _PATH_UTMP
+#define WTMP_FILE _PATH_WTMP
+#define UTMP_FILENAME _PATH_UTMP
+#define WTMP_FILENAME _PATH_WTMP
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/utmpx.h b/i686-linux-musl/include/utmpx.h
new file mode 100644
index 0000000..b293f42
--- /dev/null
+++ b/i686-linux-musl/include/utmpx.h
@@ -0,0 +1,67 @@
+#ifndef _UTMPX_H
+#define _UTMPX_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_pid_t
+#define __NEED_time_t
+#define __NEED_suseconds_t
+#define __NEED_struct_timeval
+
+#include <bits/alltypes.h>
+
+struct utmpx {
+	short ut_type;
+	short __ut_pad1;
+	pid_t ut_pid;
+	char ut_line[32];
+	char ut_id[4];
+	char ut_user[32];
+	char ut_host[256];
+	struct {
+		short __e_termination;
+		short __e_exit;
+	} ut_exit;
+#if __BYTE_ORDER == 1234
+	int ut_session, __ut_pad2;
+#else
+	int __ut_pad2, ut_session;
+#endif
+	struct timeval ut_tv;
+	unsigned ut_addr_v6[4];
+	char __unused[20];
+};
+
+void          endutxent(void);
+struct utmpx *getutxent(void);
+struct utmpx *getutxid(const struct utmpx *);
+struct utmpx *getutxline(const struct utmpx *);
+struct utmpx *pututxline(const struct utmpx *);
+void          setutxent(void);
+
+#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
+#define e_exit __e_exit
+#define e_termination __e_termination
+void updwtmpx(const char *, const struct utmpx *);
+int utmpxname(const char *);
+#endif
+
+#define EMPTY           0
+#define RUN_LVL         1
+#define BOOT_TIME       2
+#define NEW_TIME        3
+#define OLD_TIME        4
+#define INIT_PROCESS    5
+#define LOGIN_PROCESS   6
+#define USER_PROCESS    7
+#define DEAD_PROCESS    8
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/values.h b/i686-linux-musl/include/values.h
new file mode 100644
index 0000000..fe4949f
--- /dev/null
+++ b/i686-linux-musl/include/values.h
@@ -0,0 +1,39 @@
+#ifndef _VALUES_H
+#define _VALUES_H
+
+#include <limits.h>
+
+#define CHARBITS   (sizeof(char)   * 8)
+#define SHORTBITS  (sizeof(short)  * 8)
+#define INTBITS    (sizeof(int)    * 8)
+#define LONGBITS   (sizeof(long)   * 8)
+#define PTRBITS    (sizeof(char *) * 8)
+#define DOUBLEBITS (sizeof(double) * 8)
+#define FLOATBITS  (sizeof(float)  * 8)
+
+#define MINSHORT SHRT_MIN
+#define MININT   INT_MIN
+#define MINLONG  LONG_MIN
+
+#define MAXSHORT SHRT_MAX
+#define MAXINT   INT_MAX
+#define MAXLONG  LONG_MAX
+
+#define HIBITS   MINSHORT
+#define HIBITL   MINLONG
+
+#include <float.h>
+
+#define MAXDOUBLE DBL_MAX
+#undef  MAXFLOAT
+#define MAXFLOAT  FLT_MAX
+#define MINDOUBLE DBL_MIN
+#define MINFLOAT  FLT_MIN
+#define DMINEXP   DBL_MIN_EXP
+#define FMINEXP   FLT_MIN_EXP
+#define DMAXEXP   DBL_MAX_EXP
+#define FMAXEXP   FLT_MAX_EXP
+
+#define BITSPERBYTE CHAR_BIT
+
+#endif
diff --git a/i686-linux-musl/include/video/edid.h b/i686-linux-musl/include/video/edid.h
new file mode 100644
index 0000000..0269d64
--- /dev/null
+++ b/i686-linux-musl/include/video/edid.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_video_edid_h__
+#define _UAPI__linux_video_edid_h__
+struct edid_info {
+  unsigned char dummy[128];
+};
+#endif
diff --git a/i686-linux-musl/include/video/sisfb.h b/i686-linux-musl/include/video/sisfb.h
new file mode 100644
index 0000000..1feeda0
--- /dev/null
+++ b/i686-linux-musl/include/video/sisfb.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_LINUX_SISFB_H_
+#define _UAPI_LINUX_SISFB_H_
+#include <linux/types.h>
+#include <asm/ioctl.h>
+#define CRT2_DEFAULT 0x00000001
+#define CRT2_LCD 0x00000002
+#define CRT2_TV 0x00000004
+#define CRT2_VGA 0x00000008
+#define TV_NTSC 0x00000010
+#define TV_PAL 0x00000020
+#define TV_HIVISION 0x00000040
+#define TV_YPBPR 0x00000080
+#define TV_AVIDEO 0x00000100
+#define TV_SVIDEO 0x00000200
+#define TV_SCART 0x00000400
+#define TV_PALM 0x00001000
+#define TV_PALN 0x00002000
+#define TV_NTSCJ 0x00001000
+#define TV_CHSCART 0x00008000
+#define TV_CHYPBPR525I 0x00010000
+#define CRT1_VGA 0x00000000
+#define CRT1_LCDA 0x00020000
+#define VGA2_CONNECTED 0x00040000
+#define VB_DISPTYPE_CRT1 0x00080000
+#define VB_SINGLE_MODE 0x20000000
+#define VB_MIRROR_MODE 0x40000000
+#define VB_DUALVIEW_MODE 0x80000000
+#define CRT2_ENABLE (CRT2_LCD | CRT2_TV | CRT2_VGA)
+#define TV_STANDARD (TV_NTSC | TV_PAL | TV_PALM | TV_PALN | TV_NTSCJ)
+#define TV_INTERFACE (TV_AVIDEO | TV_SVIDEO | TV_SCART | TV_HIVISION | TV_YPBPR | TV_CHSCART | TV_CHYPBPR525I)
+#define TV_YPBPR525I TV_NTSC
+#define TV_YPBPR525P TV_PAL
+#define TV_YPBPR750P TV_PALM
+#define TV_YPBPR1080I TV_PALN
+#define TV_YPBPRALL (TV_YPBPR525I | TV_YPBPR525P | TV_YPBPR750P | TV_YPBPR1080I)
+#define VB_DISPTYPE_DISP2 CRT2_ENABLE
+#define VB_DISPTYPE_CRT2 CRT2_ENABLE
+#define VB_DISPTYPE_DISP1 VB_DISPTYPE_CRT1
+#define VB_DISPMODE_SINGLE VB_SINGLE_MODE
+#define VB_DISPMODE_MIRROR VB_MIRROR_MODE
+#define VB_DISPMODE_DUAL VB_DUALVIEW_MODE
+#define VB_DISPLAY_MODE (SINGLE_MODE | MIRROR_MODE | DUALVIEW_MODE)
+struct sisfb_info {
+  __u32 sisfb_id;
+#ifndef SISFB_ID
+#define SISFB_ID 0x53495346
+#endif
+  __u32 chip_id;
+  __u32 memory;
+  __u32 heapstart;
+  __u8 fbvidmode;
+  __u8 sisfb_version;
+  __u8 sisfb_revision;
+  __u8 sisfb_patchlevel;
+  __u8 sisfb_caps;
+  __u32 sisfb_tqlen;
+  __u32 sisfb_pcibus;
+  __u32 sisfb_pcislot;
+  __u32 sisfb_pcifunc;
+  __u8 sisfb_lcdpdc;
+  __u8 sisfb_lcda;
+  __u32 sisfb_vbflags;
+  __u32 sisfb_currentvbflags;
+  __u32 sisfb_scalelcd;
+  __u32 sisfb_specialtiming;
+  __u8 sisfb_haveemi;
+  __u8 sisfb_emi30, sisfb_emi31, sisfb_emi32, sisfb_emi33;
+  __u8 sisfb_haveemilcd;
+  __u8 sisfb_lcdpdca;
+  __u16 sisfb_tvxpos, sisfb_tvypos;
+  __u32 sisfb_heapsize;
+  __u32 sisfb_videooffset;
+  __u32 sisfb_curfstn;
+  __u32 sisfb_curdstn;
+  __u16 sisfb_pci_vendor;
+  __u32 sisfb_vbflags2;
+  __u8 sisfb_can_post;
+  __u8 sisfb_card_posted;
+  __u8 sisfb_was_boot_device;
+  __u8 reserved[183];
+};
+#define SISFB_CMD_GETVBFLAGS 0x55AA0001
+#define SISFB_CMD_SWITCHCRT1 0x55AA0010
+#define SISFB_CMD_ERR_OK 0x80000000
+#define SISFB_CMD_ERR_LOCKED 0x80000001
+#define SISFB_CMD_ERR_EARLY 0x80000002
+#define SISFB_CMD_ERR_NOVB 0x80000003
+#define SISFB_CMD_ERR_NOCRT2 0x80000004
+#define SISFB_CMD_ERR_UNKNOWN 0x8000ffff
+#define SISFB_CMD_ERR_OTHER 0x80010000
+struct sisfb_cmd {
+  __u32 sisfb_cmd;
+  __u32 sisfb_arg[16];
+  __u32 sisfb_result[4];
+};
+#define SISFB_GET_INFO_SIZE _IOR(0xF3, 0x00, __u32)
+#define SISFB_GET_INFO _IOR(0xF3, 0x01, struct sisfb_info)
+#define SISFB_GET_VBRSTATUS _IOR(0xF3, 0x02, __u32)
+#define SISFB_GET_AUTOMAXIMIZE _IOR(0xF3, 0x03, __u32)
+#define SISFB_SET_AUTOMAXIMIZE _IOW(0xF3, 0x03, __u32)
+#define SISFB_GET_TVPOSOFFSET _IOR(0xF3, 0x04, __u32)
+#define SISFB_SET_TVPOSOFFSET _IOW(0xF3, 0x04, __u32)
+#define SISFB_COMMAND _IOWR(0xF3, 0x05, struct sisfb_cmd)
+#define SISFB_SET_LOCK _IOW(0xF3, 0x06, __u32)
+#define SISFB_GET_INFO_OLD _IOR('n', 0xF8, __u32)
+#define SISFB_GET_VBRSTATUS_OLD _IOR('n', 0xF9, __u32)
+#define SISFB_GET_AUTOMAXIMIZE_OLD _IOR('n', 0xFA, __u32)
+#define SISFB_SET_AUTOMAXIMIZE_OLD _IOW('n', 0xFA, __u32)
+struct sis_memreq {
+  __u32 offset;
+  __u32 size;
+};
+#endif
diff --git a/i686-linux-musl/include/video/uvesafb.h b/i686-linux-musl/include/video/uvesafb.h
new file mode 100644
index 0000000..d0dca96
--- /dev/null
+++ b/i686-linux-musl/include/video/uvesafb.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_UVESAFB_H
+#define _UAPI_UVESAFB_H
+#include <linux/types.h>
+struct v86_regs {
+  __u32 ebx;
+  __u32 ecx;
+  __u32 edx;
+  __u32 esi;
+  __u32 edi;
+  __u32 ebp;
+  __u32 eax;
+  __u32 eip;
+  __u32 eflags;
+  __u32 esp;
+  __u16 cs;
+  __u16 ss;
+  __u16 es;
+  __u16 ds;
+  __u16 fs;
+  __u16 gs;
+};
+#define TF_VBEIB 0x01
+#define TF_BUF_ESDI 0x02
+#define TF_BUF_ESBX 0x04
+#define TF_BUF_RET 0x08
+#define TF_EXIT 0x10
+struct uvesafb_task {
+  __u8 flags;
+  int buf_len;
+  struct v86_regs regs;
+};
+#define VBE_CAP_CAN_SWITCH_DAC 0x01
+#define VBE_CAP_VGACOMPAT 0x02
+struct vbe_ib {
+  char vbe_signature[4];
+  __u16 vbe_version;
+  __u32 oem_string_ptr;
+  __u32 capabilities;
+  __u32 mode_list_ptr;
+  __u16 total_memory;
+  __u16 oem_software_rev;
+  __u32 oem_vendor_name_ptr;
+  __u32 oem_product_name_ptr;
+  __u32 oem_product_rev_ptr;
+  __u8 reserved[222];
+  char oem_data[256];
+  char misc_data[512];
+} __attribute__((packed));
+#endif
diff --git a/i686-linux-musl/include/wait.h b/i686-linux-musl/include/wait.h
new file mode 100644
index 0000000..98396e2
--- /dev/null
+++ b/i686-linux-musl/include/wait.h
@@ -0,0 +1,2 @@
+#warning redirecting incorrect #include <wait.h> to <sys/wait.h>
+#include <sys/wait.h>
diff --git a/i686-linux-musl/include/wchar.h b/i686-linux-musl/include/wchar.h
new file mode 100644
index 0000000..ed5d774
--- /dev/null
+++ b/i686-linux-musl/include/wchar.h
@@ -0,0 +1,207 @@
+#ifndef _WCHAR_H
+#define _WCHAR_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_FILE
+#define __NEED___isoc_va_list
+#define __NEED_size_t
+#define __NEED_wchar_t
+#define __NEED_wint_t
+#define __NEED_mbstate_t
+
+#if __STDC_VERSION__ < 201112L
+#define __NEED_struct__IO_FILE
+#endif
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define __NEED_locale_t
+#define __NEED_va_list
+#endif
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define __NEED_wctype_t
+#endif
+
+#include <bits/alltypes.h>
+
+#if L'\0'-1 > 0
+#define WCHAR_MAX (0xffffffffu+L'\0')
+#define WCHAR_MIN (0+L'\0')
+#else
+#define WCHAR_MAX (0x7fffffff+L'\0')
+#define WCHAR_MIN (-1-0x7fffffff+L'\0')
+#endif
+
+#if __cplusplus >= 201103L
+#define NULL nullptr
+#elif defined(__cplusplus)
+#define NULL 0L
+#else
+#define NULL ((void*)0)
+#endif
+
+#undef WEOF
+#define WEOF 0xffffffffU
+
+wchar_t *wcscpy (wchar_t *__restrict, const wchar_t *__restrict);
+wchar_t *wcsncpy (wchar_t *__restrict, const wchar_t *__restrict, size_t);
+
+wchar_t *wcscat (wchar_t *__restrict, const wchar_t *__restrict);
+wchar_t *wcsncat (wchar_t *__restrict, const wchar_t *__restrict, size_t);
+
+int wcscmp (const wchar_t *, const wchar_t *);
+int wcsncmp (const wchar_t *, const wchar_t *, size_t);
+
+int wcscoll(const wchar_t *, const wchar_t *);
+size_t wcsxfrm (wchar_t *__restrict, const wchar_t *__restrict, size_t);
+
+wchar_t *wcschr (const wchar_t *, wchar_t);
+wchar_t *wcsrchr (const wchar_t *, wchar_t);
+
+size_t wcscspn (const wchar_t *, const wchar_t *);
+size_t wcsspn (const wchar_t *, const wchar_t *);
+wchar_t *wcspbrk (const wchar_t *, const wchar_t *);
+
+wchar_t *wcstok (wchar_t *__restrict, const wchar_t *__restrict, wchar_t **__restrict);
+
+size_t wcslen (const wchar_t *);
+
+wchar_t *wcsstr (const wchar_t *__restrict, const wchar_t *__restrict);
+wchar_t *wcswcs (const wchar_t *, const wchar_t *);
+
+wchar_t *wmemchr (const wchar_t *, wchar_t, size_t);
+int wmemcmp (const wchar_t *, const wchar_t *, size_t);
+wchar_t *wmemcpy (wchar_t *__restrict, const wchar_t *__restrict, size_t);
+wchar_t *wmemmove (wchar_t *, const wchar_t *, size_t);
+wchar_t *wmemset (wchar_t *, wchar_t, size_t);
+
+wint_t btowc (int);
+int wctob (wint_t);
+
+int mbsinit (const mbstate_t *);
+size_t mbrtowc (wchar_t *__restrict, const char *__restrict, size_t, mbstate_t *__restrict);
+size_t wcrtomb (char *__restrict, wchar_t, mbstate_t *__restrict);
+
+size_t mbrlen (const char *__restrict, size_t, mbstate_t *__restrict);
+
+size_t mbsrtowcs (wchar_t *__restrict, const char **__restrict, size_t, mbstate_t *__restrict);
+size_t wcsrtombs (char *__restrict, const wchar_t **__restrict, size_t, mbstate_t *__restrict);
+
+float wcstof (const wchar_t *__restrict, wchar_t **__restrict);
+double wcstod (const wchar_t *__restrict, wchar_t **__restrict);
+long double wcstold (const wchar_t *__restrict, wchar_t **__restrict);
+
+long wcstol (const wchar_t *__restrict, wchar_t **__restrict, int);
+unsigned long wcstoul (const wchar_t *__restrict, wchar_t **__restrict, int);
+
+long long wcstoll (const wchar_t *__restrict, wchar_t **__restrict, int);
+unsigned long long wcstoull (const wchar_t *__restrict, wchar_t **__restrict, int);
+
+
+
+int fwide (FILE *, int);
+
+
+int wprintf (const wchar_t *__restrict, ...);
+int fwprintf (FILE *__restrict, const wchar_t *__restrict, ...);
+int swprintf (wchar_t *__restrict, size_t, const wchar_t *__restrict, ...);
+
+int vwprintf (const wchar_t *__restrict, __isoc_va_list);
+int vfwprintf (FILE *__restrict, const wchar_t *__restrict, __isoc_va_list);
+int vswprintf (wchar_t *__restrict, size_t, const wchar_t *__restrict, __isoc_va_list);
+
+int wscanf (const wchar_t *__restrict, ...);
+int fwscanf (FILE *__restrict, const wchar_t *__restrict, ...);
+int swscanf (const wchar_t *__restrict, const wchar_t *__restrict, ...);
+
+int vwscanf (const wchar_t *__restrict, __isoc_va_list);
+int vfwscanf (FILE *__restrict, const wchar_t *__restrict, __isoc_va_list);
+int vswscanf (const wchar_t *__restrict, const wchar_t *__restrict, __isoc_va_list);
+
+wint_t fgetwc (FILE *);
+wint_t getwc (FILE *);
+wint_t getwchar (void);
+
+wint_t fputwc (wchar_t, FILE *);
+wint_t putwc (wchar_t, FILE *);
+wint_t putwchar (wchar_t);
+
+wchar_t *fgetws (wchar_t *__restrict, int, FILE *__restrict);
+int fputws (const wchar_t *__restrict, FILE *__restrict);
+
+wint_t ungetwc (wint_t, FILE *);
+
+struct tm;
+size_t wcsftime (wchar_t *__restrict, size_t, const wchar_t *__restrict, const struct tm *__restrict);
+
+#undef iswdigit
+
+#if defined(_GNU_SOURCE)
+wint_t fgetwc_unlocked (FILE *);
+wint_t getwc_unlocked (FILE *);
+wint_t getwchar_unlocked (void);
+wint_t fputwc_unlocked (wchar_t, FILE *);
+wint_t putwc_unlocked (wchar_t, FILE *);
+wint_t putwchar_unlocked (wchar_t);
+wchar_t *fgetws_unlocked (wchar_t *__restrict, int, FILE *__restrict);
+int fputws_unlocked (const wchar_t *__restrict, FILE *__restrict);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+size_t wcsftime_l (wchar_t *__restrict, size_t, const wchar_t *__restrict, const struct tm *__restrict, locale_t);
+#endif
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)  || defined(_BSD_SOURCE)
+FILE *open_wmemstream(wchar_t **, size_t *);
+size_t mbsnrtowcs(wchar_t *__restrict, const char **__restrict, size_t, size_t, mbstate_t *__restrict);
+size_t wcsnrtombs(char *__restrict, const wchar_t **__restrict, size_t, size_t, mbstate_t *__restrict);
+wchar_t *wcsdup(const wchar_t *);
+size_t wcsnlen (const wchar_t *, size_t);
+wchar_t *wcpcpy (wchar_t *__restrict, const wchar_t *__restrict);
+wchar_t *wcpncpy (wchar_t *__restrict, const wchar_t *__restrict, size_t);
+int wcscasecmp(const wchar_t *, const wchar_t *);
+int wcscasecmp_l(const wchar_t *, const wchar_t *, locale_t);
+int wcsncasecmp(const wchar_t *, const wchar_t *, size_t);
+int wcsncasecmp_l(const wchar_t *, const wchar_t *, size_t, locale_t);
+int wcscoll_l(const wchar_t *, const wchar_t *, locale_t);
+size_t wcsxfrm_l(wchar_t *__restrict, const wchar_t *__restrict, size_t, locale_t);
+#endif
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+int wcwidth (wchar_t);
+int wcswidth (const wchar_t *, size_t);
+int       iswalnum(wint_t);
+int       iswalpha(wint_t);
+int       iswblank(wint_t);
+int       iswcntrl(wint_t);
+int       iswdigit(wint_t);
+int       iswgraph(wint_t);
+int       iswlower(wint_t);
+int       iswprint(wint_t);
+int       iswpunct(wint_t);
+int       iswspace(wint_t);
+int       iswupper(wint_t);
+int       iswxdigit(wint_t);
+int       iswctype(wint_t, wctype_t);
+wint_t    towlower(wint_t);
+wint_t    towupper(wint_t);
+wctype_t  wctype(const char *);
+
+#ifndef __cplusplus
+#undef iswdigit
+#define iswdigit(a) (0 ? iswdigit(a) : ((unsigned)(a)-'0') < 10)
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/wctype.h b/i686-linux-musl/include/wctype.h
new file mode 100644
index 0000000..bc2420d
--- /dev/null
+++ b/i686-linux-musl/include/wctype.h
@@ -0,0 +1,79 @@
+#ifndef _WCTYPE_H
+#define _WCTYPE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_wint_t
+#define __NEED_wctype_t
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define __NEED_locale_t
+#endif
+
+#include <bits/alltypes.h>
+
+typedef const int * wctrans_t;
+
+#undef WEOF
+#define WEOF 0xffffffffU
+
+#undef iswdigit
+
+int       iswalnum(wint_t);
+int       iswalpha(wint_t);
+int       iswblank(wint_t);
+int       iswcntrl(wint_t);
+int       iswdigit(wint_t);
+int       iswgraph(wint_t);
+int       iswlower(wint_t);
+int       iswprint(wint_t);
+int       iswpunct(wint_t);
+int       iswspace(wint_t);
+int       iswupper(wint_t);
+int       iswxdigit(wint_t);
+int       iswctype(wint_t, wctype_t);
+wint_t    towctrans(wint_t, wctrans_t);
+wint_t    towlower(wint_t);
+wint_t    towupper(wint_t);
+wctrans_t wctrans(const char *);
+wctype_t  wctype(const char *);
+
+#ifndef __cplusplus
+#undef iswdigit
+#define iswdigit(a) (0 ? iswdigit(a) : ((unsigned)(a)-'0') < 10)
+#endif
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+
+int iswalnum_l(wint_t, locale_t);
+int iswalpha_l(wint_t, locale_t);
+int iswblank_l(wint_t, locale_t);
+int iswcntrl_l(wint_t, locale_t);
+int iswdigit_l(wint_t, locale_t);
+int iswgraph_l(wint_t, locale_t);
+int iswlower_l(wint_t, locale_t);
+int iswprint_l(wint_t, locale_t);
+int iswpunct_l(wint_t, locale_t);
+int iswspace_l(wint_t, locale_t);
+int iswupper_l(wint_t, locale_t);
+int iswxdigit_l(wint_t, locale_t);
+int iswctype_l(wint_t, wctype_t, locale_t);
+wint_t towlower_l(wint_t, locale_t);
+wint_t towupper_l(wint_t, locale_t);
+wint_t towctrans_l(wint_t, wctrans_t, locale_t);
+wctrans_t wctrans_l(const char *, locale_t);
+wctype_t  wctype_l(const char *, locale_t);
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/wordexp.h b/i686-linux-musl/include/wordexp.h
new file mode 100644
index 0000000..5460002
--- /dev/null
+++ b/i686-linux-musl/include/wordexp.h
@@ -0,0 +1,41 @@
+#ifndef	_WORDEXP_H
+#define	_WORDEXP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_size_t
+
+#include <bits/alltypes.h>
+
+#define WRDE_DOOFFS  1
+#define WRDE_APPEND  2
+#define WRDE_NOCMD   4
+#define WRDE_REUSE   8
+#define WRDE_SHOWERR 16
+#define WRDE_UNDEF   32
+
+typedef struct {
+	size_t we_wordc;
+	char **we_wordv;
+	size_t we_offs;
+} wordexp_t;
+
+#define WRDE_NOSYS   -1
+#define WRDE_NOSPACE 1
+#define WRDE_BADCHAR 2
+#define WRDE_BADVAL  3
+#define WRDE_CMDSUB  4
+#define WRDE_SYNTAX  5
+
+int wordexp (const char *__restrict, wordexp_t *__restrict, int);
+void wordfree (wordexp_t *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/i686-linux-musl/include/xen/evtchn.h b/i686-linux-musl/include/xen/evtchn.h
new file mode 100644
index 0000000..aa4aaaf
--- /dev/null
+++ b/i686-linux-musl/include/xen/evtchn.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 __LINUX_PUBLIC_EVTCHN_H__
+#define __LINUX_PUBLIC_EVTCHN_H__
+#define IOCTL_EVTCHN_BIND_VIRQ _IOC(_IOC_NONE, 'E', 0, sizeof(struct ioctl_evtchn_bind_virq))
+struct ioctl_evtchn_bind_virq {
+  unsigned int virq;
+};
+#define IOCTL_EVTCHN_BIND_INTERDOMAIN _IOC(_IOC_NONE, 'E', 1, sizeof(struct ioctl_evtchn_bind_interdomain))
+struct ioctl_evtchn_bind_interdomain {
+  unsigned int remote_domain, remote_port;
+};
+#define IOCTL_EVTCHN_BIND_UNBOUND_PORT _IOC(_IOC_NONE, 'E', 2, sizeof(struct ioctl_evtchn_bind_unbound_port))
+struct ioctl_evtchn_bind_unbound_port {
+  unsigned int remote_domain;
+};
+#define IOCTL_EVTCHN_UNBIND _IOC(_IOC_NONE, 'E', 3, sizeof(struct ioctl_evtchn_unbind))
+struct ioctl_evtchn_unbind {
+  unsigned int port;
+};
+#define IOCTL_EVTCHN_NOTIFY _IOC(_IOC_NONE, 'E', 4, sizeof(struct ioctl_evtchn_notify))
+struct ioctl_evtchn_notify {
+  unsigned int port;
+};
+#define IOCTL_EVTCHN_RESET _IOC(_IOC_NONE, 'E', 5, 0)
+#define IOCTL_EVTCHN_RESTRICT_DOMID _IOC(_IOC_NONE, 'E', 6, sizeof(struct ioctl_evtchn_restrict_domid))
+struct ioctl_evtchn_restrict_domid {
+  domid_t domid;
+};
+#endif
diff --git a/i686-linux-musl/include/xen/gntalloc.h b/i686-linux-musl/include/xen/gntalloc.h
new file mode 100644
index 0000000..d306b22
--- /dev/null
+++ b/i686-linux-musl/include/xen/gntalloc.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_PUBLIC_GNTALLOC_H__
+#define __LINUX_PUBLIC_GNTALLOC_H__
+#include <linux/types.h>
+#define IOCTL_GNTALLOC_ALLOC_GREF _IOC(_IOC_NONE, 'G', 5, sizeof(struct ioctl_gntalloc_alloc_gref))
+struct ioctl_gntalloc_alloc_gref {
+  __u16 domid;
+  __u16 flags;
+  __u32 count;
+  __u64 index;
+  __u32 gref_ids[1];
+};
+#define GNTALLOC_FLAG_WRITABLE 1
+#define IOCTL_GNTALLOC_DEALLOC_GREF _IOC(_IOC_NONE, 'G', 6, sizeof(struct ioctl_gntalloc_dealloc_gref))
+struct ioctl_gntalloc_dealloc_gref {
+  __u64 index;
+  __u32 count;
+};
+#define IOCTL_GNTALLOC_SET_UNMAP_NOTIFY _IOC(_IOC_NONE, 'G', 7, sizeof(struct ioctl_gntalloc_unmap_notify))
+struct ioctl_gntalloc_unmap_notify {
+  __u64 index;
+  __u32 action;
+  __u32 event_channel_port;
+};
+#define UNMAP_NOTIFY_CLEAR_BYTE 0x1
+#define UNMAP_NOTIFY_SEND_EVENT 0x2
+#endif
diff --git a/i686-linux-musl/include/xen/gntdev.h b/i686-linux-musl/include/xen/gntdev.h
new file mode 100644
index 0000000..1e78ac3
--- /dev/null
+++ b/i686-linux-musl/include/xen/gntdev.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_PUBLIC_GNTDEV_H__
+#define __LINUX_PUBLIC_GNTDEV_H__
+#include <linux/types.h>
+struct ioctl_gntdev_grant_ref {
+  __u32 domid;
+  __u32 ref;
+};
+#define IOCTL_GNTDEV_MAP_GRANT_REF _IOC(_IOC_NONE, 'G', 0, sizeof(struct ioctl_gntdev_map_grant_ref))
+struct ioctl_gntdev_map_grant_ref {
+  __u32 count;
+  __u32 pad;
+  __u64 index;
+  struct ioctl_gntdev_grant_ref refs[1];
+};
+#define IOCTL_GNTDEV_UNMAP_GRANT_REF _IOC(_IOC_NONE, 'G', 1, sizeof(struct ioctl_gntdev_unmap_grant_ref))
+struct ioctl_gntdev_unmap_grant_ref {
+  __u64 index;
+  __u32 count;
+  __u32 pad;
+};
+#define IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR _IOC(_IOC_NONE, 'G', 2, sizeof(struct ioctl_gntdev_get_offset_for_vaddr))
+struct ioctl_gntdev_get_offset_for_vaddr {
+  __u64 vaddr;
+  __u64 offset;
+  __u32 count;
+  __u32 pad;
+};
+#define IOCTL_GNTDEV_SET_MAX_GRANTS _IOC(_IOC_NONE, 'G', 3, sizeof(struct ioctl_gntdev_set_max_grants))
+struct ioctl_gntdev_set_max_grants {
+  __u32 count;
+};
+#define IOCTL_GNTDEV_SET_UNMAP_NOTIFY _IOC(_IOC_NONE, 'G', 7, sizeof(struct ioctl_gntdev_unmap_notify))
+struct ioctl_gntdev_unmap_notify {
+  __u64 index;
+  __u32 action;
+  __u32 event_channel_port;
+};
+struct gntdev_grant_copy_segment {
+  union {
+    void __user * virt;
+    struct {
+      grant_ref_t ref;
+      __u16 offset;
+      domid_t domid;
+    } foreign;
+  } source, dest;
+  __u16 len;
+  __u16 flags;
+  __s16 status;
+};
+#define IOCTL_GNTDEV_GRANT_COPY _IOC(_IOC_NONE, 'G', 8, sizeof(struct ioctl_gntdev_grant_copy))
+struct ioctl_gntdev_grant_copy {
+  unsigned int count;
+  struct gntdev_grant_copy_segment __user * segments;
+};
+#define UNMAP_NOTIFY_CLEAR_BYTE 0x1
+#define UNMAP_NOTIFY_SEND_EVENT 0x2
+#define GNTDEV_DMA_FLAG_WC (1 << 0)
+#define GNTDEV_DMA_FLAG_COHERENT (1 << 1)
+#define IOCTL_GNTDEV_DMABUF_EXP_FROM_REFS _IOC(_IOC_NONE, 'G', 9, sizeof(struct ioctl_gntdev_dmabuf_exp_from_refs))
+struct ioctl_gntdev_dmabuf_exp_from_refs {
+  __u32 flags;
+  __u32 count;
+  __u32 fd;
+  __u32 domid;
+  __u32 refs[1];
+};
+#define IOCTL_GNTDEV_DMABUF_EXP_WAIT_RELEASED _IOC(_IOC_NONE, 'G', 10, sizeof(struct ioctl_gntdev_dmabuf_exp_wait_released))
+struct ioctl_gntdev_dmabuf_exp_wait_released {
+  __u32 fd;
+  __u32 wait_to_ms;
+};
+#define IOCTL_GNTDEV_DMABUF_IMP_TO_REFS _IOC(_IOC_NONE, 'G', 11, sizeof(struct ioctl_gntdev_dmabuf_imp_to_refs))
+struct ioctl_gntdev_dmabuf_imp_to_refs {
+  __u32 fd;
+  __u32 count;
+  __u32 domid;
+  __u32 reserved;
+  __u32 refs[1];
+};
+#define IOCTL_GNTDEV_DMABUF_IMP_RELEASE _IOC(_IOC_NONE, 'G', 12, sizeof(struct ioctl_gntdev_dmabuf_imp_release))
+struct ioctl_gntdev_dmabuf_imp_release {
+  __u32 fd;
+  __u32 reserved;
+};
+#endif
diff --git a/i686-linux-musl/include/xen/privcmd.h b/i686-linux-musl/include/xen/privcmd.h
new file mode 100644
index 0000000..145446b
--- /dev/null
+++ b/i686-linux-musl/include/xen/privcmd.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_PUBLIC_PRIVCMD_H__
+#define __LINUX_PUBLIC_PRIVCMD_H__
+#include <linux/types.h>
+#include <linux/compiler.h>
+#include <xen/interface/xen.h>
+struct privcmd_hypercall {
+  __u64 op;
+  __u64 arg[5];
+};
+struct privcmd_mmap_entry {
+  __u64 va;
+  __u64 mfn;
+  __u64 npages;
+};
+struct privcmd_mmap {
+  int num;
+  domid_t dom;
+  struct privcmd_mmap_entry __user * entry;
+};
+struct privcmd_mmapbatch {
+  int num;
+  domid_t dom;
+  __u64 addr;
+  xen_pfn_t __user * arr;
+};
+#define PRIVCMD_MMAPBATCH_MFN_ERROR 0xf0000000U
+#define PRIVCMD_MMAPBATCH_PAGED_ERROR 0x80000000U
+struct privcmd_mmapbatch_v2 {
+  unsigned int num;
+  domid_t dom;
+  __u64 addr;
+  const xen_pfn_t __user * arr;
+  int __user * err;
+};
+struct privcmd_dm_op_buf {
+  void __user * uptr;
+  size_t size;
+};
+struct privcmd_dm_op {
+  domid_t dom;
+  __u16 num;
+  const struct privcmd_dm_op_buf __user * ubufs;
+};
+struct privcmd_mmap_resource {
+  domid_t dom;
+  __u32 type;
+  __u32 id;
+  __u32 idx;
+  __u64 num;
+  __u64 addr;
+};
+#define IOCTL_PRIVCMD_HYPERCALL _IOC(_IOC_NONE, 'P', 0, sizeof(struct privcmd_hypercall))
+#define IOCTL_PRIVCMD_MMAP _IOC(_IOC_NONE, 'P', 2, sizeof(struct privcmd_mmap))
+#define IOCTL_PRIVCMD_MMAPBATCH _IOC(_IOC_NONE, 'P', 3, sizeof(struct privcmd_mmapbatch))
+#define IOCTL_PRIVCMD_MMAPBATCH_V2 _IOC(_IOC_NONE, 'P', 4, sizeof(struct privcmd_mmapbatch_v2))
+#define IOCTL_PRIVCMD_DM_OP _IOC(_IOC_NONE, 'P', 5, sizeof(struct privcmd_dm_op))
+#define IOCTL_PRIVCMD_RESTRICT _IOC(_IOC_NONE, 'P', 6, sizeof(domid_t))
+#define IOCTL_PRIVCMD_MMAP_RESOURCE _IOC(_IOC_NONE, 'P', 7, sizeof(struct privcmd_mmap_resource))
+#endif
diff --git a/i686-linux-musl/lib/Scrt1.o b/i686-linux-musl/lib/Scrt1.o
new file mode 100644
index 0000000..7d5f564
--- /dev/null
+++ b/i686-linux-musl/lib/Scrt1.o
Binary files differ
diff --git a/i686-linux-musl/lib/crt1.o b/i686-linux-musl/lib/crt1.o
new file mode 100644
index 0000000..929273e
--- /dev/null
+++ b/i686-linux-musl/lib/crt1.o
Binary files differ
diff --git a/i686-linux-musl/lib/crti.o b/i686-linux-musl/lib/crti.o
new file mode 100644
index 0000000..5e0fd42
--- /dev/null
+++ b/i686-linux-musl/lib/crti.o
Binary files differ
diff --git a/i686-linux-musl/lib/crtn.o b/i686-linux-musl/lib/crtn.o
new file mode 100644
index 0000000..6cab432
--- /dev/null
+++ b/i686-linux-musl/lib/crtn.o
Binary files differ
diff --git a/i686-linux-musl/lib/ld-musl.so.1 b/i686-linux-musl/lib/ld-musl.so.1
new file mode 100755
index 0000000..9b2aa9e
--- /dev/null
+++ b/i686-linux-musl/lib/ld-musl.so.1
Binary files differ
diff --git a/i686-linux-musl/lib/libc.a b/i686-linux-musl/lib/libc.a
new file mode 100644
index 0000000..6854783
--- /dev/null
+++ b/i686-linux-musl/lib/libc.a
Binary files differ
diff --git a/i686-linux-musl/lib/libc.so b/i686-linux-musl/lib/libc.so
new file mode 100755
index 0000000..9b2aa9e
--- /dev/null
+++ b/i686-linux-musl/lib/libc.so
Binary files differ
diff --git a/i686-linux-musl/lib/libc_musl.so b/i686-linux-musl/lib/libc_musl.so
new file mode 100755
index 0000000..26ca2fa
--- /dev/null
+++ b/i686-linux-musl/lib/libc_musl.so
Binary files differ
diff --git a/i686-linux-musl/lib/libc_musl_crtbegin_dynamic.o b/i686-linux-musl/lib/libc_musl_crtbegin_dynamic.o
new file mode 100644
index 0000000..93d814e
--- /dev/null
+++ b/i686-linux-musl/lib/libc_musl_crtbegin_dynamic.o
Binary files differ
diff --git a/i686-linux-musl/lib/libc_musl_crtbegin_so.o b/i686-linux-musl/lib/libc_musl_crtbegin_so.o
new file mode 100644
index 0000000..fc24222
--- /dev/null
+++ b/i686-linux-musl/lib/libc_musl_crtbegin_so.o
Binary files differ
diff --git a/i686-linux-musl/lib/libc_musl_crtbegin_static.o b/i686-linux-musl/lib/libc_musl_crtbegin_static.o
new file mode 100644
index 0000000..44e4642
--- /dev/null
+++ b/i686-linux-musl/lib/libc_musl_crtbegin_static.o
Binary files differ
diff --git a/i686-linux-musl/lib/libc_musl_crtend.o b/i686-linux-musl/lib/libc_musl_crtend.o
new file mode 100644
index 0000000..873c6c4
--- /dev/null
+++ b/i686-linux-musl/lib/libc_musl_crtend.o
Binary files differ
diff --git a/i686-linux-musl/lib/libcrypt.a b/i686-linux-musl/lib/libcrypt.a
new file mode 100644
index 0000000..8b277f0
--- /dev/null
+++ b/i686-linux-musl/lib/libcrypt.a
@@ -0,0 +1 @@
+!<arch>
diff --git a/i686-linux-musl/lib/libdl.a b/i686-linux-musl/lib/libdl.a
new file mode 100644
index 0000000..8b277f0
--- /dev/null
+++ b/i686-linux-musl/lib/libdl.a
@@ -0,0 +1 @@
+!<arch>
diff --git a/i686-linux-musl/lib/libm.a b/i686-linux-musl/lib/libm.a
new file mode 100644
index 0000000..8b277f0
--- /dev/null
+++ b/i686-linux-musl/lib/libm.a
@@ -0,0 +1 @@
+!<arch>
diff --git a/i686-linux-musl/lib/libpthread.a b/i686-linux-musl/lib/libpthread.a
new file mode 100644
index 0000000..8b277f0
--- /dev/null
+++ b/i686-linux-musl/lib/libpthread.a
@@ -0,0 +1 @@
+!<arch>
diff --git a/i686-linux-musl/lib/libresolv.a b/i686-linux-musl/lib/libresolv.a
new file mode 100644
index 0000000..8b277f0
--- /dev/null
+++ b/i686-linux-musl/lib/libresolv.a
@@ -0,0 +1 @@
+!<arch>
diff --git a/i686-linux-musl/lib/librt.a b/i686-linux-musl/lib/librt.a
new file mode 100644
index 0000000..8b277f0
--- /dev/null
+++ b/i686-linux-musl/lib/librt.a
@@ -0,0 +1 @@
+!<arch>
diff --git a/i686-linux-musl/lib/libutil.a b/i686-linux-musl/lib/libutil.a
new file mode 100644
index 0000000..8b277f0
--- /dev/null
+++ b/i686-linux-musl/lib/libutil.a
@@ -0,0 +1 @@
+!<arch>
diff --git a/i686-linux-musl/lib/libxnet.a b/i686-linux-musl/lib/libxnet.a
new file mode 100644
index 0000000..8b277f0
--- /dev/null
+++ b/i686-linux-musl/lib/libxnet.a
@@ -0,0 +1 @@
+!<arch>
diff --git a/i686-linux-musl/lib/linker.script b/i686-linux-musl/lib/linker.script
new file mode 100755
index 0000000..3be966a
--- /dev/null
+++ b/i686-linux-musl/lib/linker.script
@@ -0,0 +1,16 @@
+ENTRY(__dlwrap__start)
+SECTIONS {
+  .linker_r 0x1000 : {
+    KEEP(*(.linker_r));
+  }
+  .linker_rx 0x486e0 : {
+    KEEP(*(.linker_rx));
+  }
+  .linker_rw 0x124010 : {
+    KEEP(*(.linker_rw));
+  }
+  .linker_rw2 0x125470 : {
+    KEEP(*(.linker_rw2));
+  }
+}
+INSERT BEFORE .note.android.embedded_linker;
diff --git a/i686-linux-musl/lib/rcrt1.o b/i686-linux-musl/lib/rcrt1.o
new file mode 100644
index 0000000..48d9407
--- /dev/null
+++ b/i686-linux-musl/lib/rcrt1.o
Binary files differ
diff --git a/linux-x86/asan/bin/aidl b/linux-x86/asan/bin/aidl
index 1547e0f..18d973a 100755
--- a/linux-x86/asan/bin/aidl
+++ b/linux-x86/asan/bin/aidl
Binary files differ
diff --git a/linux-x86/asan/bin/toybox b/linux-x86/asan/bin/toybox
index 7e8f327..79940d8 100755
--- a/linux-x86/asan/bin/toybox
+++ b/linux-x86/asan/bin/toybox
Binary files differ
diff --git a/linux-x86/asan/lib64/liblog.so b/linux-x86/asan/lib64/liblog.so
index 2be1767..1953e95 100755
--- a/linux-x86/asan/lib64/liblog.so
+++ b/linux-x86/asan/lib64/liblog.so
Binary files differ
diff --git a/linux-x86/bin/aidl b/linux-x86/bin/aidl
index 1832382..2f34f0a 100755
--- a/linux-x86/bin/aidl
+++ b/linux-x86/bin/aidl
Binary files differ
diff --git a/linux-x86/bin/py2-cmd b/linux-x86/bin/py2-cmd
index 85dda89..0c7ed73 100755
--- a/linux-x86/bin/py2-cmd
+++ b/linux-x86/bin/py2-cmd
Binary files differ
diff --git a/linux-x86/bin/py3-cmd b/linux-x86/bin/py3-cmd
index 4f5c136..8d0e6f1 100755
--- a/linux-x86/bin/py3-cmd
+++ b/linux-x86/bin/py3-cmd
Binary files differ
diff --git a/linux-x86/bin/soong_zip b/linux-x86/bin/soong_zip
index 5968558..a06409b 100755
--- a/linux-x86/bin/soong_zip
+++ b/linux-x86/bin/soong_zip
Binary files differ
diff --git a/linux-x86/bin/toybox b/linux-x86/bin/toybox
index bd0605f..f878657 100755
--- a/linux-x86/bin/toybox
+++ b/linux-x86/bin/toybox
Binary files differ
diff --git a/linux-x86/bin/zip2zip b/linux-x86/bin/zip2zip
index de51ee9..a47bbea 100755
--- a/linux-x86/bin/zip2zip
+++ b/linux-x86/bin/zip2zip
Binary files differ
diff --git a/manifest.xml b/manifest.xml
index 75712e8..53ef14c 100644
--- a/manifest.xml
+++ b/manifest.xml
@@ -5,13 +5,13 @@
 
   <default remote="aosp" revision="build-tools-release" sync-j="4" />
 
-  <project name="platform/build" path="build/make" revision="ce7abe8d0d8c124a75f7368f6095b1575e5d7d75" upstream="build-tools-release">
+  <project name="platform/build" path="build/make" revision="34ddb88fdf775d64ee86284af018256df14169f6" upstream="build-tools-release">
     <linkfile dest="build/tools" src="tools" />
 </project>
 
-  <project name="platform/build/blueprint" path="build/blueprint" revision="02ad19c8d810d0dfd0d2fa854e89364c7c6865bc" upstream="build-tools-release" />
+  <project name="platform/build/blueprint" path="build/blueprint" revision="00ecb8c0e5ff9b5454dd4cba33cafce0126a6e53" upstream="build-tools-release" />
 
-  <project name="platform/build/soong" path="build/soong" revision="dae2d8cc62df4cff10e5423fda5ed9460d328c3f" upstream="build-tools-release">
+  <project name="platform/build/soong" path="build/soong" revision="acdf1517e69d8d35526eafceb3a2b7f11b056cb3" upstream="build-tools-release">
     <linkfile dest="Android.bp" src="root.bp" />
 
     <linkfile dest="bootstrap.bash" src="bootstrap.bash" />
@@ -19,11 +19,11 @@
 
   <project name="platform/external/golang-protobuf" path="external/golang-protobuf" revision="e0f13d46efe3e0d964f234af25cdefc12e0c2ff2" upstream="build-tools-release" />
 
-  <project clone-depth="1" name="platform/prebuilts/build-tools" path="prebuilts/build-tools" revision="6f4ccbe72b49a555437379fb5091ee825661b1cc" upstream="build-tools-release" />
+  <project clone-depth="1" name="platform/prebuilts/build-tools" path="prebuilts/build-tools" revision="1114124aeed88836946b1fb8acf57e1a23f504d1" upstream="build-tools-release" />
 
   <project clone-depth="1" groups="pdk" name="platform/prebuilts/remoteexecution-client" path="prebuilts/remoteexecution-client" revision="8fb6fe783d99c897bf0ed7aa0b2964301f038910" upstream="build-tools-release" />
 
-  <project clone-depth="1" groups="linux" name="platform/prebuilts/clang/host/linux-x86" path="prebuilts/clang/host/linux-x86" revision="059a875abb88c7b3708c6efa29a8db1c3d6b81d8" upstream="build-tools-release" />
+  <project clone-depth="1" groups="linux" name="platform/prebuilts/clang/host/linux-x86" path="prebuilts/clang/host/linux-x86" revision="da9595ca639e3714eb7a0cbe0a3c2a4c283fe859" upstream="build-tools-release" />
 
   <project clone-depth="1" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8" revision="7454fb3d3249c268b7e61a6551e4a17dfd031ea9" upstream="build-tools-release" />
 
@@ -35,7 +35,7 @@
 
   <project clone-depth="1" groups="linux" name="platform/prebuilts/ninja/linux-x86" path="prebuilts/ninja/linux-x86" revision="cfaa2ca50f534ec2945c2587ffa119519268efad" upstream="build-tools-release" />
 
-  <project clone-depth="1" groups="darwin" name="platform/prebuilts/clang/host/darwin-x86" path="prebuilts/clang/host/darwin-x86" revision="df13872c629d34a1fb933c3d05c3878271bdae85" upstream="build-tools-release" />
+  <project clone-depth="1" groups="darwin" name="platform/prebuilts/clang/host/darwin-x86" path="prebuilts/clang/host/darwin-x86" revision="cabef13cf1f4f44e6fd4777b1142422099f4a018" upstream="build-tools-release" />
 
   <project clone-depth="1" groups="darwin" name="platform/prebuilts/gcc/darwin-x86/host/headers" path="prebuilts/gcc/darwin-x86/host/headers" revision="4ac4f7cc41cf3c9e36fc3d6cf37fd1cfa9587a68" upstream="build-tools-release" />
 
@@ -45,7 +45,7 @@
 
   <project clone-depth="1" groups="darwin" name="platform/prebuilts/ninja/darwin-x86" path="prebuilts/ninja/darwin-x86" revision="2433f0ca209251e67a89bbaf6c34da9fe54edeac" upstream="build-tools-release" />
 
-  <project clone-depth="1" groups="linux" name="platform/prebuilts/clang/host/windows-x86" path="prebuilts/clang/host/windows-x86" revision="862668937d4743a5f2239ac93e96ee60d40e033a" upstream="build-tools-release" />
+  <project clone-depth="1" groups="linux" name="platform/prebuilts/clang/host/windows-x86" path="prebuilts/clang/host/windows-x86" revision="ba52dc0c6b375cee2ad29571fcbac3d89ea5d0dd" upstream="build-tools-release" />
 
   <project clone-depth="1" groups="linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" revision="1772993705ea120e5c2f29bf63a37a6151b7d2ff" upstream="build-tools-release" />
 
@@ -61,7 +61,7 @@
 
   <project clone-depth="1" groups="pdk,tools" name="platform/prebuilts/tools" path="prebuilts/tools" revision="7a3ee96379da9b63207048575a84adadee95f5cc" upstream="build-tools-release" />
 
-  <project name="platform/bionic" path="bionic" revision="3229fdd9e1b772cfbd573546aa14c222b65a2774" upstream="build-tools-release" />
+  <project name="platform/bionic" path="bionic" revision="4c5278e3d51d352fd2ce859a7ac612376aff7616" upstream="build-tools-release" />
 
   <project name="platform/development" path="development" revision="b1dfd3a217a9e672081d3e9d39ac959098c9eaf7" upstream="build-tools-release" />
 
@@ -75,7 +75,7 @@
 
   <project name="platform/external/capstone" path="external/capstone" revision="c61eef460e951ebd60440714abbf7f2e6520601d" upstream="build-tools-release" />
 
-  <project name="platform/external/clang" path="external/clang" revision="171cfa8817b838055b2420c3bc2938fbb4bcea0a" upstream="build-tools-release" />
+  <project name="platform/external/clang" path="external/clang" revision="8fe52f210dfcd7f78dc048901096df5a90f773f2" upstream="build-tools-release" />
 
   <project name="platform/external/compiler-rt" path="external/compiler-rt" revision="9e2d3f74317402ca8caa89403b4f371f40288884" upstream="build-tools-release" />
 
@@ -111,7 +111,7 @@
 
   <project name="platform/external/guava" path="external/guava" revision="4387e8e1db1aba997d907e7ae1db7b8e26134603" upstream="build-tools-release" />
 
-  <project name="platform/external/icu" path="external/icu" revision="07562d0f68f6237c3774267375a1bbecbdcb816f" upstream="build-tools-release" />
+  <project name="platform/external/icu" path="external/icu" revision="446246b9b14d3a87916b30ce5956ed27f7daf157" upstream="build-tools-release" />
 
   <project name="platform/external/javapoet" path="external/javapoet" revision="d274ed4f3e04713ec752625c446b9f59daaa80bb" upstream="build-tools-release" />
 
@@ -139,7 +139,7 @@
 
   <project name="platform/external/lzma" path="external/lzma" revision="cbba1abda3049a875b8148eaf016fdc876702d62" upstream="build-tools-release" />
 
-  <project name="platform/external/musl" path="external/musl" revision="c0026fab1f0d8a95033ffdf6abc49b89883518f0" upstream="build-tools-release" />
+  <project name="platform/external/musl" path="external/musl" revision="10707edbb9f53d82f0f8f885584032761c6d621a" upstream="build-tools-release" />
 
   <project name="platform/external/pcre" path="external/pcre" revision="c5eaeb0e9ca4b91fb4071b5c674271d2842e9281" upstream="build-tools-release" />
 
@@ -157,7 +157,7 @@
 
   <project name="platform/external/zopfli" path="external/zopfli" revision="8ead122d01356ba52d9673d146dd8148f811ccac" upstream="build-tools-release" />
 
-  <project name="platform/system/core" path="system/core" revision="d63e161f8561e920822cb32cdc5809750a74c856" upstream="build-tools-release" />
+  <project name="platform/system/core" path="system/core" revision="6b8b7f4543b946cfa94e15067656f50780dd026b" upstream="build-tools-release" />
 
   <project name="platform/system/libbase" path="system/libbase" revision="cc4c564e11b31ce0cadba76ddb86a1e388fa2dc3" upstream="build-tools-release" />
 
@@ -165,7 +165,7 @@
 
   <project name="platform/system/libziparchive" path="system/libziparchive" revision="52fbc350b60cad09925b319e91bb9f05c76e4f93" upstream="build-tools-release" />
 
-  <project name="platform/system/logging" path="system/logging" revision="b829a34538a175c4bc4b78808e2e345ead4a499c" upstream="build-tools-release" />
+  <project name="platform/system/logging" path="system/logging" revision="e723ae4355e61ba140dd5964e87c8bcdbfedf10f" upstream="build-tools-release" />
 
   <project name="platform/system/unwinding" path="system/unwinding" revision="c16beac4d252aab8d23b18d6ef8ef0fac2615f82" upstream="build-tools-release" />
 
@@ -173,7 +173,7 @@
 
   <project name="platform/test/app_compat/csuite" path="test/app_compat/csuite" revision="b1aa947907e31dc005211f2f65df7671b5977f14" upstream="build-tools-release" />
 
-  <project name="platform/art" path="art" revision="0ccaefcca73a13e1a340c3ad7edcb743d5af67e2" upstream="build-tools-release" />
+  <project name="platform/art" path="art" revision="0b33896f7c679f5a330330cd68248495609e2217" upstream="build-tools-release" />
 
   <project name="platform/build/kati" path="build/kati" revision="6ad4268491b968b4cb257aeeb8c6a605ea8af8bf" upstream="build-tools-release" />
 
@@ -203,13 +203,13 @@
 
   <project name="platform/external/python/cpython3" path="external/python/cpython3" revision="072d2db63a35a3113d38e1bc64aed3f2420ff137" upstream="build-tools-release" />
 
-  <project name="platform/external/toybox" path="external/toybox" revision="ccbc44d970cad0adbdd157b92dc70874e396cc25" upstream="build-tools-release" />
+  <project name="platform/external/toybox" path="external/toybox" revision="ad95266a742e601a96fbe9c9f8277903a66472b7" upstream="build-tools-release" />
 
   <project name="platform/external/turbine" path="external/turbine" revision="0def9c449f3e2458b218b3237c2692eab0ce35d8" upstream="build-tools-release" />
 
-  <project name="platform/system/tools/aidl" path="system/tools/aidl" revision="5ef53e68db3ec0109f4a990e77c69b0efc77b3ba" upstream="build-tools-release" />
+  <project name="platform/system/tools/aidl" path="system/tools/aidl" revision="97364dc52431b418722a9e5bc97ec133ff28fbd7" upstream="build-tools-release" />
 
-  <project name="platform/system/tools/hidl" path="system/tools/hidl" revision="f5814b746e1a264f0c6ccbabfde523b4b9410117" upstream="build-tools-release" />
+  <project name="platform/system/tools/hidl" path="system/tools/hidl" revision="c5a34e4d804ef2e84d757bd3e2c3ff38639756b0" upstream="build-tools-release" />
 
   <project name="toolchain/go" revision="3d3a0e158b3e6d07d03115452abed22f07bdc2b1" upstream="build-tools-release" />
 
diff --git a/update-prebuilts.sh b/update-prebuilts.sh
index 2dbd8e3..4f87b39 100755
--- a/update-prebuilts.sh
+++ b/update-prebuilts.sh
@@ -45,6 +45,8 @@
 fetch_artifact linux build-common-prebuilts.zip "${tmpdir}/common.zip"
 fetch_artifact linux manifest_${BUILD_NUMBER}.xml "${tmpdir}/manifest.xml"
 fetch_artifact darwin_mac build-prebuilts.zip "${tmpdir}/darwin.zip"
+fetch_artifact linux_musl musl-sysroot32.zip "${tmpdir}/musl-sysroot32.zip"
+fetch_artifact linux_musl musl-sysroot64.zip "${tmpdir}/musl-sysroot64.zip"
 
 function unzip_to() {
     rm -rf "$1"
@@ -55,10 +57,12 @@
 unzip_to linux-x86 "${tmpdir}/linux.zip"
 unzip_to common "${tmpdir}/common.zip"
 unzip_to darwin-x86 "${tmpdir}/darwin.zip"
+unzip_to x86_64-linux-musl "${tmpdir}/musl-sysroot64.zip"
+unzip_to i686-linux-musl "${tmpdir}/musl-sysroot32.zip"
 
 cp -f "${tmpdir}/manifest.xml" manifest.xml
 
-git add manifest.xml linux-x86 darwin-x86 common
+git add manifest.xml linux-x86 darwin-x86 common x86_64-linux-musl i686-linux-musl
 git commit -m "Update build-tools to ab/${BUILD_NUMBER}
 
 https://ci.android.com/builds/branches/aosp-build-tools-release/grid?head=${BUILD_NUMBER}&tail=${BUILD_NUMBER}
diff --git a/x86_64-linux-musl/COPYRIGHT b/x86_64-linux-musl/COPYRIGHT
new file mode 100644
index 0000000..c1628e9
--- /dev/null
+++ b/x86_64-linux-musl/COPYRIGHT
@@ -0,0 +1,193 @@
+musl as a whole is licensed under the following standard MIT license:
+
+----------------------------------------------------------------------
+Copyright © 2005-2020 Rich Felker, et al.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+----------------------------------------------------------------------
+
+Authors/contributors include:
+
+A. Wilcox
+Ada Worcester
+Alex Dowad
+Alex Suykov
+Alexander Monakov
+Andre McCurdy
+Andrew Kelley
+Anthony G. Basile
+Aric Belsito
+Arvid Picciani
+Bartosz Brachaczek
+Benjamin Peterson
+Bobby Bingham
+Boris Brezillon
+Brent Cook
+Chris Spiegel
+Clément Vasseur
+Daniel Micay
+Daniel Sabogal
+Daurnimator
+David Carlier
+David Edelsohn
+Denys Vlasenko
+Dmitry Ivanov
+Dmitry V. Levin
+Drew DeVault
+Emil Renner Berthing
+Fangrui Song
+Felix Fietkau
+Felix Janda
+Gianluca Anzolin
+Hauke Mehrtens
+He X
+Hiltjo Posthuma
+Isaac Dunham
+Jaydeep Patil
+Jens Gustedt
+Jeremy Huntwork
+Jo-Philipp Wich
+Joakim Sindholt
+John Spencer
+Julien Ramseier
+Justin Cormack
+Kaarle Ritvanen
+Khem Raj
+Kylie McClain
+Leah Neukirchen
+Luca Barbato
+Luka Perkov
+M Farkas-Dyck (Strake)
+Mahesh Bodapati
+Markus Wichmann
+Masanori Ogino
+Michael Clark
+Michael Forney
+Mikhail Kremnyov
+Natanael Copa
+Nicholas J. Kain
+orc
+Pascal Cuoq
+Patrick Oppenlander
+Petr Hosek
+Petr Skocik
+Pierre Carrier
+Reini Urban
+Rich Felker
+Richard Pennington
+Ryan Fairfax
+Samuel Holland
+Segev Finer
+Shiz
+sin
+Solar Designer
+Stefan Kristiansson
+Stefan O'Rear
+Szabolcs Nagy
+Timo Teräs
+Trutz Behn
+Valentin Ochs
+Will Dietz
+William Haddon
+William Pitcock
+
+Portions of this software are derived from third-party works licensed
+under terms compatible with the above MIT license:
+
+The TRE regular expression implementation (src/regex/reg* and
+src/regex/tre*) is Copyright © 2001-2008 Ville Laurikari and licensed
+under a 2-clause BSD license (license text in the source files). The
+included version has been heavily modified by Rich Felker in 2012, in
+the interests of size, simplicity, and namespace cleanliness.
+
+Much of the math library code (src/math/* and src/complex/*) is
+Copyright © 1993,2004 Sun Microsystems or
+Copyright © 2003-2011 David Schultz or
+Copyright © 2003-2009 Steven G. Kargl or
+Copyright © 2003-2009 Bruce D. Evans or
+Copyright © 2008 Stephen L. Moshier or
+Copyright © 2017-2018 Arm Limited
+and labelled as such in comments in the individual source files. All
+have been licensed under extremely permissive terms.
+
+The ARM memcpy code (src/string/arm/memcpy.S) is Copyright © 2008
+The Android Open Source Project and is licensed under a two-clause BSD
+license. It was taken from Bionic libc, used on Android.
+
+The AArch64 memcpy and memset code (src/string/aarch64/*) are
+Copyright © 1999-2019, Arm Limited.
+
+The implementation of DES for crypt (src/crypt/crypt_des.c) is
+Copyright © 1994 David Burren. It is licensed under a BSD license.
+
+The implementation of blowfish crypt (src/crypt/crypt_blowfish.c) was
+originally written by Solar Designer and placed into the public
+domain. The code also comes with a fallback permissive license for use
+in jurisdictions that may not recognize the public domain.
+
+The smoothsort implementation (src/stdlib/qsort.c) is Copyright © 2011
+Valentin Ochs and is licensed under an MIT-style license.
+
+The x86_64 port was written by Nicholas J. Kain and is licensed under
+the standard MIT terms.
+
+The mips and microblaze ports were originally written by Richard
+Pennington for use in the ellcc project. The original code was adapted
+by Rich Felker for build system and code conventions during upstream
+integration. It is licensed under the standard MIT terms.
+
+The mips64 port was contributed by Imagination Technologies and is
+licensed under the standard MIT terms.
+
+The powerpc port was also originally written by Richard Pennington,
+and later supplemented and integrated by John Spencer. It is licensed
+under the standard MIT terms.
+
+All other files which have no copyright comments are original works
+produced specifically for use as part of this library, written either
+by Rich Felker, the main author of the library, or by one or more
+contibutors listed above. Details on authorship of individual files
+can be found in the git version control history of the project. The
+omission of copyright and license comments in each file is in the
+interest of source tree size.
+
+In addition, permission is hereby granted for all public header files
+(include/* and arch/*/bits/*) and crt files intended to be linked into
+applications (crt/*, ldso/dlstart.c, and arch/*/crt_arch.h) to omit
+the copyright notice and permission notice otherwise required by the
+license, and to use these files without any requirement of
+attribution. These files include substantial contributions from:
+
+Bobby Bingham
+John Spencer
+Nicholas J. Kain
+Rich Felker
+Richard Pennington
+Stefan Kristiansson
+Szabolcs Nagy
+
+all of whom have explicitly granted such permission.
+
+This file previously contained text expressing a belief that most of
+the files covered by the above exception were sufficiently trivial not
+to be subject to copyright, resulting in confusion over whether it
+negated the permissions granted in the license. In the spirit of
+permissive licensing, and of not having licensing issues being an
+obstacle to adoption, that text has been removed.
diff --git a/x86_64-linux-musl/LICENSE b/x86_64-linux-musl/LICENSE
new file mode 120000
index 0000000..cf3af40
--- /dev/null
+++ b/x86_64-linux-musl/LICENSE
@@ -0,0 +1 @@
+COPYRIGHT
\ No newline at end of file
diff --git a/x86_64-linux-musl/bin/ld.musl-clang b/x86_64-linux-musl/bin/ld.musl-clang
new file mode 100755
index 0000000..be1578c
--- /dev/null
+++ b/x86_64-linux-musl/bin/ld.musl-clang
@@ -0,0 +1,51 @@
+#!/bin/sh
+cc="clang"
+libc_lib="$(dirname "$0")/../lib"
+ldso="$(dirname "$0")/../lib/ld-musl.so.1"
+cleared=
+shared=
+userlinkdir=
+userlink=
+
+for x ; do
+    test "$cleared" || set -- ; cleared=1
+
+    case "$x" in
+        -L-user-start)
+            userlinkdir=1
+            ;;
+        -L-user-end)
+            userlinkdir=
+            ;;
+        -L*)
+            test "$userlinkdir" && set -- "$@" "$x"
+            ;;
+        -l-user-start)
+            userlink=1
+            ;;
+        -l-user-end)
+            userlink=
+            ;;
+        crtbegin*.o|crtend*.o)
+            set -- "$@" $($cc -print-file-name=$x)
+            ;;
+        -lgcc|-lgcc_eh)
+            file=lib${x#-l}.a
+            set -- "$@" $($cc -print-file-name=$file)
+            ;;
+        -l*)
+            test "$userlink" && set -- "$@" "$x"
+            ;;
+        -shared)
+            shared=1
+            set -- "$@" -shared
+            ;;
+        -sysroot=*|--sysroot=*)
+            ;;
+        *)
+            set -- "$@" "$x"
+            ;;
+    esac
+done
+
+exec $($cc -print-prog-name=ld) -nostdlib "$@" -lc -dynamic-linker "$ldso"
diff --git a/x86_64-linux-musl/bin/musl-clang b/x86_64-linux-musl/bin/musl-clang
new file mode 100755
index 0000000..7886714
--- /dev/null
+++ b/x86_64-linux-musl/bin/musl-clang
@@ -0,0 +1,35 @@
+#!/bin/sh
+cc="clang"
+libc="$(dirname "$0")/.."
+libc_inc="${libc}/include"
+libc_lib="${libc}/lib"
+thisdir="`cd "$(dirname "$0")"; pwd`"
+
+# prevent clang from running the linker (and erroring) on no input.
+sflags=
+eflags=
+for x ; do
+    case "$x" in
+        -l*) input=1 ;;
+        *) input= ;;
+    esac
+    if test "$input" ; then
+        sflags="-l-user-start"
+        eflags="-l-user-end"
+        break
+    fi
+done
+
+exec $cc \
+    -B"$thisdir" \
+    -fuse-ld=musl-clang \
+    -static-libgcc \
+    -nostdinc \
+    --sysroot "$libc" \
+    -isystem "$libc_inc" \
+    -L-user-start \
+    $sflags \
+    "$@" \
+    $eflags \
+    -L"$libc_lib" \
+    -L-user-end
diff --git a/x86_64-linux-musl/include/aio.h b/x86_64-linux-musl/include/aio.h
new file mode 100644
index 0000000..453c41b
--- /dev/null
+++ b/x86_64-linux-musl/include/aio.h
@@ -0,0 +1,73 @@
+#ifndef _AIO_H
+#define _AIO_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <signal.h>
+#include <time.h>
+
+#define __NEED_ssize_t
+#define __NEED_off_t
+
+#include <bits/alltypes.h>
+
+struct aiocb {
+	int aio_fildes, aio_lio_opcode, aio_reqprio;
+	volatile void *aio_buf;
+	size_t aio_nbytes;
+	struct sigevent aio_sigevent;
+	void *__td;
+	int __lock[2];
+	volatile int __err;
+	ssize_t __ret;
+	off_t aio_offset;
+	void *__next, *__prev;
+	char __dummy4[32-2*sizeof(void *)];
+};
+
+#define AIO_CANCELED 0
+#define AIO_NOTCANCELED 1
+#define AIO_ALLDONE 2
+
+#define LIO_READ 0
+#define LIO_WRITE 1
+#define LIO_NOP 2
+
+#define LIO_WAIT 0
+#define LIO_NOWAIT 1
+
+int aio_read(struct aiocb *);
+int aio_write(struct aiocb *);
+int aio_error(const struct aiocb *);
+ssize_t aio_return(struct aiocb *);
+int aio_cancel(int, struct aiocb *);
+int aio_suspend(const struct aiocb *const [], int, const struct timespec *);
+int aio_fsync(int, struct aiocb *);
+
+int lio_listio(int, struct aiocb *__restrict const *__restrict, int, struct sigevent *__restrict);
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define aiocb64 aiocb
+#define aio_read64 aio_read
+#define aio_write64 aio_write
+#define aio_error64 aio_error
+#define aio_return64 aio_return
+#define aio_cancel64 aio_cancel
+#define aio_suspend64 aio_suspend
+#define aio_fsync64 aio_fsync
+#define lio_listio64 lio_listio
+#define off64_t off_t
+#endif
+
+#if _REDIR_TIME64
+__REDIR(aio_suspend, __aio_suspend_time64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/alloca.h b/x86_64-linux-musl/include/alloca.h
new file mode 100644
index 0000000..b8d183d
--- /dev/null
+++ b/x86_64-linux-musl/include/alloca.h
@@ -0,0 +1,19 @@
+#ifndef	_ALLOCA_H
+#define	_ALLOCA_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define	__NEED_size_t
+#include <bits/alltypes.h>
+
+void *alloca(size_t);
+
+#define alloca __builtin_alloca
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/alltypes.h.in b/x86_64-linux-musl/include/alltypes.h.in
new file mode 100644
index 0000000..d47aeea
--- /dev/null
+++ b/x86_64-linux-musl/include/alltypes.h.in
@@ -0,0 +1,95 @@
+#define __LITTLE_ENDIAN 1234
+#define __BIG_ENDIAN 4321
+#define __USE_TIME_BITS64 1
+
+TYPEDEF unsigned _Addr size_t;
+TYPEDEF unsigned _Addr uintptr_t;
+TYPEDEF _Addr ptrdiff_t;
+TYPEDEF _Addr ssize_t;
+TYPEDEF _Addr intptr_t;
+TYPEDEF _Addr regoff_t;
+TYPEDEF _Reg register_t;
+TYPEDEF _Int64 time_t;
+TYPEDEF _Int64 suseconds_t;
+
+TYPEDEF signed char     int8_t;
+TYPEDEF signed short    int16_t;
+TYPEDEF signed int      int32_t;
+TYPEDEF signed _Int64   int64_t;
+TYPEDEF signed _Int64   intmax_t;
+TYPEDEF unsigned char   uint8_t;
+TYPEDEF unsigned short  uint16_t;
+TYPEDEF unsigned int    uint32_t;
+TYPEDEF unsigned _Int64 uint64_t;
+TYPEDEF unsigned _Int64 u_int64_t;
+TYPEDEF unsigned _Int64 uintmax_t;
+
+TYPEDEF unsigned mode_t;
+TYPEDEF unsigned _Reg nlink_t;
+TYPEDEF _Int64 off_t;
+TYPEDEF unsigned _Int64 ino_t;
+TYPEDEF unsigned _Int64 dev_t;
+TYPEDEF long blksize_t;
+TYPEDEF _Int64 blkcnt_t;
+TYPEDEF unsigned _Int64 fsblkcnt_t;
+TYPEDEF unsigned _Int64 fsfilcnt_t;
+
+TYPEDEF unsigned wint_t;
+TYPEDEF unsigned long wctype_t;
+
+TYPEDEF void * timer_t;
+TYPEDEF int clockid_t;
+TYPEDEF long clock_t;
+STRUCT timeval { time_t tv_sec; suseconds_t tv_usec; };
+STRUCT timespec { time_t tv_sec; int :8*(sizeof(time_t)-sizeof(long))*(__BYTE_ORDER==4321); long tv_nsec; int :8*(sizeof(time_t)-sizeof(long))*(__BYTE_ORDER!=4321); };
+
+TYPEDEF int pid_t;
+TYPEDEF unsigned id_t;
+TYPEDEF unsigned uid_t;
+TYPEDEF unsigned gid_t;
+TYPEDEF int key_t;
+TYPEDEF unsigned useconds_t;
+
+#ifdef __cplusplus
+TYPEDEF unsigned long pthread_t;
+#else
+TYPEDEF struct __pthread * pthread_t;
+#endif
+TYPEDEF int pthread_once_t;
+TYPEDEF unsigned pthread_key_t;
+TYPEDEF int pthread_spinlock_t;
+TYPEDEF struct { unsigned __attr; } pthread_mutexattr_t;
+TYPEDEF struct { unsigned __attr; } pthread_condattr_t;
+TYPEDEF struct { unsigned __attr; } pthread_barrierattr_t;
+TYPEDEF struct { unsigned __attr[2]; } pthread_rwlockattr_t;
+
+STRUCT _IO_FILE { char __x; };
+TYPEDEF struct _IO_FILE FILE;
+
+TYPEDEF __builtin_va_list va_list;
+TYPEDEF __builtin_va_list __isoc_va_list;
+
+TYPEDEF struct __mbstate_t { unsigned __opaque1, __opaque2; } mbstate_t;
+
+TYPEDEF struct __locale_struct * locale_t;
+
+TYPEDEF struct __sigset_t { unsigned long __bits[128/sizeof(long)]; } sigset_t;
+
+STRUCT iovec { void *iov_base; size_t iov_len; };
+
+STRUCT winsize { unsigned short ws_row, ws_col, ws_xpixel, ws_ypixel; };
+
+TYPEDEF unsigned socklen_t;
+TYPEDEF unsigned short sa_family_t;
+
+TYPEDEF struct { union { int __i[sizeof(long)==8?14:9]; volatile int __vi[sizeof(long)==8?14:9]; unsigned long __s[sizeof(long)==8?7:9]; } __u; } pthread_attr_t;
+TYPEDEF struct { union { int __i[sizeof(long)==8?10:6]; volatile int __vi[sizeof(long)==8?10:6]; volatile void *volatile __p[sizeof(long)==8?5:6]; } __u; } pthread_mutex_t;
+TYPEDEF struct { union { int __i[sizeof(long)==8?10:6]; volatile int __vi[sizeof(long)==8?10:6]; volatile void *volatile __p[sizeof(long)==8?5:6]; } __u; } mtx_t;
+TYPEDEF struct { union { int __i[12]; volatile int __vi[12]; void *__p[12*sizeof(int)/sizeof(void*)]; } __u; } pthread_cond_t;
+TYPEDEF struct { union { int __i[12]; volatile int __vi[12]; void *__p[12*sizeof(int)/sizeof(void*)]; } __u; } cnd_t;
+TYPEDEF struct { union { int __i[sizeof(long)==8?14:8]; volatile int __vi[sizeof(long)==8?14:8]; void *__p[sizeof(long)==8?7:8]; } __u; } pthread_rwlock_t;
+TYPEDEF struct { union { int __i[sizeof(long)==8?8:5]; volatile int __vi[sizeof(long)==8?8:5]; void *__p[sizeof(long)==8?4:5]; } __u; } pthread_barrier_t;
+
+#undef _Addr
+#undef _Int64
+#undef _Reg
diff --git a/x86_64-linux-musl/include/ar.h b/x86_64-linux-musl/include/ar.h
new file mode 100644
index 0000000..eafd51d
--- /dev/null
+++ b/x86_64-linux-musl/include/ar.h
@@ -0,0 +1,25 @@
+#ifndef _AR_H
+#define _AR_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define ARMAG "!<arch>\n"
+#define SARMAG 8
+#define ARFMAG "`\n"
+
+struct ar_hdr {
+	char ar_name[16];
+	char ar_date[12];
+	char ar_uid[6], ar_gid[6];
+	char ar_mode[8];
+	char ar_size[10];
+	char ar_fmag[2];
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/arpa/ftp.h b/x86_64-linux-musl/include/arpa/ftp.h
new file mode 100644
index 0000000..fb0a46f
--- /dev/null
+++ b/x86_64-linux-musl/include/arpa/ftp.h
@@ -0,0 +1,35 @@
+#ifndef _ARPA_FTP_H
+#define _ARPA_FTP_H
+#define PRELIM 1
+#define COMPLETE 2
+#define CONTINUE 3
+#define TRANSIENT 4
+#define ERROR 5
+#define TYPE_A 1
+#define TYPE_E 2
+#define TYPE_I 3
+#define TYPE_L 4
+#define FORM_N 1
+#define FORM_T 2
+#define FORM_C 3
+#define STRU_F 1
+#define STRU_R 2
+#define STRU_P 3
+#define MODE_S 1
+#define MODE_B 2
+#define MODE_C 3
+#define REC_ESC '\377'
+#define REC_EOR '\001'
+#define REC_EOF '\002'
+#define BLK_EOR 0x80
+#define BLK_EOF 0x40
+#define BLK_ERRORS 0x20
+#define BLK_RESTART 0x10
+#define BLK_BYTECOUNT 2
+#ifdef FTP_NAMES
+char *modenames[] =  {"0", "Stream", "Block", "Compressed" };
+char *strunames[] =  {"0", "File", "Record", "Page" };
+char *typenames[] =  {"0", "ASCII", "EBCDIC", "Image", "Local" };
+char *formnames[] =  {"0", "Nonprint", "Telnet", "Carriage-control" };
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/arpa/inet.h b/x86_64-linux-musl/include/arpa/inet.h
new file mode 100644
index 0000000..9d20a15
--- /dev/null
+++ b/x86_64-linux-musl/include/arpa/inet.h
@@ -0,0 +1,31 @@
+#ifndef _ARPA_INET_H
+#define	_ARPA_INET_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <netinet/in.h>
+
+uint32_t htonl(uint32_t);
+uint16_t htons(uint16_t);
+uint32_t ntohl(uint32_t);
+uint16_t ntohs(uint16_t);
+
+in_addr_t inet_addr (const char *);
+in_addr_t inet_network (const char *);
+char *inet_ntoa (struct in_addr);
+int inet_pton (int, const char *__restrict, void *__restrict);
+const char *inet_ntop (int, const void *__restrict, char *__restrict, socklen_t);
+
+int inet_aton (const char *, struct in_addr *);
+struct in_addr inet_makeaddr(in_addr_t, in_addr_t);
+in_addr_t inet_lnaof(struct in_addr);
+in_addr_t inet_netof(struct in_addr);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/arpa/nameser.h b/x86_64-linux-musl/include/arpa/nameser.h
new file mode 100644
index 0000000..581925a
--- /dev/null
+++ b/x86_64-linux-musl/include/arpa/nameser.h
@@ -0,0 +1,455 @@
+#ifndef _ARPA_NAMESER_H
+#define _ARPA_NAMESER_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stddef.h>
+#include <stdint.h>
+
+#define __NAMESER	19991006
+#define NS_PACKETSZ	512
+#define NS_MAXDNAME	1025
+#define NS_MAXMSG	65535
+#define NS_MAXCDNAME	255
+#define NS_MAXLABEL	63
+#define NS_HFIXEDSZ	12
+#define NS_QFIXEDSZ	4
+#define NS_RRFIXEDSZ	10
+#define NS_INT32SZ	4
+#define NS_INT16SZ	2
+#define NS_INT8SZ	1
+#define NS_INADDRSZ	4
+#define NS_IN6ADDRSZ	16
+#define NS_CMPRSFLGS	0xc0
+#define NS_DEFAULTPORT	53
+
+typedef enum __ns_sect {
+	ns_s_qd = 0,
+	ns_s_zn = 0,
+	ns_s_an = 1,
+	ns_s_pr = 1,
+	ns_s_ns = 2,
+	ns_s_ud = 2,
+	ns_s_ar = 3,
+	ns_s_max = 4
+} ns_sect;
+
+typedef struct __ns_msg {
+	const unsigned char *_msg, *_eom;
+	uint16_t _id, _flags, _counts[ns_s_max];
+	const unsigned char *_sections[ns_s_max];
+	ns_sect _sect;
+	int _rrnum;
+	const unsigned char *_msg_ptr;
+} ns_msg;
+
+struct _ns_flagdata {  int mask, shift;  };
+extern const struct _ns_flagdata _ns_flagdata[];
+
+#define ns_msg_id(handle) ((handle)._id + 0)
+#define ns_msg_base(handle) ((handle)._msg + 0)
+#define ns_msg_end(handle) ((handle)._eom + 0)
+#define ns_msg_size(handle) ((handle)._eom - (handle)._msg)
+#define ns_msg_count(handle, section) ((handle)._counts[section] + 0)
+#define ns_msg_getflag(handle, flag) \
+	(((handle)._flags & _ns_flagdata[flag].mask) >> _ns_flagdata[flag].shift)
+
+typedef	struct __ns_rr {
+	char		name[NS_MAXDNAME];
+	uint16_t	type;
+	uint16_t	rr_class;
+	uint32_t	ttl;
+	uint16_t	rdlength;
+	const unsigned char *rdata;
+} ns_rr;
+
+#define ns_rr_name(rr)	(((rr).name[0] != '\0') ? (rr).name : ".")
+#define ns_rr_type(rr)	((ns_type)((rr).type + 0))
+#define ns_rr_class(rr)	((ns_class)((rr).rr_class + 0))
+#define ns_rr_ttl(rr)	((rr).ttl + 0)
+#define ns_rr_rdlen(rr)	((rr).rdlength + 0)
+#define ns_rr_rdata(rr)	((rr).rdata + 0)
+
+typedef enum __ns_flag {
+	ns_f_qr,
+	ns_f_opcode,
+	ns_f_aa,
+	ns_f_tc,
+	ns_f_rd,
+	ns_f_ra,
+	ns_f_z,
+	ns_f_ad,
+	ns_f_cd,
+	ns_f_rcode,
+	ns_f_max
+} ns_flag;
+
+typedef enum __ns_opcode {
+	ns_o_query = 0,
+	ns_o_iquery = 1,
+	ns_o_status = 2,
+	ns_o_notify = 4,
+	ns_o_update = 5,
+	ns_o_max = 6
+} ns_opcode;
+
+typedef	enum __ns_rcode {
+	ns_r_noerror = 0,
+	ns_r_formerr = 1,
+	ns_r_servfail = 2,
+	ns_r_nxdomain = 3,
+	ns_r_notimpl = 4,
+	ns_r_refused = 5,
+	ns_r_yxdomain = 6,
+	ns_r_yxrrset = 7,
+	ns_r_nxrrset = 8,
+	ns_r_notauth = 9,
+	ns_r_notzone = 10,
+	ns_r_max = 11,
+	ns_r_badvers = 16,
+	ns_r_badsig = 16,
+	ns_r_badkey = 17,
+	ns_r_badtime = 18
+} ns_rcode;
+
+typedef enum __ns_update_operation {
+	ns_uop_delete = 0,
+	ns_uop_add = 1,
+	ns_uop_max = 2
+} ns_update_operation;
+
+struct ns_tsig_key {
+        char name[NS_MAXDNAME], alg[NS_MAXDNAME];
+        unsigned char *data;
+        int len;
+};
+typedef struct ns_tsig_key ns_tsig_key;
+
+struct ns_tcp_tsig_state {
+	int counter;
+	struct dst_key *key;
+	void *ctx;
+	unsigned char sig[NS_PACKETSZ];
+	int siglen;
+};
+typedef struct ns_tcp_tsig_state ns_tcp_tsig_state;
+
+#define NS_TSIG_FUDGE 300
+#define NS_TSIG_TCP_COUNT 100
+#define NS_TSIG_ALG_HMAC_MD5 "HMAC-MD5.SIG-ALG.REG.INT"
+
+#define NS_TSIG_ERROR_NO_TSIG -10
+#define NS_TSIG_ERROR_NO_SPACE -11
+#define NS_TSIG_ERROR_FORMERR -12
+
+typedef enum __ns_type {
+	ns_t_invalid = 0,
+	ns_t_a = 1,
+	ns_t_ns = 2,
+	ns_t_md = 3,
+	ns_t_mf = 4,
+	ns_t_cname = 5,
+	ns_t_soa = 6,
+	ns_t_mb = 7,
+	ns_t_mg = 8,
+	ns_t_mr = 9,
+	ns_t_null = 10,
+	ns_t_wks = 11,
+	ns_t_ptr = 12,
+	ns_t_hinfo = 13,
+	ns_t_minfo = 14,
+	ns_t_mx = 15,
+	ns_t_txt = 16,
+	ns_t_rp = 17,
+	ns_t_afsdb = 18,
+	ns_t_x25 = 19,
+	ns_t_isdn = 20,
+	ns_t_rt = 21,
+	ns_t_nsap = 22,
+	ns_t_nsap_ptr = 23,
+	ns_t_sig = 24,
+	ns_t_key = 25,
+	ns_t_px = 26,
+	ns_t_gpos = 27,
+	ns_t_aaaa = 28,
+	ns_t_loc = 29,
+	ns_t_nxt = 30,
+	ns_t_eid = 31,
+	ns_t_nimloc = 32,
+	ns_t_srv = 33,
+	ns_t_atma = 34,
+	ns_t_naptr = 35,
+	ns_t_kx = 36,
+	ns_t_cert = 37,
+	ns_t_a6 = 38,
+	ns_t_dname = 39,
+	ns_t_sink = 40,
+	ns_t_opt = 41,
+	ns_t_apl = 42,
+	ns_t_tkey = 249,
+	ns_t_tsig = 250,
+	ns_t_ixfr = 251,
+	ns_t_axfr = 252,
+	ns_t_mailb = 253,
+	ns_t_maila = 254,
+	ns_t_any = 255,
+	ns_t_zxfr = 256,
+	ns_t_max = 65536
+} ns_type;
+
+#define	ns_t_qt_p(t) (ns_t_xfr_p(t) || (t) == ns_t_any || \
+		      (t) == ns_t_mailb || (t) == ns_t_maila)
+#define	ns_t_mrr_p(t) ((t) == ns_t_tsig || (t) == ns_t_opt)
+#define ns_t_rr_p(t) (!ns_t_qt_p(t) && !ns_t_mrr_p(t))
+#define ns_t_udp_p(t) ((t) != ns_t_axfr && (t) != ns_t_zxfr)
+#define ns_t_xfr_p(t) ((t) == ns_t_axfr || (t) == ns_t_ixfr || \
+		       (t) == ns_t_zxfr)
+
+typedef enum __ns_class {
+	ns_c_invalid = 0,
+	ns_c_in = 1,
+	ns_c_2 = 2,
+	ns_c_chaos = 3,
+	ns_c_hs = 4,
+	ns_c_none = 254,
+	ns_c_any = 255,
+	ns_c_max = 65536
+} ns_class;
+
+typedef enum __ns_key_types {
+	ns_kt_rsa = 1,
+	ns_kt_dh  = 2,
+	ns_kt_dsa = 3,
+	ns_kt_private = 254
+} ns_key_types;
+
+typedef enum __ns_cert_types {
+	cert_t_pkix = 1,
+	cert_t_spki = 2,
+	cert_t_pgp  = 3,
+	cert_t_url  = 253,
+	cert_t_oid  = 254
+} ns_cert_types;
+
+#define	NS_KEY_TYPEMASK		0xC000
+#define	NS_KEY_TYPE_AUTH_CONF	0x0000
+#define	NS_KEY_TYPE_CONF_ONLY	0x8000
+#define	NS_KEY_TYPE_AUTH_ONLY	0x4000
+#define	NS_KEY_TYPE_NO_KEY	0xC000
+#define	NS_KEY_NO_AUTH		0x8000
+#define	NS_KEY_NO_CONF		0x4000
+#define	NS_KEY_RESERVED2	0x2000
+#define	NS_KEY_EXTENDED_FLAGS	0x1000
+#define	NS_KEY_RESERVED4	0x0800
+#define	NS_KEY_RESERVED5	0x0400
+#define	NS_KEY_NAME_TYPE	0x0300
+#define	NS_KEY_NAME_USER	0x0000
+#define	NS_KEY_NAME_ENTITY	0x0200
+#define	NS_KEY_NAME_ZONE	0x0100
+#define	NS_KEY_NAME_RESERVED	0x0300
+#define	NS_KEY_RESERVED8	0x0080
+#define	NS_KEY_RESERVED9	0x0040
+#define	NS_KEY_RESERVED10	0x0020
+#define	NS_KEY_RESERVED11	0x0010
+#define	NS_KEY_SIGNATORYMASK	0x000F
+#define	NS_KEY_RESERVED_BITMASK ( NS_KEY_RESERVED2 | \
+				  NS_KEY_RESERVED4 | \
+				  NS_KEY_RESERVED5 | \
+				  NS_KEY_RESERVED8 | \
+				  NS_KEY_RESERVED9 | \
+				  NS_KEY_RESERVED10 | \
+				  NS_KEY_RESERVED11 )
+#define NS_KEY_RESERVED_BITMASK2 0xFFFF
+#define	NS_ALG_MD5RSA		1
+#define	NS_ALG_DH               2
+#define	NS_ALG_DSA              3
+#define	NS_ALG_DSS              NS_ALG_DSA
+#define	NS_ALG_EXPIRE_ONLY	253
+#define	NS_ALG_PRIVATE_OID	254
+
+#define NS_KEY_PROT_TLS         1
+#define NS_KEY_PROT_EMAIL       2
+#define NS_KEY_PROT_DNSSEC      3
+#define NS_KEY_PROT_IPSEC       4
+#define NS_KEY_PROT_ANY		255
+
+#define	NS_MD5RSA_MIN_BITS	 512
+#define	NS_MD5RSA_MAX_BITS	4096
+#define	NS_MD5RSA_MAX_BYTES	((NS_MD5RSA_MAX_BITS+7/8)*2+3)
+#define	NS_MD5RSA_MAX_BASE64	(((NS_MD5RSA_MAX_BYTES+2)/3)*4)
+#define NS_MD5RSA_MIN_SIZE	((NS_MD5RSA_MIN_BITS+7)/8)
+#define NS_MD5RSA_MAX_SIZE	((NS_MD5RSA_MAX_BITS+7)/8)
+
+#define NS_DSA_SIG_SIZE         41
+#define NS_DSA_MIN_SIZE         213
+#define NS_DSA_MAX_BYTES        405
+
+#define	NS_SIG_TYPE	0
+#define	NS_SIG_ALG	2
+#define	NS_SIG_LABELS	3
+#define	NS_SIG_OTTL	4
+#define	NS_SIG_EXPIR	8
+#define	NS_SIG_SIGNED	12
+#define	NS_SIG_FOOT	16
+#define	NS_SIG_SIGNER	18
+#define	NS_NXT_BITS 8
+#define	NS_NXT_BIT_SET(  n,p) (p[(n)/NS_NXT_BITS] |=  (0x80>>((n)%NS_NXT_BITS)))
+#define	NS_NXT_BIT_CLEAR(n,p) (p[(n)/NS_NXT_BITS] &= ~(0x80>>((n)%NS_NXT_BITS)))
+#define	NS_NXT_BIT_ISSET(n,p) (p[(n)/NS_NXT_BITS] &   (0x80>>((n)%NS_NXT_BITS)))
+#define NS_NXT_MAX 127
+
+#define NS_OPT_DNSSEC_OK        0x8000U
+#define NS_OPT_NSID		3
+
+#define NS_GET16(s, cp) (void)((s) = ns_get16(((cp)+=2)-2))
+#define NS_GET32(l, cp) (void)((l) = ns_get32(((cp)+=4)-4))
+#define NS_PUT16(s, cp) ns_put16((s), ((cp)+=2)-2)
+#define NS_PUT32(l, cp) ns_put32((l), ((cp)+=4)-4)
+
+unsigned ns_get16(const unsigned char *);
+unsigned long ns_get32(const unsigned char *);
+void ns_put16(unsigned, unsigned char *);
+void ns_put32(unsigned long, unsigned char *);
+
+int ns_initparse(const unsigned char *, int, ns_msg *);
+int ns_parserr(ns_msg *, ns_sect, int, ns_rr *);
+int ns_skiprr(const unsigned char *, const unsigned char *, ns_sect, int);
+int ns_name_uncompress(const unsigned char *, const unsigned char *, const unsigned char *, char *, size_t);
+
+
+#define	__BIND		19950621
+
+typedef struct {
+	unsigned	id :16;
+#if __BYTE_ORDER == __BIG_ENDIAN
+	unsigned	qr: 1;
+	unsigned	opcode: 4;
+	unsigned	aa: 1;
+	unsigned	tc: 1;
+	unsigned	rd: 1;
+	unsigned	ra: 1;
+	unsigned	unused :1;
+	unsigned	ad: 1;
+	unsigned	cd: 1;
+	unsigned	rcode :4;
+#else
+	unsigned	rd :1;
+	unsigned	tc :1;
+	unsigned	aa :1;
+	unsigned	opcode :4;
+	unsigned	qr :1;
+	unsigned	rcode :4;
+	unsigned	cd: 1;
+	unsigned	ad: 1;
+	unsigned	unused :1;
+	unsigned	ra :1;
+#endif
+	unsigned	qdcount :16;
+	unsigned	ancount :16;
+	unsigned	nscount :16;
+	unsigned	arcount :16;
+} HEADER;
+
+#define PACKETSZ	NS_PACKETSZ
+#define MAXDNAME	NS_MAXDNAME
+#define MAXCDNAME	NS_MAXCDNAME
+#define MAXLABEL	NS_MAXLABEL
+#define	HFIXEDSZ	NS_HFIXEDSZ
+#define QFIXEDSZ	NS_QFIXEDSZ
+#define RRFIXEDSZ	NS_RRFIXEDSZ
+#define	INT32SZ		NS_INT32SZ
+#define	INT16SZ		NS_INT16SZ
+#define INT8SZ		NS_INT8SZ
+#define	INADDRSZ	NS_INADDRSZ
+#define	IN6ADDRSZ	NS_IN6ADDRSZ
+#define	INDIR_MASK	NS_CMPRSFLGS
+#define NAMESERVER_PORT	NS_DEFAULTPORT
+
+#define S_ZONE		ns_s_zn
+#define S_PREREQ	ns_s_pr
+#define S_UPDATE	ns_s_ud
+#define S_ADDT		ns_s_ar
+
+#define QUERY		ns_o_query
+#define IQUERY		ns_o_iquery
+#define STATUS		ns_o_status
+#define	NS_NOTIFY_OP	ns_o_notify
+#define	NS_UPDATE_OP	ns_o_update
+
+#define NOERROR		ns_r_noerror
+#define FORMERR		ns_r_formerr
+#define SERVFAIL	ns_r_servfail
+#define NXDOMAIN	ns_r_nxdomain
+#define NOTIMP		ns_r_notimpl
+#define REFUSED		ns_r_refused
+#define YXDOMAIN	ns_r_yxdomain
+#define YXRRSET		ns_r_yxrrset
+#define NXRRSET		ns_r_nxrrset
+#define NOTAUTH		ns_r_notauth
+#define NOTZONE		ns_r_notzone
+
+#define DELETE		ns_uop_delete
+#define ADD		ns_uop_add
+
+#define T_A		ns_t_a
+#define T_NS		ns_t_ns
+#define T_MD		ns_t_md
+#define T_MF		ns_t_mf
+#define T_CNAME		ns_t_cname
+#define T_SOA		ns_t_soa
+#define T_MB		ns_t_mb
+#define T_MG		ns_t_mg
+#define T_MR		ns_t_mr
+#define T_NULL		ns_t_null
+#define T_WKS		ns_t_wks
+#define T_PTR		ns_t_ptr
+#define T_HINFO		ns_t_hinfo
+#define T_MINFO		ns_t_minfo
+#define T_MX		ns_t_mx
+#define T_TXT		ns_t_txt
+#define	T_RP		ns_t_rp
+#define T_AFSDB		ns_t_afsdb
+#define T_X25		ns_t_x25
+#define T_ISDN		ns_t_isdn
+#define T_RT		ns_t_rt
+#define T_NSAP		ns_t_nsap
+#define T_NSAP_PTR	ns_t_nsap_ptr
+#define	T_SIG		ns_t_sig
+#define	T_KEY		ns_t_key
+#define	T_PX		ns_t_px
+#define	T_GPOS		ns_t_gpos
+#define	T_AAAA		ns_t_aaaa
+#define	T_LOC		ns_t_loc
+#define	T_NXT		ns_t_nxt
+#define	T_EID		ns_t_eid
+#define	T_NIMLOC	ns_t_nimloc
+#define	T_SRV		ns_t_srv
+#define T_ATMA		ns_t_atma
+#define T_NAPTR		ns_t_naptr
+#define T_A6		ns_t_a6
+#define T_DNAME		ns_t_dname
+#define	T_TSIG		ns_t_tsig
+#define	T_IXFR		ns_t_ixfr
+#define T_AXFR		ns_t_axfr
+#define T_MAILB		ns_t_mailb
+#define T_MAILA		ns_t_maila
+#define T_ANY		ns_t_any
+
+#define C_IN		ns_c_in
+#define C_CHAOS		ns_c_chaos
+#define C_HS		ns_c_hs
+#define C_NONE		ns_c_none
+#define C_ANY		ns_c_any
+
+#define	GETSHORT		NS_GET16
+#define	GETLONG			NS_GET32
+#define	PUTSHORT		NS_PUT16
+#define	PUTLONG			NS_PUT32
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/arpa/nameser_compat.h b/x86_64-linux-musl/include/arpa/nameser_compat.h
new file mode 100644
index 0000000..3aac25c
--- /dev/null
+++ b/x86_64-linux-musl/include/arpa/nameser_compat.h
@@ -0,0 +1,2 @@
+#include <arpa/nameser.h>
+
diff --git a/x86_64-linux-musl/include/arpa/telnet.h b/x86_64-linux-musl/include/arpa/telnet.h
new file mode 100644
index 0000000..e2ad974
--- /dev/null
+++ b/x86_64-linux-musl/include/arpa/telnet.h
@@ -0,0 +1,251 @@
+#ifndef _ARPA_TELNET_H
+#define	_ARPA_TELNET_H
+
+#define	IAC	255
+#define	DONT	254
+#define	DO	253
+#define	WONT	252
+#define	WILL	251
+#define	SB	250
+#define	GA	249
+#define	EL	248
+#define	EC	247
+#define	AYT	246
+#define	AO	245
+#define	IP	244
+#define	BREAK	243
+#define	DM	242
+#define	NOP	241
+#define	SE	240
+#define EOR     239
+#define	ABORT	238
+#define	SUSP	237
+#define	xEOF	236
+
+#define SYNCH	242
+
+#define telcmds ((char [][6]){ "EOF", "SUSP", "ABORT", "EOR", "SE", "NOP", "DMARK", "BRK", "IP", "AO", "AYT", "EC", "EL", "GA", "SB", "WILL", "WONT", "DO", "DONT", "IAC", 0 })
+
+#define	TELCMD_FIRST	xEOF
+#define	TELCMD_LAST	IAC
+#define	TELCMD_OK(x)	((unsigned int)(x) <= TELCMD_LAST && \
+			 (unsigned int)(x) >= TELCMD_FIRST)
+#define	TELCMD(x)	telcmds[(x)-TELCMD_FIRST]
+
+#define TELOPT_BINARY	0
+#define TELOPT_ECHO	1
+#define	TELOPT_RCP	2
+#define	TELOPT_SGA	3
+#define	TELOPT_NAMS	4
+#define	TELOPT_STATUS	5
+#define	TELOPT_TM	6
+#define	TELOPT_RCTE	7
+#define TELOPT_NAOL 	8
+#define TELOPT_NAOP 	9
+#define TELOPT_NAOCRD	10
+#define TELOPT_NAOHTS	11
+#define TELOPT_NAOHTD	12
+#define TELOPT_NAOFFD	13
+#define TELOPT_NAOVTS	14
+#define TELOPT_NAOVTD	15
+#define TELOPT_NAOLFD	16
+#define TELOPT_XASCII	17
+#define	TELOPT_LOGOUT	18
+#define	TELOPT_BM	19
+#define	TELOPT_DET	20
+#define	TELOPT_SUPDUP	21
+#define	TELOPT_SUPDUPOUTPUT 22
+#define	TELOPT_SNDLOC	23
+#define	TELOPT_TTYPE	24
+#define	TELOPT_EOR	25
+#define	TELOPT_TUID	26
+#define	TELOPT_OUTMRK	27
+#define	TELOPT_TTYLOC	28
+#define	TELOPT_3270REGIME 29
+#define	TELOPT_X3PAD	30
+#define	TELOPT_NAWS	31
+#define	TELOPT_TSPEED	32
+#define	TELOPT_LFLOW	33
+#define TELOPT_LINEMODE	34
+#define TELOPT_XDISPLOC	35
+#define TELOPT_OLD_ENVIRON 36
+#define	TELOPT_AUTHENTICATION 37/* Authenticate */
+#define	TELOPT_ENCRYPT	38
+#define TELOPT_NEW_ENVIRON 39
+#define	TELOPT_EXOPL	255
+
+
+#define	NTELOPTS	(1+TELOPT_NEW_ENVIRON)
+#ifdef TELOPTS
+char *telopts[NTELOPTS+1] = {
+	"BINARY", "ECHO", "RCP", "SUPPRESS GO AHEAD", "NAME",
+	"STATUS", "TIMING MARK", "RCTE", "NAOL", "NAOP",
+	"NAOCRD", "NAOHTS", "NAOHTD", "NAOFFD", "NAOVTS",
+	"NAOVTD", "NAOLFD", "EXTEND ASCII", "LOGOUT", "BYTE MACRO",
+	"DATA ENTRY TERMINAL", "SUPDUP", "SUPDUP OUTPUT",
+	"SEND LOCATION", "TERMINAL TYPE", "END OF RECORD",
+	"TACACS UID", "OUTPUT MARKING", "TTYLOC",
+	"3270 REGIME", "X.3 PAD", "NAWS", "TSPEED", "LFLOW",
+	"LINEMODE", "XDISPLOC", "OLD-ENVIRON", "AUTHENTICATION",
+	"ENCRYPT", "NEW-ENVIRON",
+	0,
+};
+#define	TELOPT_FIRST	TELOPT_BINARY
+#define	TELOPT_LAST	TELOPT_NEW_ENVIRON
+#define	TELOPT_OK(x)	((unsigned int)(x) <= TELOPT_LAST)
+#define	TELOPT(x)	telopts[(x)-TELOPT_FIRST]
+#endif
+
+#define	TELQUAL_IS	0
+#define	TELQUAL_SEND	1
+#define	TELQUAL_INFO	2
+#define	TELQUAL_REPLY	2
+#define	TELQUAL_NAME	3
+
+#define	LFLOW_OFF		0
+#define	LFLOW_ON		1
+#define	LFLOW_RESTART_ANY	2
+#define	LFLOW_RESTART_XON	3
+
+
+#define	LM_MODE		1
+#define	LM_FORWARDMASK	2
+#define	LM_SLC		3
+
+#define	MODE_EDIT	0x01
+#define	MODE_TRAPSIG	0x02
+#define	MODE_ACK	0x04
+#define MODE_SOFT_TAB	0x08
+#define MODE_LIT_ECHO	0x10
+
+#define	MODE_MASK	0x1f
+
+#define MODE_FLOW		0x0100
+#define MODE_ECHO		0x0200
+#define MODE_INBIN		0x0400
+#define MODE_OUTBIN		0x0800
+#define MODE_FORCE		0x1000
+
+#define	SLC_SYNCH	1
+#define	SLC_BRK		2
+#define	SLC_IP		3
+#define	SLC_AO		4
+#define	SLC_AYT		5
+#define	SLC_EOR		6
+#define	SLC_ABORT	7
+#define	SLC_EOF		8
+#define	SLC_SUSP	9
+#define	SLC_EC		10
+#define	SLC_EL		11
+#define	SLC_EW		12
+#define	SLC_RP		13
+#define	SLC_LNEXT	14
+#define	SLC_XON		15
+#define	SLC_XOFF	16
+#define	SLC_FORW1	17
+#define	SLC_FORW2	18
+
+#define	NSLC		18
+
+#define	SLC_NAMELIST	"0", "SYNCH", "BRK", "IP", "AO", "AYT", "EOR", \
+			"ABORT", "EOF", "SUSP", "EC", "EL", "EW", "RP", \
+			"LNEXT", "XON", "XOFF", "FORW1", "FORW2", 0,
+#ifdef	SLC_NAMES
+char *slc_names[] = {
+	SLC_NAMELIST
+};
+#else
+extern char *slc_names[];
+#define	SLC_NAMES SLC_NAMELIST
+#endif
+
+#define	SLC_NAME_OK(x)	((unsigned int)(x) <= NSLC)
+#define SLC_NAME(x)	slc_names[x]
+
+#define	SLC_NOSUPPORT	0
+#define	SLC_CANTCHANGE	1
+#define	SLC_VARIABLE	2
+#define	SLC_DEFAULT	3
+#define	SLC_LEVELBITS	0x03
+
+#define	SLC_FUNC	0
+#define	SLC_FLAGS	1
+#define	SLC_VALUE	2
+
+#define	SLC_ACK		0x80
+#define	SLC_FLUSHIN	0x40
+#define	SLC_FLUSHOUT	0x20
+
+#define	OLD_ENV_VAR	1
+#define	OLD_ENV_VALUE	0
+#define	NEW_ENV_VAR	0
+#define	NEW_ENV_VALUE	1
+#define	ENV_ESC		2
+#define ENV_USERVAR	3
+
+#define	AUTH_WHO_CLIENT		0
+#define	AUTH_WHO_SERVER		1
+#define	AUTH_WHO_MASK		1
+
+#define	AUTH_HOW_ONE_WAY	0
+#define	AUTH_HOW_MUTUAL		2
+#define	AUTH_HOW_MASK		2
+
+#define	AUTHTYPE_NULL		0
+#define	AUTHTYPE_KERBEROS_V4	1
+#define	AUTHTYPE_KERBEROS_V5	2
+#define	AUTHTYPE_SPX		3
+#define	AUTHTYPE_MINK		4
+#define	AUTHTYPE_CNT		5
+
+#define	AUTHTYPE_TEST		99
+
+#ifdef	AUTH_NAMES
+char *authtype_names[] = {
+	"NULL", "KERBEROS_V4", "KERBEROS_V5", "SPX", "MINK", 0,
+};
+#else
+extern char *authtype_names[];
+#endif
+
+#define	AUTHTYPE_NAME_OK(x)	((unsigned int)(x) < AUTHTYPE_CNT)
+#define	AUTHTYPE_NAME(x)	authtype_names[x]
+
+#define	ENCRYPT_IS		0
+#define	ENCRYPT_SUPPORT		1
+#define	ENCRYPT_REPLY		2
+#define	ENCRYPT_START		3
+#define	ENCRYPT_END		4
+#define	ENCRYPT_REQSTART	5
+#define	ENCRYPT_REQEND		6
+#define	ENCRYPT_ENC_KEYID	7
+#define	ENCRYPT_DEC_KEYID	8
+#define	ENCRYPT_CNT		9
+
+#define	ENCTYPE_ANY		0
+#define	ENCTYPE_DES_CFB64	1
+#define	ENCTYPE_DES_OFB64	2
+#define	ENCTYPE_CNT		3
+
+#ifdef	ENCRYPT_NAMES
+char *encrypt_names[] = {
+	"IS", "SUPPORT", "REPLY", "START", "END",
+	"REQUEST-START", "REQUEST-END", "ENC-KEYID", "DEC-KEYID",
+	0,
+};
+char *enctype_names[] = {
+	"ANY", "DES_CFB64",  "DES_OFB64",  0,
+};
+#else
+extern char *encrypt_names[];
+extern char *enctype_names[];
+#endif
+
+
+#define	ENCRYPT_NAME_OK(x)	((unsigned int)(x) < ENCRYPT_CNT)
+#define	ENCRYPT_NAME(x)		encrypt_names[x]
+
+#define	ENCTYPE_NAME_OK(x)	((unsigned int)(x) < ENCTYPE_CNT)
+#define	ENCTYPE_NAME(x)		enctype_names[x]
+
+#endif
diff --git a/x86_64-linux-musl/include/arpa/tftp.h b/x86_64-linux-musl/include/arpa/tftp.h
new file mode 100644
index 0000000..799c54f
--- /dev/null
+++ b/x86_64-linux-musl/include/arpa/tftp.h
@@ -0,0 +1,31 @@
+#ifndef _ARPA_TFTP_H
+#define _ARPA_TFTP_H
+#define SEGSIZE 512
+#define RRQ 01
+#define WRQ 02
+#define DATA 03
+#define ACK 04
+#define ERROR 05
+struct tftphdr {
+	short th_opcode;
+	union {
+		unsigned short tu_block;
+		short tu_code;
+		char tu_stuff[1];
+	} th_u;
+	char th_data[1];
+};
+#define th_block th_u.tu_block
+#define th_code th_u.tu_code
+#define th_stuff th_u.tu_stuff
+#define th_msg th_data
+#define EUNDEF 0
+#define ENOTFOUND 1
+#define EACCESS 2
+#define ENOSPACE 3
+#define EBADOP 4
+#define EBADID 5
+#define EEXISTS 6
+#define ENOUSER 7
+#endif
+
diff --git a/x86_64-linux-musl/include/asm-arm/asm/auxvec.h b/x86_64-linux-musl/include/asm-arm/asm/auxvec.h
new file mode 100644
index 0000000..ae03ed3
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/auxvec.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 __ASM_AUXVEC_H
+#define __ASM_AUXVEC_H
+#define AT_SYSINFO_EHDR 33
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm/asm/bitsperlong.h b/x86_64-linux-musl/include/asm-arm/asm/bitsperlong.h
new file mode 100644
index 0000000..5dc5060
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/bitsperlong.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-generic/bitsperlong.h>
diff --git a/x86_64-linux-musl/include/asm-arm/asm/bpf_perf_event.h b/x86_64-linux-musl/include/asm-arm/asm/bpf_perf_event.h
new file mode 100644
index 0000000..fa7bc48
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/bpf_perf_event.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-generic/bpf_perf_event.h>
diff --git a/x86_64-linux-musl/include/asm-arm/asm/byteorder.h b/x86_64-linux-musl/include/asm-arm/asm/byteorder.h
new file mode 100644
index 0000000..a253654
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/byteorder.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 __ASM_ARM_BYTEORDER_H
+#define __ASM_ARM_BYTEORDER_H
+#include <linux/byteorder/little_endian.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm/asm/errno.h b/x86_64-linux-musl/include/asm-arm/asm/errno.h
new file mode 100644
index 0000000..392cd94
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/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-generic/errno.h>
diff --git a/x86_64-linux-musl/include/asm-arm/asm/fcntl.h b/x86_64-linux-musl/include/asm-arm/asm/fcntl.h
new file mode 100644
index 0000000..f2f14c3
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/fcntl.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 _ARM_FCNTL_H
+#define _ARM_FCNTL_H
+#define O_DIRECTORY 040000
+#define O_NOFOLLOW 0100000
+#define O_DIRECT 0200000
+#define O_LARGEFILE 0400000
+#include <asm-generic/fcntl.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm/asm/hwcap.h b/x86_64-linux-musl/include/asm-arm/asm/hwcap.h
new file mode 100644
index 0000000..fdc5405
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/hwcap.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__ASMARM_HWCAP_H
+#define _UAPI__ASMARM_HWCAP_H
+#define HWCAP_SWP (1 << 0)
+#define HWCAP_HALF (1 << 1)
+#define HWCAP_THUMB (1 << 2)
+#define HWCAP_26BIT (1 << 3)
+#define HWCAP_FAST_MULT (1 << 4)
+#define HWCAP_FPA (1 << 5)
+#define HWCAP_VFP (1 << 6)
+#define HWCAP_EDSP (1 << 7)
+#define HWCAP_JAVA (1 << 8)
+#define HWCAP_IWMMXT (1 << 9)
+#define HWCAP_CRUNCH (1 << 10)
+#define HWCAP_THUMBEE (1 << 11)
+#define HWCAP_NEON (1 << 12)
+#define HWCAP_VFPv3 (1 << 13)
+#define HWCAP_VFPv3D16 (1 << 14)
+#define HWCAP_TLS (1 << 15)
+#define HWCAP_VFPv4 (1 << 16)
+#define HWCAP_IDIVA (1 << 17)
+#define HWCAP_IDIVT (1 << 18)
+#define HWCAP_VFPD32 (1 << 19)
+#define HWCAP_IDIV (HWCAP_IDIVA | HWCAP_IDIVT)
+#define HWCAP_LPAE (1 << 20)
+#define HWCAP_EVTSTRM (1 << 21)
+#define HWCAP2_AES (1 << 0)
+#define HWCAP2_PMULL (1 << 1)
+#define HWCAP2_SHA1 (1 << 2)
+#define HWCAP2_SHA2 (1 << 3)
+#define HWCAP2_CRC32 (1 << 4)
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm/asm/ioctl.h b/x86_64-linux-musl/include/asm-arm/asm/ioctl.h
new file mode 100644
index 0000000..7b7bd37
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/ioctl.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-generic/ioctl.h>
diff --git a/x86_64-linux-musl/include/asm-arm/asm/ioctls.h b/x86_64-linux-musl/include/asm-arm/asm/ioctls.h
new file mode 100644
index 0000000..e83b2cc
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/ioctls.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 __ASM_ARM_IOCTLS_H
+#define __ASM_ARM_IOCTLS_H
+#define FIOQSIZE 0x545E
+#include <asm-generic/ioctls.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm/asm/ipcbuf.h b/x86_64-linux-musl/include/asm-arm/asm/ipcbuf.h
new file mode 100644
index 0000000..0021f14
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/ipcbuf.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-generic/ipcbuf.h>
diff --git a/x86_64-linux-musl/include/asm-arm/asm/kvm_para.h b/x86_64-linux-musl/include/asm-arm/asm/kvm_para.h
new file mode 100644
index 0000000..e19f7a0
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/kvm_para.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-generic/kvm_para.h>
diff --git a/x86_64-linux-musl/include/asm-arm/asm/mman.h b/x86_64-linux-musl/include/asm-arm/asm/mman.h
new file mode 100644
index 0000000..ec9453d
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/mman.h
@@ -0,0 +1,20 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/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-generic/mman.h>
+#define arch_mmap_check(addr,len,flags) (((flags) & MAP_FIXED && (addr) < FIRST_USER_ADDRESS) ? - EINVAL : 0)
diff --git a/x86_64-linux-musl/include/asm-arm/asm/msgbuf.h b/x86_64-linux-musl/include/asm-arm/asm/msgbuf.h
new file mode 100644
index 0000000..7809e3c
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/msgbuf.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-generic/msgbuf.h>
diff --git a/x86_64-linux-musl/include/asm-arm/asm/param.h b/x86_64-linux-musl/include/asm-arm/asm/param.h
new file mode 100644
index 0000000..5ccf935
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/param.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-generic/param.h>
diff --git a/x86_64-linux-musl/include/asm-arm/asm/perf_regs.h b/x86_64-linux-musl/include/asm-arm/asm/perf_regs.h
new file mode 100644
index 0000000..ea2ff81
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/perf_regs.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 _ASM_ARM_PERF_REGS_H
+#define _ASM_ARM_PERF_REGS_H
+enum perf_event_arm_regs {
+  PERF_REG_ARM_R0,
+  PERF_REG_ARM_R1,
+  PERF_REG_ARM_R2,
+  PERF_REG_ARM_R3,
+  PERF_REG_ARM_R4,
+  PERF_REG_ARM_R5,
+  PERF_REG_ARM_R6,
+  PERF_REG_ARM_R7,
+  PERF_REG_ARM_R8,
+  PERF_REG_ARM_R9,
+  PERF_REG_ARM_R10,
+  PERF_REG_ARM_FP,
+  PERF_REG_ARM_IP,
+  PERF_REG_ARM_SP,
+  PERF_REG_ARM_LR,
+  PERF_REG_ARM_PC,
+  PERF_REG_ARM_MAX,
+};
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm/asm/poll.h b/x86_64-linux-musl/include/asm-arm/asm/poll.h
new file mode 100644
index 0000000..d7e8adc
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/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-generic/poll.h>
diff --git a/x86_64-linux-musl/include/asm-arm/asm/posix_types.h b/x86_64-linux-musl/include/asm-arm/asm/posix_types.h
new file mode 100644
index 0000000..ff5138b
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/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 __ARCH_ARM_POSIX_TYPES_H
+#define __ARCH_ARM_POSIX_TYPES_H
+typedef unsigned short __kernel_mode_t;
+#define __kernel_mode_t __kernel_mode_t
+typedef unsigned short __kernel_ipc_pid_t;
+#define __kernel_ipc_pid_t __kernel_ipc_pid_t
+typedef unsigned short __kernel_uid_t;
+typedef unsigned short __kernel_gid_t;
+#define __kernel_uid_t __kernel_uid_t
+typedef unsigned short __kernel_old_dev_t;
+#define __kernel_old_dev_t __kernel_old_dev_t
+#include <asm-generic/posix_types.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm/asm/ptrace.h b/x86_64-linux-musl/include/asm-arm/asm/ptrace.h
new file mode 100644
index 0000000..b0291dc
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/ptrace.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 _UAPI__ASM_ARM_PTRACE_H
+#define _UAPI__ASM_ARM_PTRACE_H
+#include <asm/hwcap.h>
+#define PTRACE_GETREGS 12
+#define PTRACE_SETREGS 13
+#define PTRACE_GETFPREGS 14
+#define PTRACE_SETFPREGS 15
+#define PTRACE_GETWMMXREGS 18
+#define PTRACE_SETWMMXREGS 19
+#define PTRACE_OLDSETOPTIONS 21
+#define PTRACE_GET_THREAD_AREA 22
+#define PTRACE_SET_SYSCALL 23
+#define PTRACE_GETCRUNCHREGS 25
+#define PTRACE_SETCRUNCHREGS 26
+#define PTRACE_GETVFPREGS 27
+#define PTRACE_SETVFPREGS 28
+#define PTRACE_GETHBPREGS 29
+#define PTRACE_SETHBPREGS 30
+#define PTRACE_GETFDPIC 31
+#define PTRACE_GETFDPIC_EXEC 0
+#define PTRACE_GETFDPIC_INTERP 1
+#define USR26_MODE 0x00000000
+#define FIQ26_MODE 0x00000001
+#define IRQ26_MODE 0x00000002
+#define SVC26_MODE 0x00000003
+#define USR_MODE 0x00000010
+#define SVC_MODE 0x00000013
+#define FIQ_MODE 0x00000011
+#define IRQ_MODE 0x00000012
+#define MON_MODE 0x00000016
+#define ABT_MODE 0x00000017
+#define HYP_MODE 0x0000001a
+#define UND_MODE 0x0000001b
+#define SYSTEM_MODE 0x0000001f
+#define MODE32_BIT 0x00000010
+#define MODE_MASK 0x0000001f
+#define V4_PSR_T_BIT 0x00000020
+#define V7M_PSR_T_BIT 0x01000000
+#define PSR_T_BIT V4_PSR_T_BIT
+#define PSR_F_BIT 0x00000040
+#define PSR_I_BIT 0x00000080
+#define PSR_A_BIT 0x00000100
+#define PSR_E_BIT 0x00000200
+#define PSR_J_BIT 0x01000000
+#define PSR_Q_BIT 0x08000000
+#define PSR_V_BIT 0x10000000
+#define PSR_C_BIT 0x20000000
+#define PSR_Z_BIT 0x40000000
+#define PSR_N_BIT 0x80000000
+#define PSR_f 0xff000000
+#define PSR_s 0x00ff0000
+#define PSR_x 0x0000ff00
+#define PSR_c 0x000000ff
+#define APSR_MASK 0xf80f0000
+#define PSR_ISET_MASK 0x01000010
+#define PSR_IT_MASK 0x0600fc00
+#define PSR_ENDIAN_MASK 0x00000200
+#define PSR_ENDSTATE 0
+#define PT_TEXT_ADDR 0x10000
+#define PT_DATA_ADDR 0x10004
+#define PT_TEXT_END_ADDR 0x10008
+#ifndef __ASSEMBLY__
+struct pt_regs {
+  long uregs[18];
+};
+#define ARM_cpsr uregs[16]
+#define ARM_pc uregs[15]
+#define ARM_lr uregs[14]
+#define ARM_sp uregs[13]
+#define ARM_ip uregs[12]
+#define ARM_fp uregs[11]
+#define ARM_r10 uregs[10]
+#define ARM_r9 uregs[9]
+#define ARM_r8 uregs[8]
+#define ARM_r7 uregs[7]
+#define ARM_r6 uregs[6]
+#define ARM_r5 uregs[5]
+#define ARM_r4 uregs[4]
+#define ARM_r3 uregs[3]
+#define ARM_r2 uregs[2]
+#define ARM_r1 uregs[1]
+#define ARM_r0 uregs[0]
+#define ARM_ORIG_r0 uregs[17]
+#define ARM_VFPREGS_SIZE (32 * 8 + 4)
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm/asm/resource.h b/x86_64-linux-musl/include/asm-arm/asm/resource.h
new file mode 100644
index 0000000..371adb5
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/resource.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-generic/resource.h>
diff --git a/x86_64-linux-musl/include/asm-arm/asm/sembuf.h b/x86_64-linux-musl/include/asm-arm/asm/sembuf.h
new file mode 100644
index 0000000..6ce6549
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/sembuf.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-generic/sembuf.h>
diff --git a/x86_64-linux-musl/include/asm-arm/asm/setup.h b/x86_64-linux-musl/include/asm-arm/asm/setup.h
new file mode 100644
index 0000000..672a72a
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/setup.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__ASMARM_SETUP_H
+#define _UAPI__ASMARM_SETUP_H
+#include <linux/types.h>
+#define COMMAND_LINE_SIZE 1024
+#define ATAG_NONE 0x00000000
+struct tag_header {
+  __u32 size;
+  __u32 tag;
+};
+#define ATAG_CORE 0x54410001
+struct tag_core {
+  __u32 flags;
+  __u32 pagesize;
+  __u32 rootdev;
+};
+#define ATAG_MEM 0x54410002
+struct tag_mem32 {
+  __u32 size;
+  __u32 start;
+};
+#define ATAG_VIDEOTEXT 0x54410003
+struct tag_videotext {
+  __u8 x;
+  __u8 y;
+  __u16 video_page;
+  __u8 video_mode;
+  __u8 video_cols;
+  __u16 video_ega_bx;
+  __u8 video_lines;
+  __u8 video_isvga;
+  __u16 video_points;
+};
+#define ATAG_RAMDISK 0x54410004
+struct tag_ramdisk {
+  __u32 flags;
+  __u32 size;
+  __u32 start;
+};
+#define ATAG_INITRD 0x54410005
+#define ATAG_INITRD2 0x54420005
+struct tag_initrd {
+  __u32 start;
+  __u32 size;
+};
+#define ATAG_SERIAL 0x54410006
+struct tag_serialnr {
+  __u32 low;
+  __u32 high;
+};
+#define ATAG_REVISION 0x54410007
+struct tag_revision {
+  __u32 rev;
+};
+#define ATAG_VIDEOLFB 0x54410008
+struct tag_videolfb {
+  __u16 lfb_width;
+  __u16 lfb_height;
+  __u16 lfb_depth;
+  __u16 lfb_linelength;
+  __u32 lfb_base;
+  __u32 lfb_size;
+  __u8 red_size;
+  __u8 red_pos;
+  __u8 green_size;
+  __u8 green_pos;
+  __u8 blue_size;
+  __u8 blue_pos;
+  __u8 rsvd_size;
+  __u8 rsvd_pos;
+};
+#define ATAG_CMDLINE 0x54410009
+struct tag_cmdline {
+  char cmdline[1];
+};
+#define ATAG_ACORN 0x41000101
+struct tag_acorn {
+  __u32 memc_control_reg;
+  __u32 vram_pages;
+  __u8 sounddefault;
+  __u8 adfsdrives;
+};
+#define ATAG_MEMCLK 0x41000402
+struct tag_memclk {
+  __u32 fmemclk;
+};
+struct tag {
+  struct tag_header hdr;
+  union {
+    struct tag_core core;
+    struct tag_mem32 mem;
+    struct tag_videotext videotext;
+    struct tag_ramdisk ramdisk;
+    struct tag_initrd initrd;
+    struct tag_serialnr serialnr;
+    struct tag_revision revision;
+    struct tag_videolfb videolfb;
+    struct tag_cmdline cmdline;
+    struct tag_acorn acorn;
+    struct tag_memclk memclk;
+  } u;
+};
+struct tagtable {
+  __u32 tag;
+  int(* parse) (const struct tag *);
+};
+#define tag_member_present(tag,member) ((unsigned long) (& ((struct tag *) 0L)->member + 1) <= (tag)->hdr.size * 4)
+#define tag_next(t) ((struct tag *) ((__u32 *) (t) + (t)->hdr.size))
+#define tag_size(type) ((sizeof(struct tag_header) + sizeof(struct type)) >> 2)
+#define for_each_tag(t,base) for(t = base; t->hdr.size; t = tag_next(t))
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm/asm/shmbuf.h b/x86_64-linux-musl/include/asm-arm/asm/shmbuf.h
new file mode 100644
index 0000000..fe8b1be
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/shmbuf.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-generic/shmbuf.h>
diff --git a/x86_64-linux-musl/include/asm-arm/asm/sigcontext.h b/x86_64-linux-musl/include/asm-arm/asm/sigcontext.h
new file mode 100644
index 0000000..b7504d6
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/sigcontext.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 _ASMARM_SIGCONTEXT_H
+#define _ASMARM_SIGCONTEXT_H
+struct sigcontext {
+  unsigned long trap_no;
+  unsigned long error_code;
+  unsigned long oldmask;
+  unsigned long arm_r0;
+  unsigned long arm_r1;
+  unsigned long arm_r2;
+  unsigned long arm_r3;
+  unsigned long arm_r4;
+  unsigned long arm_r5;
+  unsigned long arm_r6;
+  unsigned long arm_r7;
+  unsigned long arm_r8;
+  unsigned long arm_r9;
+  unsigned long arm_r10;
+  unsigned long arm_fp;
+  unsigned long arm_ip;
+  unsigned long arm_sp;
+  unsigned long arm_lr;
+  unsigned long arm_pc;
+  unsigned long arm_cpsr;
+  unsigned long fault_address;
+};
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm/asm/siginfo.h b/x86_64-linux-musl/include/asm-arm/asm/siginfo.h
new file mode 100644
index 0000000..a31ebb2
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/siginfo.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-generic/siginfo.h>
diff --git a/x86_64-linux-musl/include/asm-arm/asm/signal.h b/x86_64-linux-musl/include/asm-arm/asm/signal.h
new file mode 100644
index 0000000..5f7e0c5
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/signal.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_ASMARM_SIGNAL_H
+#define _UAPI_ASMARM_SIGNAL_H
+#include <linux/types.h>
+struct siginfo;
+#define _KERNEL_NSIG 32
+typedef unsigned long sigset_t;
+#define SIGHUP 1
+#define SIGINT 2
+#define SIGQUIT 3
+#define SIGILL 4
+#define SIGTRAP 5
+#define SIGABRT 6
+#define SIGIOT 6
+#define SIGBUS 7
+#define SIGFPE 8
+#define SIGKILL 9
+#define SIGUSR1 10
+#define SIGSEGV 11
+#define SIGUSR2 12
+#define SIGPIPE 13
+#define SIGALRM 14
+#define SIGTERM 15
+#define SIGSTKFLT 16
+#define SIGCHLD 17
+#define SIGCONT 18
+#define SIGSTOP 19
+#define SIGTSTP 20
+#define SIGTTIN 21
+#define SIGTTOU 22
+#define SIGURG 23
+#define SIGXCPU 24
+#define SIGXFSZ 25
+#define SIGVTALRM 26
+#define SIGPROF 27
+#define SIGWINCH 28
+#define SIGIO 29
+#define SIGPOLL SIGIO
+#define SIGPWR 30
+#define SIGSYS 31
+#define SIGUNUSED 31
+#define __SIGRTMIN 32
+#define __SIGRTMAX _KERNEL__NSIG
+#define SIGSWI 32
+#define SA_THIRTYTWO 0x02000000
+#define SA_RESTORER 0x04000000
+#define MINSIGSTKSZ 2048
+#define SIGSTKSZ 8192
+#include <asm-generic/signal-defs.h>
+struct sigaction {
+  union {
+    __sighandler_t _sa_handler;
+    void(* _sa_sigaction) (int, struct siginfo *, void *);
+  } _u;
+  sigset_t sa_mask;
+  unsigned long sa_flags;
+  void(* sa_restorer) (void);
+};
+#define sa_handler _u._sa_handler
+#define sa_sigaction _u._sa_sigaction
+typedef struct sigaltstack {
+  void __user * ss_sp;
+  int ss_flags;
+  size_t ss_size;
+} stack_t;
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm/asm/socket.h b/x86_64-linux-musl/include/asm-arm/asm/socket.h
new file mode 100644
index 0000000..50a9874
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/socket.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-generic/socket.h>
diff --git a/x86_64-linux-musl/include/asm-arm/asm/sockios.h b/x86_64-linux-musl/include/asm-arm/asm/sockios.h
new file mode 100644
index 0000000..710db92
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/sockios.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-generic/sockios.h>
diff --git a/x86_64-linux-musl/include/asm-arm/asm/stat.h b/x86_64-linux-musl/include/asm-arm/asm/stat.h
new file mode 100644
index 0000000..27ec243
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/stat.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 _ASMARM_STAT_H
+#define _ASMARM_STAT_H
+struct __old_kernel_stat {
+  unsigned short st_dev;
+  unsigned short st_ino;
+  unsigned short st_mode;
+  unsigned short st_nlink;
+  unsigned short st_uid;
+  unsigned short st_gid;
+  unsigned short st_rdev;
+  unsigned long st_size;
+  unsigned long st_atime;
+  unsigned long st_mtime;
+  unsigned long st_ctime;
+};
+#define STAT_HAVE_NSEC
+struct stat {
+  unsigned long st_dev;
+  unsigned long st_ino;
+  unsigned short st_mode;
+  unsigned short st_nlink;
+  unsigned short st_uid;
+  unsigned short st_gid;
+  unsigned long st_rdev;
+  unsigned long st_size;
+  unsigned long st_blksize;
+  unsigned long st_blocks;
+  unsigned long st_atime;
+  unsigned long st_atime_nsec;
+  unsigned long st_mtime;
+  unsigned long st_mtime_nsec;
+  unsigned long st_ctime;
+  unsigned long st_ctime_nsec;
+  unsigned long __unused4;
+  unsigned long __unused5;
+};
+struct stat64 {
+  unsigned long long st_dev;
+  unsigned char __pad0[4];
+#define STAT64_HAS_BROKEN_ST_INO 1
+  unsigned long __st_ino;
+  unsigned int st_mode;
+  unsigned int st_nlink;
+  unsigned long st_uid;
+  unsigned long st_gid;
+  unsigned long long st_rdev;
+  unsigned char __pad3[4];
+  long long st_size;
+  unsigned long st_blksize;
+  unsigned long long st_blocks;
+  unsigned long st_atime;
+  unsigned long st_atime_nsec;
+  unsigned long st_mtime;
+  unsigned long st_mtime_nsec;
+  unsigned long st_ctime;
+  unsigned long st_ctime_nsec;
+  unsigned long long st_ino;
+};
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm/asm/statfs.h b/x86_64-linux-musl/include/asm-arm/asm/statfs.h
new file mode 100644
index 0000000..7e44ad1
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/statfs.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 _ASMARM_STATFS_H
+#define _ASMARM_STATFS_H
+#define ARCH_PACK_STATFS64 __attribute__((packed, aligned(4)))
+#include <asm-generic/statfs.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm/asm/swab.h b/x86_64-linux-musl/include/asm-arm/asm/swab.h
new file mode 100644
index 0000000..081a76e
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/swab.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__ASM_ARM_SWAB_H
+#define _UAPI__ASM_ARM_SWAB_H
+#include <linux/compiler.h>
+#include <linux/types.h>
+#ifndef __STRICT_ANSI__
+#define __SWAB_64_THRU_32__
+#endif
+#ifndef __thumb__
+#endif
+#define __arch_swab32 __arch_swab32
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm/asm/termbits.h b/x86_64-linux-musl/include/asm-arm/asm/termbits.h
new file mode 100644
index 0000000..42af6fe
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/termbits.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-generic/termbits.h>
diff --git a/x86_64-linux-musl/include/asm-arm/asm/termios.h b/x86_64-linux-musl/include/asm-arm/asm/termios.h
new file mode 100644
index 0000000..feca4c6
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/termios.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-generic/termios.h>
diff --git a/x86_64-linux-musl/include/asm-arm/asm/types.h b/x86_64-linux-musl/include/asm-arm/asm/types.h
new file mode 100644
index 0000000..461e485
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/types.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_ASM_TYPES_H
+#define _UAPI_ASM_TYPES_H
+#include <asm-generic/int-ll64.h>
+#ifdef __INT32_TYPE__
+#undef __INT32_TYPE__
+#define __INT32_TYPE__ int
+#endif
+#ifdef __UINT32_TYPE__
+#undef __UINT32_TYPE__
+#define __UINT32_TYPE__ unsigned int
+#endif
+#ifdef __UINTPTR_TYPE__
+#undef __UINTPTR_TYPE__
+#define __UINTPTR_TYPE__ unsigned long
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm/asm/unistd-eabi.h b/x86_64-linux-musl/include/asm-arm/asm/unistd-eabi.h
new file mode 100644
index 0000000..2af0e97
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/unistd-eabi.h
@@ -0,0 +1,423 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_UNISTD_EABI_H
+#define _UAPI_ASM_UNISTD_EABI_H
+#define __NR_restart_syscall (__NR_SYSCALL_BASE + 0)
+#define __NR_exit (__NR_SYSCALL_BASE + 1)
+#define __NR_fork (__NR_SYSCALL_BASE + 2)
+#define __NR_read (__NR_SYSCALL_BASE + 3)
+#define __NR_write (__NR_SYSCALL_BASE + 4)
+#define __NR_open (__NR_SYSCALL_BASE + 5)
+#define __NR_close (__NR_SYSCALL_BASE + 6)
+#define __NR_creat (__NR_SYSCALL_BASE + 8)
+#define __NR_link (__NR_SYSCALL_BASE + 9)
+#define __NR_unlink (__NR_SYSCALL_BASE + 10)
+#define __NR_execve (__NR_SYSCALL_BASE + 11)
+#define __NR_chdir (__NR_SYSCALL_BASE + 12)
+#define __NR_mknod (__NR_SYSCALL_BASE + 14)
+#define __NR_chmod (__NR_SYSCALL_BASE + 15)
+#define __NR_lchown (__NR_SYSCALL_BASE + 16)
+#define __NR_lseek (__NR_SYSCALL_BASE + 19)
+#define __NR_getpid (__NR_SYSCALL_BASE + 20)
+#define __NR_mount (__NR_SYSCALL_BASE + 21)
+#define __NR_setuid (__NR_SYSCALL_BASE + 23)
+#define __NR_getuid (__NR_SYSCALL_BASE + 24)
+#define __NR_ptrace (__NR_SYSCALL_BASE + 26)
+#define __NR_pause (__NR_SYSCALL_BASE + 29)
+#define __NR_access (__NR_SYSCALL_BASE + 33)
+#define __NR_nice (__NR_SYSCALL_BASE + 34)
+#define __NR_sync (__NR_SYSCALL_BASE + 36)
+#define __NR_kill (__NR_SYSCALL_BASE + 37)
+#define __NR_rename (__NR_SYSCALL_BASE + 38)
+#define __NR_mkdir (__NR_SYSCALL_BASE + 39)
+#define __NR_rmdir (__NR_SYSCALL_BASE + 40)
+#define __NR_dup (__NR_SYSCALL_BASE + 41)
+#define __NR_pipe (__NR_SYSCALL_BASE + 42)
+#define __NR_times (__NR_SYSCALL_BASE + 43)
+#define __NR_brk (__NR_SYSCALL_BASE + 45)
+#define __NR_setgid (__NR_SYSCALL_BASE + 46)
+#define __NR_getgid (__NR_SYSCALL_BASE + 47)
+#define __NR_geteuid (__NR_SYSCALL_BASE + 49)
+#define __NR_getegid (__NR_SYSCALL_BASE + 50)
+#define __NR_acct (__NR_SYSCALL_BASE + 51)
+#define __NR_umount2 (__NR_SYSCALL_BASE + 52)
+#define __NR_ioctl (__NR_SYSCALL_BASE + 54)
+#define __NR_fcntl (__NR_SYSCALL_BASE + 55)
+#define __NR_setpgid (__NR_SYSCALL_BASE + 57)
+#define __NR_umask (__NR_SYSCALL_BASE + 60)
+#define __NR_chroot (__NR_SYSCALL_BASE + 61)
+#define __NR_ustat (__NR_SYSCALL_BASE + 62)
+#define __NR_dup2 (__NR_SYSCALL_BASE + 63)
+#define __NR_getppid (__NR_SYSCALL_BASE + 64)
+#define __NR_getpgrp (__NR_SYSCALL_BASE + 65)
+#define __NR_setsid (__NR_SYSCALL_BASE + 66)
+#define __NR_sigaction (__NR_SYSCALL_BASE + 67)
+#define __NR_setreuid (__NR_SYSCALL_BASE + 70)
+#define __NR_setregid (__NR_SYSCALL_BASE + 71)
+#define __NR_sigsuspend (__NR_SYSCALL_BASE + 72)
+#define __NR_sigpending (__NR_SYSCALL_BASE + 73)
+#define __NR_sethostname (__NR_SYSCALL_BASE + 74)
+#define __NR_setrlimit (__NR_SYSCALL_BASE + 75)
+#define __NR_getrusage (__NR_SYSCALL_BASE + 77)
+#define __NR_gettimeofday (__NR_SYSCALL_BASE + 78)
+#define __NR_settimeofday (__NR_SYSCALL_BASE + 79)
+#define __NR_getgroups (__NR_SYSCALL_BASE + 80)
+#define __NR_setgroups (__NR_SYSCALL_BASE + 81)
+#define __NR_symlink (__NR_SYSCALL_BASE + 83)
+#define __NR_readlink (__NR_SYSCALL_BASE + 85)
+#define __NR_uselib (__NR_SYSCALL_BASE + 86)
+#define __NR_swapon (__NR_SYSCALL_BASE + 87)
+#define __NR_reboot (__NR_SYSCALL_BASE + 88)
+#define __NR_munmap (__NR_SYSCALL_BASE + 91)
+#define __NR_truncate (__NR_SYSCALL_BASE + 92)
+#define __NR_ftruncate (__NR_SYSCALL_BASE + 93)
+#define __NR_fchmod (__NR_SYSCALL_BASE + 94)
+#define __NR_fchown (__NR_SYSCALL_BASE + 95)
+#define __NR_getpriority (__NR_SYSCALL_BASE + 96)
+#define __NR_setpriority (__NR_SYSCALL_BASE + 97)
+#define __NR_statfs (__NR_SYSCALL_BASE + 99)
+#define __NR_fstatfs (__NR_SYSCALL_BASE + 100)
+#define __NR_syslog (__NR_SYSCALL_BASE + 103)
+#define __NR_setitimer (__NR_SYSCALL_BASE + 104)
+#define __NR_getitimer (__NR_SYSCALL_BASE + 105)
+#define __NR_stat (__NR_SYSCALL_BASE + 106)
+#define __NR_lstat (__NR_SYSCALL_BASE + 107)
+#define __NR_fstat (__NR_SYSCALL_BASE + 108)
+#define __NR_vhangup (__NR_SYSCALL_BASE + 111)
+#define __NR_wait4 (__NR_SYSCALL_BASE + 114)
+#define __NR_swapoff (__NR_SYSCALL_BASE + 115)
+#define __NR_sysinfo (__NR_SYSCALL_BASE + 116)
+#define __NR_fsync (__NR_SYSCALL_BASE + 118)
+#define __NR_sigreturn (__NR_SYSCALL_BASE + 119)
+#define __NR_clone (__NR_SYSCALL_BASE + 120)
+#define __NR_setdomainname (__NR_SYSCALL_BASE + 121)
+#define __NR_uname (__NR_SYSCALL_BASE + 122)
+#define __NR_adjtimex (__NR_SYSCALL_BASE + 124)
+#define __NR_mprotect (__NR_SYSCALL_BASE + 125)
+#define __NR_sigprocmask (__NR_SYSCALL_BASE + 126)
+#define __NR_init_module (__NR_SYSCALL_BASE + 128)
+#define __NR_delete_module (__NR_SYSCALL_BASE + 129)
+#define __NR_quotactl (__NR_SYSCALL_BASE + 131)
+#define __NR_getpgid (__NR_SYSCALL_BASE + 132)
+#define __NR_fchdir (__NR_SYSCALL_BASE + 133)
+#define __NR_bdflush (__NR_SYSCALL_BASE + 134)
+#define __NR_sysfs (__NR_SYSCALL_BASE + 135)
+#define __NR_personality (__NR_SYSCALL_BASE + 136)
+#define __NR_setfsuid (__NR_SYSCALL_BASE + 138)
+#define __NR_setfsgid (__NR_SYSCALL_BASE + 139)
+#define __NR__llseek (__NR_SYSCALL_BASE + 140)
+#define __NR_getdents (__NR_SYSCALL_BASE + 141)
+#define __NR__newselect (__NR_SYSCALL_BASE + 142)
+#define __NR_flock (__NR_SYSCALL_BASE + 143)
+#define __NR_msync (__NR_SYSCALL_BASE + 144)
+#define __NR_readv (__NR_SYSCALL_BASE + 145)
+#define __NR_writev (__NR_SYSCALL_BASE + 146)
+#define __NR_getsid (__NR_SYSCALL_BASE + 147)
+#define __NR_fdatasync (__NR_SYSCALL_BASE + 148)
+#define __NR__sysctl (__NR_SYSCALL_BASE + 149)
+#define __NR_mlock (__NR_SYSCALL_BASE + 150)
+#define __NR_munlock (__NR_SYSCALL_BASE + 151)
+#define __NR_mlockall (__NR_SYSCALL_BASE + 152)
+#define __NR_munlockall (__NR_SYSCALL_BASE + 153)
+#define __NR_sched_setparam (__NR_SYSCALL_BASE + 154)
+#define __NR_sched_getparam (__NR_SYSCALL_BASE + 155)
+#define __NR_sched_setscheduler (__NR_SYSCALL_BASE + 156)
+#define __NR_sched_getscheduler (__NR_SYSCALL_BASE + 157)
+#define __NR_sched_yield (__NR_SYSCALL_BASE + 158)
+#define __NR_sched_get_priority_max (__NR_SYSCALL_BASE + 159)
+#define __NR_sched_get_priority_min (__NR_SYSCALL_BASE + 160)
+#define __NR_sched_rr_get_interval (__NR_SYSCALL_BASE + 161)
+#define __NR_nanosleep (__NR_SYSCALL_BASE + 162)
+#define __NR_mremap (__NR_SYSCALL_BASE + 163)
+#define __NR_setresuid (__NR_SYSCALL_BASE + 164)
+#define __NR_getresuid (__NR_SYSCALL_BASE + 165)
+#define __NR_poll (__NR_SYSCALL_BASE + 168)
+#define __NR_nfsservctl (__NR_SYSCALL_BASE + 169)
+#define __NR_setresgid (__NR_SYSCALL_BASE + 170)
+#define __NR_getresgid (__NR_SYSCALL_BASE + 171)
+#define __NR_prctl (__NR_SYSCALL_BASE + 172)
+#define __NR_rt_sigreturn (__NR_SYSCALL_BASE + 173)
+#define __NR_rt_sigaction (__NR_SYSCALL_BASE + 174)
+#define __NR_rt_sigprocmask (__NR_SYSCALL_BASE + 175)
+#define __NR_rt_sigpending (__NR_SYSCALL_BASE + 176)
+#define __NR_rt_sigtimedwait (__NR_SYSCALL_BASE + 177)
+#define __NR_rt_sigqueueinfo (__NR_SYSCALL_BASE + 178)
+#define __NR_rt_sigsuspend (__NR_SYSCALL_BASE + 179)
+#define __NR_pread64 (__NR_SYSCALL_BASE + 180)
+#define __NR_pwrite64 (__NR_SYSCALL_BASE + 181)
+#define __NR_chown (__NR_SYSCALL_BASE + 182)
+#define __NR_getcwd (__NR_SYSCALL_BASE + 183)
+#define __NR_capget (__NR_SYSCALL_BASE + 184)
+#define __NR_capset (__NR_SYSCALL_BASE + 185)
+#define __NR_sigaltstack (__NR_SYSCALL_BASE + 186)
+#define __NR_sendfile (__NR_SYSCALL_BASE + 187)
+#define __NR_vfork (__NR_SYSCALL_BASE + 190)
+#define __NR_ugetrlimit (__NR_SYSCALL_BASE + 191)
+#define __NR_mmap2 (__NR_SYSCALL_BASE + 192)
+#define __NR_truncate64 (__NR_SYSCALL_BASE + 193)
+#define __NR_ftruncate64 (__NR_SYSCALL_BASE + 194)
+#define __NR_stat64 (__NR_SYSCALL_BASE + 195)
+#define __NR_lstat64 (__NR_SYSCALL_BASE + 196)
+#define __NR_fstat64 (__NR_SYSCALL_BASE + 197)
+#define __NR_lchown32 (__NR_SYSCALL_BASE + 198)
+#define __NR_getuid32 (__NR_SYSCALL_BASE + 199)
+#define __NR_getgid32 (__NR_SYSCALL_BASE + 200)
+#define __NR_geteuid32 (__NR_SYSCALL_BASE + 201)
+#define __NR_getegid32 (__NR_SYSCALL_BASE + 202)
+#define __NR_setreuid32 (__NR_SYSCALL_BASE + 203)
+#define __NR_setregid32 (__NR_SYSCALL_BASE + 204)
+#define __NR_getgroups32 (__NR_SYSCALL_BASE + 205)
+#define __NR_setgroups32 (__NR_SYSCALL_BASE + 206)
+#define __NR_fchown32 (__NR_SYSCALL_BASE + 207)
+#define __NR_setresuid32 (__NR_SYSCALL_BASE + 208)
+#define __NR_getresuid32 (__NR_SYSCALL_BASE + 209)
+#define __NR_setresgid32 (__NR_SYSCALL_BASE + 210)
+#define __NR_getresgid32 (__NR_SYSCALL_BASE + 211)
+#define __NR_chown32 (__NR_SYSCALL_BASE + 212)
+#define __NR_setuid32 (__NR_SYSCALL_BASE + 213)
+#define __NR_setgid32 (__NR_SYSCALL_BASE + 214)
+#define __NR_setfsuid32 (__NR_SYSCALL_BASE + 215)
+#define __NR_setfsgid32 (__NR_SYSCALL_BASE + 216)
+#define __NR_getdents64 (__NR_SYSCALL_BASE + 217)
+#define __NR_pivot_root (__NR_SYSCALL_BASE + 218)
+#define __NR_mincore (__NR_SYSCALL_BASE + 219)
+#define __NR_madvise (__NR_SYSCALL_BASE + 220)
+#define __NR_fcntl64 (__NR_SYSCALL_BASE + 221)
+#define __NR_gettid (__NR_SYSCALL_BASE + 224)
+#define __NR_readahead (__NR_SYSCALL_BASE + 225)
+#define __NR_setxattr (__NR_SYSCALL_BASE + 226)
+#define __NR_lsetxattr (__NR_SYSCALL_BASE + 227)
+#define __NR_fsetxattr (__NR_SYSCALL_BASE + 228)
+#define __NR_getxattr (__NR_SYSCALL_BASE + 229)
+#define __NR_lgetxattr (__NR_SYSCALL_BASE + 230)
+#define __NR_fgetxattr (__NR_SYSCALL_BASE + 231)
+#define __NR_listxattr (__NR_SYSCALL_BASE + 232)
+#define __NR_llistxattr (__NR_SYSCALL_BASE + 233)
+#define __NR_flistxattr (__NR_SYSCALL_BASE + 234)
+#define __NR_removexattr (__NR_SYSCALL_BASE + 235)
+#define __NR_lremovexattr (__NR_SYSCALL_BASE + 236)
+#define __NR_fremovexattr (__NR_SYSCALL_BASE + 237)
+#define __NR_tkill (__NR_SYSCALL_BASE + 238)
+#define __NR_sendfile64 (__NR_SYSCALL_BASE + 239)
+#define __NR_futex (__NR_SYSCALL_BASE + 240)
+#define __NR_sched_setaffinity (__NR_SYSCALL_BASE + 241)
+#define __NR_sched_getaffinity (__NR_SYSCALL_BASE + 242)
+#define __NR_io_setup (__NR_SYSCALL_BASE + 243)
+#define __NR_io_destroy (__NR_SYSCALL_BASE + 244)
+#define __NR_io_getevents (__NR_SYSCALL_BASE + 245)
+#define __NR_io_submit (__NR_SYSCALL_BASE + 246)
+#define __NR_io_cancel (__NR_SYSCALL_BASE + 247)
+#define __NR_exit_group (__NR_SYSCALL_BASE + 248)
+#define __NR_lookup_dcookie (__NR_SYSCALL_BASE + 249)
+#define __NR_epoll_create (__NR_SYSCALL_BASE + 250)
+#define __NR_epoll_ctl (__NR_SYSCALL_BASE + 251)
+#define __NR_epoll_wait (__NR_SYSCALL_BASE + 252)
+#define __NR_remap_file_pages (__NR_SYSCALL_BASE + 253)
+#define __NR_set_tid_address (__NR_SYSCALL_BASE + 256)
+#define __NR_timer_create (__NR_SYSCALL_BASE + 257)
+#define __NR_timer_settime (__NR_SYSCALL_BASE + 258)
+#define __NR_timer_gettime (__NR_SYSCALL_BASE + 259)
+#define __NR_timer_getoverrun (__NR_SYSCALL_BASE + 260)
+#define __NR_timer_delete (__NR_SYSCALL_BASE + 261)
+#define __NR_clock_settime (__NR_SYSCALL_BASE + 262)
+#define __NR_clock_gettime (__NR_SYSCALL_BASE + 263)
+#define __NR_clock_getres (__NR_SYSCALL_BASE + 264)
+#define __NR_clock_nanosleep (__NR_SYSCALL_BASE + 265)
+#define __NR_statfs64 (__NR_SYSCALL_BASE + 266)
+#define __NR_fstatfs64 (__NR_SYSCALL_BASE + 267)
+#define __NR_tgkill (__NR_SYSCALL_BASE + 268)
+#define __NR_utimes (__NR_SYSCALL_BASE + 269)
+#define __NR_arm_fadvise64_64 (__NR_SYSCALL_BASE + 270)
+#define __NR_pciconfig_iobase (__NR_SYSCALL_BASE + 271)
+#define __NR_pciconfig_read (__NR_SYSCALL_BASE + 272)
+#define __NR_pciconfig_write (__NR_SYSCALL_BASE + 273)
+#define __NR_mq_open (__NR_SYSCALL_BASE + 274)
+#define __NR_mq_unlink (__NR_SYSCALL_BASE + 275)
+#define __NR_mq_timedsend (__NR_SYSCALL_BASE + 276)
+#define __NR_mq_timedreceive (__NR_SYSCALL_BASE + 277)
+#define __NR_mq_notify (__NR_SYSCALL_BASE + 278)
+#define __NR_mq_getsetattr (__NR_SYSCALL_BASE + 279)
+#define __NR_waitid (__NR_SYSCALL_BASE + 280)
+#define __NR_socket (__NR_SYSCALL_BASE + 281)
+#define __NR_bind (__NR_SYSCALL_BASE + 282)
+#define __NR_connect (__NR_SYSCALL_BASE + 283)
+#define __NR_listen (__NR_SYSCALL_BASE + 284)
+#define __NR_accept (__NR_SYSCALL_BASE + 285)
+#define __NR_getsockname (__NR_SYSCALL_BASE + 286)
+#define __NR_getpeername (__NR_SYSCALL_BASE + 287)
+#define __NR_socketpair (__NR_SYSCALL_BASE + 288)
+#define __NR_send (__NR_SYSCALL_BASE + 289)
+#define __NR_sendto (__NR_SYSCALL_BASE + 290)
+#define __NR_recv (__NR_SYSCALL_BASE + 291)
+#define __NR_recvfrom (__NR_SYSCALL_BASE + 292)
+#define __NR_shutdown (__NR_SYSCALL_BASE + 293)
+#define __NR_setsockopt (__NR_SYSCALL_BASE + 294)
+#define __NR_getsockopt (__NR_SYSCALL_BASE + 295)
+#define __NR_sendmsg (__NR_SYSCALL_BASE + 296)
+#define __NR_recvmsg (__NR_SYSCALL_BASE + 297)
+#define __NR_semop (__NR_SYSCALL_BASE + 298)
+#define __NR_semget (__NR_SYSCALL_BASE + 299)
+#define __NR_semctl (__NR_SYSCALL_BASE + 300)
+#define __NR_msgsnd (__NR_SYSCALL_BASE + 301)
+#define __NR_msgrcv (__NR_SYSCALL_BASE + 302)
+#define __NR_msgget (__NR_SYSCALL_BASE + 303)
+#define __NR_msgctl (__NR_SYSCALL_BASE + 304)
+#define __NR_shmat (__NR_SYSCALL_BASE + 305)
+#define __NR_shmdt (__NR_SYSCALL_BASE + 306)
+#define __NR_shmget (__NR_SYSCALL_BASE + 307)
+#define __NR_shmctl (__NR_SYSCALL_BASE + 308)
+#define __NR_add_key (__NR_SYSCALL_BASE + 309)
+#define __NR_request_key (__NR_SYSCALL_BASE + 310)
+#define __NR_keyctl (__NR_SYSCALL_BASE + 311)
+#define __NR_semtimedop (__NR_SYSCALL_BASE + 312)
+#define __NR_vserver (__NR_SYSCALL_BASE + 313)
+#define __NR_ioprio_set (__NR_SYSCALL_BASE + 314)
+#define __NR_ioprio_get (__NR_SYSCALL_BASE + 315)
+#define __NR_inotify_init (__NR_SYSCALL_BASE + 316)
+#define __NR_inotify_add_watch (__NR_SYSCALL_BASE + 317)
+#define __NR_inotify_rm_watch (__NR_SYSCALL_BASE + 318)
+#define __NR_mbind (__NR_SYSCALL_BASE + 319)
+#define __NR_get_mempolicy (__NR_SYSCALL_BASE + 320)
+#define __NR_set_mempolicy (__NR_SYSCALL_BASE + 321)
+#define __NR_openat (__NR_SYSCALL_BASE + 322)
+#define __NR_mkdirat (__NR_SYSCALL_BASE + 323)
+#define __NR_mknodat (__NR_SYSCALL_BASE + 324)
+#define __NR_fchownat (__NR_SYSCALL_BASE + 325)
+#define __NR_futimesat (__NR_SYSCALL_BASE + 326)
+#define __NR_fstatat64 (__NR_SYSCALL_BASE + 327)
+#define __NR_unlinkat (__NR_SYSCALL_BASE + 328)
+#define __NR_renameat (__NR_SYSCALL_BASE + 329)
+#define __NR_linkat (__NR_SYSCALL_BASE + 330)
+#define __NR_symlinkat (__NR_SYSCALL_BASE + 331)
+#define __NR_readlinkat (__NR_SYSCALL_BASE + 332)
+#define __NR_fchmodat (__NR_SYSCALL_BASE + 333)
+#define __NR_faccessat (__NR_SYSCALL_BASE + 334)
+#define __NR_pselect6 (__NR_SYSCALL_BASE + 335)
+#define __NR_ppoll (__NR_SYSCALL_BASE + 336)
+#define __NR_unshare (__NR_SYSCALL_BASE + 337)
+#define __NR_set_robust_list (__NR_SYSCALL_BASE + 338)
+#define __NR_get_robust_list (__NR_SYSCALL_BASE + 339)
+#define __NR_splice (__NR_SYSCALL_BASE + 340)
+#define __NR_arm_sync_file_range (__NR_SYSCALL_BASE + 341)
+#define __NR_tee (__NR_SYSCALL_BASE + 342)
+#define __NR_vmsplice (__NR_SYSCALL_BASE + 343)
+#define __NR_move_pages (__NR_SYSCALL_BASE + 344)
+#define __NR_getcpu (__NR_SYSCALL_BASE + 345)
+#define __NR_epoll_pwait (__NR_SYSCALL_BASE + 346)
+#define __NR_kexec_load (__NR_SYSCALL_BASE + 347)
+#define __NR_utimensat (__NR_SYSCALL_BASE + 348)
+#define __NR_signalfd (__NR_SYSCALL_BASE + 349)
+#define __NR_timerfd_create (__NR_SYSCALL_BASE + 350)
+#define __NR_eventfd (__NR_SYSCALL_BASE + 351)
+#define __NR_fallocate (__NR_SYSCALL_BASE + 352)
+#define __NR_timerfd_settime (__NR_SYSCALL_BASE + 353)
+#define __NR_timerfd_gettime (__NR_SYSCALL_BASE + 354)
+#define __NR_signalfd4 (__NR_SYSCALL_BASE + 355)
+#define __NR_eventfd2 (__NR_SYSCALL_BASE + 356)
+#define __NR_epoll_create1 (__NR_SYSCALL_BASE + 357)
+#define __NR_dup3 (__NR_SYSCALL_BASE + 358)
+#define __NR_pipe2 (__NR_SYSCALL_BASE + 359)
+#define __NR_inotify_init1 (__NR_SYSCALL_BASE + 360)
+#define __NR_preadv (__NR_SYSCALL_BASE + 361)
+#define __NR_pwritev (__NR_SYSCALL_BASE + 362)
+#define __NR_rt_tgsigqueueinfo (__NR_SYSCALL_BASE + 363)
+#define __NR_perf_event_open (__NR_SYSCALL_BASE + 364)
+#define __NR_recvmmsg (__NR_SYSCALL_BASE + 365)
+#define __NR_accept4 (__NR_SYSCALL_BASE + 366)
+#define __NR_fanotify_init (__NR_SYSCALL_BASE + 367)
+#define __NR_fanotify_mark (__NR_SYSCALL_BASE + 368)
+#define __NR_prlimit64 (__NR_SYSCALL_BASE + 369)
+#define __NR_name_to_handle_at (__NR_SYSCALL_BASE + 370)
+#define __NR_open_by_handle_at (__NR_SYSCALL_BASE + 371)
+#define __NR_clock_adjtime (__NR_SYSCALL_BASE + 372)
+#define __NR_syncfs (__NR_SYSCALL_BASE + 373)
+#define __NR_sendmmsg (__NR_SYSCALL_BASE + 374)
+#define __NR_setns (__NR_SYSCALL_BASE + 375)
+#define __NR_process_vm_readv (__NR_SYSCALL_BASE + 376)
+#define __NR_process_vm_writev (__NR_SYSCALL_BASE + 377)
+#define __NR_kcmp (__NR_SYSCALL_BASE + 378)
+#define __NR_finit_module (__NR_SYSCALL_BASE + 379)
+#define __NR_sched_setattr (__NR_SYSCALL_BASE + 380)
+#define __NR_sched_getattr (__NR_SYSCALL_BASE + 381)
+#define __NR_renameat2 (__NR_SYSCALL_BASE + 382)
+#define __NR_seccomp (__NR_SYSCALL_BASE + 383)
+#define __NR_getrandom (__NR_SYSCALL_BASE + 384)
+#define __NR_memfd_create (__NR_SYSCALL_BASE + 385)
+#define __NR_bpf (__NR_SYSCALL_BASE + 386)
+#define __NR_execveat (__NR_SYSCALL_BASE + 387)
+#define __NR_userfaultfd (__NR_SYSCALL_BASE + 388)
+#define __NR_membarrier (__NR_SYSCALL_BASE + 389)
+#define __NR_mlock2 (__NR_SYSCALL_BASE + 390)
+#define __NR_copy_file_range (__NR_SYSCALL_BASE + 391)
+#define __NR_preadv2 (__NR_SYSCALL_BASE + 392)
+#define __NR_pwritev2 (__NR_SYSCALL_BASE + 393)
+#define __NR_pkey_mprotect (__NR_SYSCALL_BASE + 394)
+#define __NR_pkey_alloc (__NR_SYSCALL_BASE + 395)
+#define __NR_pkey_free (__NR_SYSCALL_BASE + 396)
+#define __NR_statx (__NR_SYSCALL_BASE + 397)
+#define __NR_rseq (__NR_SYSCALL_BASE + 398)
+#define __NR_io_pgetevents (__NR_SYSCALL_BASE + 399)
+#define __NR_migrate_pages (__NR_SYSCALL_BASE + 400)
+#define __NR_kexec_file_load (__NR_SYSCALL_BASE + 401)
+#define __NR_clock_gettime64 (__NR_SYSCALL_BASE + 403)
+#define __NR_clock_settime64 (__NR_SYSCALL_BASE + 404)
+#define __NR_clock_adjtime64 (__NR_SYSCALL_BASE + 405)
+#define __NR_clock_getres_time64 (__NR_SYSCALL_BASE + 406)
+#define __NR_clock_nanosleep_time64 (__NR_SYSCALL_BASE + 407)
+#define __NR_timer_gettime64 (__NR_SYSCALL_BASE + 408)
+#define __NR_timer_settime64 (__NR_SYSCALL_BASE + 409)
+#define __NR_timerfd_gettime64 (__NR_SYSCALL_BASE + 410)
+#define __NR_timerfd_settime64 (__NR_SYSCALL_BASE + 411)
+#define __NR_utimensat_time64 (__NR_SYSCALL_BASE + 412)
+#define __NR_pselect6_time64 (__NR_SYSCALL_BASE + 413)
+#define __NR_ppoll_time64 (__NR_SYSCALL_BASE + 414)
+#define __NR_io_pgetevents_time64 (__NR_SYSCALL_BASE + 416)
+#define __NR_recvmmsg_time64 (__NR_SYSCALL_BASE + 417)
+#define __NR_mq_timedsend_time64 (__NR_SYSCALL_BASE + 418)
+#define __NR_mq_timedreceive_time64 (__NR_SYSCALL_BASE + 419)
+#define __NR_semtimedop_time64 (__NR_SYSCALL_BASE + 420)
+#define __NR_rt_sigtimedwait_time64 (__NR_SYSCALL_BASE + 421)
+#define __NR_futex_time64 (__NR_SYSCALL_BASE + 422)
+#define __NR_sched_rr_get_interval_time64 (__NR_SYSCALL_BASE + 423)
+#define __NR_pidfd_send_signal (__NR_SYSCALL_BASE + 424)
+#define __NR_io_uring_setup (__NR_SYSCALL_BASE + 425)
+#define __NR_io_uring_enter (__NR_SYSCALL_BASE + 426)
+#define __NR_io_uring_register (__NR_SYSCALL_BASE + 427)
+#define __NR_open_tree (__NR_SYSCALL_BASE + 428)
+#define __NR_move_mount (__NR_SYSCALL_BASE + 429)
+#define __NR_fsopen (__NR_SYSCALL_BASE + 430)
+#define __NR_fsconfig (__NR_SYSCALL_BASE + 431)
+#define __NR_fsmount (__NR_SYSCALL_BASE + 432)
+#define __NR_fspick (__NR_SYSCALL_BASE + 433)
+#define __NR_pidfd_open (__NR_SYSCALL_BASE + 434)
+#define __NR_clone3 (__NR_SYSCALL_BASE + 435)
+#define __NR_close_range (__NR_SYSCALL_BASE + 436)
+#define __NR_openat2 (__NR_SYSCALL_BASE + 437)
+#define __NR_pidfd_getfd (__NR_SYSCALL_BASE + 438)
+#define __NR_faccessat2 (__NR_SYSCALL_BASE + 439)
+#define __NR_process_madvise (__NR_SYSCALL_BASE + 440)
+#define __NR_epoll_pwait2 (__NR_SYSCALL_BASE + 441)
+#define __NR_mount_setattr (__NR_SYSCALL_BASE + 442)
+#define __NR_quotactl_fd (__NR_SYSCALL_BASE + 443)
+#define __NR_landlock_create_ruleset (__NR_SYSCALL_BASE + 444)
+#define __NR_landlock_add_rule (__NR_SYSCALL_BASE + 445)
+#define __NR_landlock_restrict_self (__NR_SYSCALL_BASE + 446)
+#define __NR_process_mrelease (__NR_SYSCALL_BASE + 448)
+#define __NR_futex_waitv (__NR_SYSCALL_BASE + 449)
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm/asm/unistd-oabi.h b/x86_64-linux-musl/include/asm-arm/asm/unistd-oabi.h
new file mode 100644
index 0000000..20870bb
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/unistd-oabi.h
@@ -0,0 +1,435 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_UNISTD_OABI_H
+#define _UAPI_ASM_UNISTD_OABI_H
+#define __NR_restart_syscall (__NR_SYSCALL_BASE + 0)
+#define __NR_exit (__NR_SYSCALL_BASE + 1)
+#define __NR_fork (__NR_SYSCALL_BASE + 2)
+#define __NR_read (__NR_SYSCALL_BASE + 3)
+#define __NR_write (__NR_SYSCALL_BASE + 4)
+#define __NR_open (__NR_SYSCALL_BASE + 5)
+#define __NR_close (__NR_SYSCALL_BASE + 6)
+#define __NR_creat (__NR_SYSCALL_BASE + 8)
+#define __NR_link (__NR_SYSCALL_BASE + 9)
+#define __NR_unlink (__NR_SYSCALL_BASE + 10)
+#define __NR_execve (__NR_SYSCALL_BASE + 11)
+#define __NR_chdir (__NR_SYSCALL_BASE + 12)
+#define __NR_time (__NR_SYSCALL_BASE + 13)
+#define __NR_mknod (__NR_SYSCALL_BASE + 14)
+#define __NR_chmod (__NR_SYSCALL_BASE + 15)
+#define __NR_lchown (__NR_SYSCALL_BASE + 16)
+#define __NR_lseek (__NR_SYSCALL_BASE + 19)
+#define __NR_getpid (__NR_SYSCALL_BASE + 20)
+#define __NR_mount (__NR_SYSCALL_BASE + 21)
+#define __NR_umount (__NR_SYSCALL_BASE + 22)
+#define __NR_setuid (__NR_SYSCALL_BASE + 23)
+#define __NR_getuid (__NR_SYSCALL_BASE + 24)
+#define __NR_stime (__NR_SYSCALL_BASE + 25)
+#define __NR_ptrace (__NR_SYSCALL_BASE + 26)
+#define __NR_alarm (__NR_SYSCALL_BASE + 27)
+#define __NR_pause (__NR_SYSCALL_BASE + 29)
+#define __NR_utime (__NR_SYSCALL_BASE + 30)
+#define __NR_access (__NR_SYSCALL_BASE + 33)
+#define __NR_nice (__NR_SYSCALL_BASE + 34)
+#define __NR_sync (__NR_SYSCALL_BASE + 36)
+#define __NR_kill (__NR_SYSCALL_BASE + 37)
+#define __NR_rename (__NR_SYSCALL_BASE + 38)
+#define __NR_mkdir (__NR_SYSCALL_BASE + 39)
+#define __NR_rmdir (__NR_SYSCALL_BASE + 40)
+#define __NR_dup (__NR_SYSCALL_BASE + 41)
+#define __NR_pipe (__NR_SYSCALL_BASE + 42)
+#define __NR_times (__NR_SYSCALL_BASE + 43)
+#define __NR_brk (__NR_SYSCALL_BASE + 45)
+#define __NR_setgid (__NR_SYSCALL_BASE + 46)
+#define __NR_getgid (__NR_SYSCALL_BASE + 47)
+#define __NR_geteuid (__NR_SYSCALL_BASE + 49)
+#define __NR_getegid (__NR_SYSCALL_BASE + 50)
+#define __NR_acct (__NR_SYSCALL_BASE + 51)
+#define __NR_umount2 (__NR_SYSCALL_BASE + 52)
+#define __NR_ioctl (__NR_SYSCALL_BASE + 54)
+#define __NR_fcntl (__NR_SYSCALL_BASE + 55)
+#define __NR_setpgid (__NR_SYSCALL_BASE + 57)
+#define __NR_umask (__NR_SYSCALL_BASE + 60)
+#define __NR_chroot (__NR_SYSCALL_BASE + 61)
+#define __NR_ustat (__NR_SYSCALL_BASE + 62)
+#define __NR_dup2 (__NR_SYSCALL_BASE + 63)
+#define __NR_getppid (__NR_SYSCALL_BASE + 64)
+#define __NR_getpgrp (__NR_SYSCALL_BASE + 65)
+#define __NR_setsid (__NR_SYSCALL_BASE + 66)
+#define __NR_sigaction (__NR_SYSCALL_BASE + 67)
+#define __NR_setreuid (__NR_SYSCALL_BASE + 70)
+#define __NR_setregid (__NR_SYSCALL_BASE + 71)
+#define __NR_sigsuspend (__NR_SYSCALL_BASE + 72)
+#define __NR_sigpending (__NR_SYSCALL_BASE + 73)
+#define __NR_sethostname (__NR_SYSCALL_BASE + 74)
+#define __NR_setrlimit (__NR_SYSCALL_BASE + 75)
+#define __NR_getrlimit (__NR_SYSCALL_BASE + 76)
+#define __NR_getrusage (__NR_SYSCALL_BASE + 77)
+#define __NR_gettimeofday (__NR_SYSCALL_BASE + 78)
+#define __NR_settimeofday (__NR_SYSCALL_BASE + 79)
+#define __NR_getgroups (__NR_SYSCALL_BASE + 80)
+#define __NR_setgroups (__NR_SYSCALL_BASE + 81)
+#define __NR_select (__NR_SYSCALL_BASE + 82)
+#define __NR_symlink (__NR_SYSCALL_BASE + 83)
+#define __NR_readlink (__NR_SYSCALL_BASE + 85)
+#define __NR_uselib (__NR_SYSCALL_BASE + 86)
+#define __NR_swapon (__NR_SYSCALL_BASE + 87)
+#define __NR_reboot (__NR_SYSCALL_BASE + 88)
+#define __NR_readdir (__NR_SYSCALL_BASE + 89)
+#define __NR_mmap (__NR_SYSCALL_BASE + 90)
+#define __NR_munmap (__NR_SYSCALL_BASE + 91)
+#define __NR_truncate (__NR_SYSCALL_BASE + 92)
+#define __NR_ftruncate (__NR_SYSCALL_BASE + 93)
+#define __NR_fchmod (__NR_SYSCALL_BASE + 94)
+#define __NR_fchown (__NR_SYSCALL_BASE + 95)
+#define __NR_getpriority (__NR_SYSCALL_BASE + 96)
+#define __NR_setpriority (__NR_SYSCALL_BASE + 97)
+#define __NR_statfs (__NR_SYSCALL_BASE + 99)
+#define __NR_fstatfs (__NR_SYSCALL_BASE + 100)
+#define __NR_socketcall (__NR_SYSCALL_BASE + 102)
+#define __NR_syslog (__NR_SYSCALL_BASE + 103)
+#define __NR_setitimer (__NR_SYSCALL_BASE + 104)
+#define __NR_getitimer (__NR_SYSCALL_BASE + 105)
+#define __NR_stat (__NR_SYSCALL_BASE + 106)
+#define __NR_lstat (__NR_SYSCALL_BASE + 107)
+#define __NR_fstat (__NR_SYSCALL_BASE + 108)
+#define __NR_vhangup (__NR_SYSCALL_BASE + 111)
+#define __NR_syscall (__NR_SYSCALL_BASE + 113)
+#define __NR_wait4 (__NR_SYSCALL_BASE + 114)
+#define __NR_swapoff (__NR_SYSCALL_BASE + 115)
+#define __NR_sysinfo (__NR_SYSCALL_BASE + 116)
+#define __NR_ipc (__NR_SYSCALL_BASE + 117)
+#define __NR_fsync (__NR_SYSCALL_BASE + 118)
+#define __NR_sigreturn (__NR_SYSCALL_BASE + 119)
+#define __NR_clone (__NR_SYSCALL_BASE + 120)
+#define __NR_setdomainname (__NR_SYSCALL_BASE + 121)
+#define __NR_uname (__NR_SYSCALL_BASE + 122)
+#define __NR_adjtimex (__NR_SYSCALL_BASE + 124)
+#define __NR_mprotect (__NR_SYSCALL_BASE + 125)
+#define __NR_sigprocmask (__NR_SYSCALL_BASE + 126)
+#define __NR_init_module (__NR_SYSCALL_BASE + 128)
+#define __NR_delete_module (__NR_SYSCALL_BASE + 129)
+#define __NR_quotactl (__NR_SYSCALL_BASE + 131)
+#define __NR_getpgid (__NR_SYSCALL_BASE + 132)
+#define __NR_fchdir (__NR_SYSCALL_BASE + 133)
+#define __NR_bdflush (__NR_SYSCALL_BASE + 134)
+#define __NR_sysfs (__NR_SYSCALL_BASE + 135)
+#define __NR_personality (__NR_SYSCALL_BASE + 136)
+#define __NR_setfsuid (__NR_SYSCALL_BASE + 138)
+#define __NR_setfsgid (__NR_SYSCALL_BASE + 139)
+#define __NR__llseek (__NR_SYSCALL_BASE + 140)
+#define __NR_getdents (__NR_SYSCALL_BASE + 141)
+#define __NR__newselect (__NR_SYSCALL_BASE + 142)
+#define __NR_flock (__NR_SYSCALL_BASE + 143)
+#define __NR_msync (__NR_SYSCALL_BASE + 144)
+#define __NR_readv (__NR_SYSCALL_BASE + 145)
+#define __NR_writev (__NR_SYSCALL_BASE + 146)
+#define __NR_getsid (__NR_SYSCALL_BASE + 147)
+#define __NR_fdatasync (__NR_SYSCALL_BASE + 148)
+#define __NR__sysctl (__NR_SYSCALL_BASE + 149)
+#define __NR_mlock (__NR_SYSCALL_BASE + 150)
+#define __NR_munlock (__NR_SYSCALL_BASE + 151)
+#define __NR_mlockall (__NR_SYSCALL_BASE + 152)
+#define __NR_munlockall (__NR_SYSCALL_BASE + 153)
+#define __NR_sched_setparam (__NR_SYSCALL_BASE + 154)
+#define __NR_sched_getparam (__NR_SYSCALL_BASE + 155)
+#define __NR_sched_setscheduler (__NR_SYSCALL_BASE + 156)
+#define __NR_sched_getscheduler (__NR_SYSCALL_BASE + 157)
+#define __NR_sched_yield (__NR_SYSCALL_BASE + 158)
+#define __NR_sched_get_priority_max (__NR_SYSCALL_BASE + 159)
+#define __NR_sched_get_priority_min (__NR_SYSCALL_BASE + 160)
+#define __NR_sched_rr_get_interval (__NR_SYSCALL_BASE + 161)
+#define __NR_nanosleep (__NR_SYSCALL_BASE + 162)
+#define __NR_mremap (__NR_SYSCALL_BASE + 163)
+#define __NR_setresuid (__NR_SYSCALL_BASE + 164)
+#define __NR_getresuid (__NR_SYSCALL_BASE + 165)
+#define __NR_poll (__NR_SYSCALL_BASE + 168)
+#define __NR_nfsservctl (__NR_SYSCALL_BASE + 169)
+#define __NR_setresgid (__NR_SYSCALL_BASE + 170)
+#define __NR_getresgid (__NR_SYSCALL_BASE + 171)
+#define __NR_prctl (__NR_SYSCALL_BASE + 172)
+#define __NR_rt_sigreturn (__NR_SYSCALL_BASE + 173)
+#define __NR_rt_sigaction (__NR_SYSCALL_BASE + 174)
+#define __NR_rt_sigprocmask (__NR_SYSCALL_BASE + 175)
+#define __NR_rt_sigpending (__NR_SYSCALL_BASE + 176)
+#define __NR_rt_sigtimedwait (__NR_SYSCALL_BASE + 177)
+#define __NR_rt_sigqueueinfo (__NR_SYSCALL_BASE + 178)
+#define __NR_rt_sigsuspend (__NR_SYSCALL_BASE + 179)
+#define __NR_pread64 (__NR_SYSCALL_BASE + 180)
+#define __NR_pwrite64 (__NR_SYSCALL_BASE + 181)
+#define __NR_chown (__NR_SYSCALL_BASE + 182)
+#define __NR_getcwd (__NR_SYSCALL_BASE + 183)
+#define __NR_capget (__NR_SYSCALL_BASE + 184)
+#define __NR_capset (__NR_SYSCALL_BASE + 185)
+#define __NR_sigaltstack (__NR_SYSCALL_BASE + 186)
+#define __NR_sendfile (__NR_SYSCALL_BASE + 187)
+#define __NR_vfork (__NR_SYSCALL_BASE + 190)
+#define __NR_ugetrlimit (__NR_SYSCALL_BASE + 191)
+#define __NR_mmap2 (__NR_SYSCALL_BASE + 192)
+#define __NR_truncate64 (__NR_SYSCALL_BASE + 193)
+#define __NR_ftruncate64 (__NR_SYSCALL_BASE + 194)
+#define __NR_stat64 (__NR_SYSCALL_BASE + 195)
+#define __NR_lstat64 (__NR_SYSCALL_BASE + 196)
+#define __NR_fstat64 (__NR_SYSCALL_BASE + 197)
+#define __NR_lchown32 (__NR_SYSCALL_BASE + 198)
+#define __NR_getuid32 (__NR_SYSCALL_BASE + 199)
+#define __NR_getgid32 (__NR_SYSCALL_BASE + 200)
+#define __NR_geteuid32 (__NR_SYSCALL_BASE + 201)
+#define __NR_getegid32 (__NR_SYSCALL_BASE + 202)
+#define __NR_setreuid32 (__NR_SYSCALL_BASE + 203)
+#define __NR_setregid32 (__NR_SYSCALL_BASE + 204)
+#define __NR_getgroups32 (__NR_SYSCALL_BASE + 205)
+#define __NR_setgroups32 (__NR_SYSCALL_BASE + 206)
+#define __NR_fchown32 (__NR_SYSCALL_BASE + 207)
+#define __NR_setresuid32 (__NR_SYSCALL_BASE + 208)
+#define __NR_getresuid32 (__NR_SYSCALL_BASE + 209)
+#define __NR_setresgid32 (__NR_SYSCALL_BASE + 210)
+#define __NR_getresgid32 (__NR_SYSCALL_BASE + 211)
+#define __NR_chown32 (__NR_SYSCALL_BASE + 212)
+#define __NR_setuid32 (__NR_SYSCALL_BASE + 213)
+#define __NR_setgid32 (__NR_SYSCALL_BASE + 214)
+#define __NR_setfsuid32 (__NR_SYSCALL_BASE + 215)
+#define __NR_setfsgid32 (__NR_SYSCALL_BASE + 216)
+#define __NR_getdents64 (__NR_SYSCALL_BASE + 217)
+#define __NR_pivot_root (__NR_SYSCALL_BASE + 218)
+#define __NR_mincore (__NR_SYSCALL_BASE + 219)
+#define __NR_madvise (__NR_SYSCALL_BASE + 220)
+#define __NR_fcntl64 (__NR_SYSCALL_BASE + 221)
+#define __NR_gettid (__NR_SYSCALL_BASE + 224)
+#define __NR_readahead (__NR_SYSCALL_BASE + 225)
+#define __NR_setxattr (__NR_SYSCALL_BASE + 226)
+#define __NR_lsetxattr (__NR_SYSCALL_BASE + 227)
+#define __NR_fsetxattr (__NR_SYSCALL_BASE + 228)
+#define __NR_getxattr (__NR_SYSCALL_BASE + 229)
+#define __NR_lgetxattr (__NR_SYSCALL_BASE + 230)
+#define __NR_fgetxattr (__NR_SYSCALL_BASE + 231)
+#define __NR_listxattr (__NR_SYSCALL_BASE + 232)
+#define __NR_llistxattr (__NR_SYSCALL_BASE + 233)
+#define __NR_flistxattr (__NR_SYSCALL_BASE + 234)
+#define __NR_removexattr (__NR_SYSCALL_BASE + 235)
+#define __NR_lremovexattr (__NR_SYSCALL_BASE + 236)
+#define __NR_fremovexattr (__NR_SYSCALL_BASE + 237)
+#define __NR_tkill (__NR_SYSCALL_BASE + 238)
+#define __NR_sendfile64 (__NR_SYSCALL_BASE + 239)
+#define __NR_futex (__NR_SYSCALL_BASE + 240)
+#define __NR_sched_setaffinity (__NR_SYSCALL_BASE + 241)
+#define __NR_sched_getaffinity (__NR_SYSCALL_BASE + 242)
+#define __NR_io_setup (__NR_SYSCALL_BASE + 243)
+#define __NR_io_destroy (__NR_SYSCALL_BASE + 244)
+#define __NR_io_getevents (__NR_SYSCALL_BASE + 245)
+#define __NR_io_submit (__NR_SYSCALL_BASE + 246)
+#define __NR_io_cancel (__NR_SYSCALL_BASE + 247)
+#define __NR_exit_group (__NR_SYSCALL_BASE + 248)
+#define __NR_lookup_dcookie (__NR_SYSCALL_BASE + 249)
+#define __NR_epoll_create (__NR_SYSCALL_BASE + 250)
+#define __NR_epoll_ctl (__NR_SYSCALL_BASE + 251)
+#define __NR_epoll_wait (__NR_SYSCALL_BASE + 252)
+#define __NR_remap_file_pages (__NR_SYSCALL_BASE + 253)
+#define __NR_set_tid_address (__NR_SYSCALL_BASE + 256)
+#define __NR_timer_create (__NR_SYSCALL_BASE + 257)
+#define __NR_timer_settime (__NR_SYSCALL_BASE + 258)
+#define __NR_timer_gettime (__NR_SYSCALL_BASE + 259)
+#define __NR_timer_getoverrun (__NR_SYSCALL_BASE + 260)
+#define __NR_timer_delete (__NR_SYSCALL_BASE + 261)
+#define __NR_clock_settime (__NR_SYSCALL_BASE + 262)
+#define __NR_clock_gettime (__NR_SYSCALL_BASE + 263)
+#define __NR_clock_getres (__NR_SYSCALL_BASE + 264)
+#define __NR_clock_nanosleep (__NR_SYSCALL_BASE + 265)
+#define __NR_statfs64 (__NR_SYSCALL_BASE + 266)
+#define __NR_fstatfs64 (__NR_SYSCALL_BASE + 267)
+#define __NR_tgkill (__NR_SYSCALL_BASE + 268)
+#define __NR_utimes (__NR_SYSCALL_BASE + 269)
+#define __NR_arm_fadvise64_64 (__NR_SYSCALL_BASE + 270)
+#define __NR_pciconfig_iobase (__NR_SYSCALL_BASE + 271)
+#define __NR_pciconfig_read (__NR_SYSCALL_BASE + 272)
+#define __NR_pciconfig_write (__NR_SYSCALL_BASE + 273)
+#define __NR_mq_open (__NR_SYSCALL_BASE + 274)
+#define __NR_mq_unlink (__NR_SYSCALL_BASE + 275)
+#define __NR_mq_timedsend (__NR_SYSCALL_BASE + 276)
+#define __NR_mq_timedreceive (__NR_SYSCALL_BASE + 277)
+#define __NR_mq_notify (__NR_SYSCALL_BASE + 278)
+#define __NR_mq_getsetattr (__NR_SYSCALL_BASE + 279)
+#define __NR_waitid (__NR_SYSCALL_BASE + 280)
+#define __NR_socket (__NR_SYSCALL_BASE + 281)
+#define __NR_bind (__NR_SYSCALL_BASE + 282)
+#define __NR_connect (__NR_SYSCALL_BASE + 283)
+#define __NR_listen (__NR_SYSCALL_BASE + 284)
+#define __NR_accept (__NR_SYSCALL_BASE + 285)
+#define __NR_getsockname (__NR_SYSCALL_BASE + 286)
+#define __NR_getpeername (__NR_SYSCALL_BASE + 287)
+#define __NR_socketpair (__NR_SYSCALL_BASE + 288)
+#define __NR_send (__NR_SYSCALL_BASE + 289)
+#define __NR_sendto (__NR_SYSCALL_BASE + 290)
+#define __NR_recv (__NR_SYSCALL_BASE + 291)
+#define __NR_recvfrom (__NR_SYSCALL_BASE + 292)
+#define __NR_shutdown (__NR_SYSCALL_BASE + 293)
+#define __NR_setsockopt (__NR_SYSCALL_BASE + 294)
+#define __NR_getsockopt (__NR_SYSCALL_BASE + 295)
+#define __NR_sendmsg (__NR_SYSCALL_BASE + 296)
+#define __NR_recvmsg (__NR_SYSCALL_BASE + 297)
+#define __NR_semop (__NR_SYSCALL_BASE + 298)
+#define __NR_semget (__NR_SYSCALL_BASE + 299)
+#define __NR_semctl (__NR_SYSCALL_BASE + 300)
+#define __NR_msgsnd (__NR_SYSCALL_BASE + 301)
+#define __NR_msgrcv (__NR_SYSCALL_BASE + 302)
+#define __NR_msgget (__NR_SYSCALL_BASE + 303)
+#define __NR_msgctl (__NR_SYSCALL_BASE + 304)
+#define __NR_shmat (__NR_SYSCALL_BASE + 305)
+#define __NR_shmdt (__NR_SYSCALL_BASE + 306)
+#define __NR_shmget (__NR_SYSCALL_BASE + 307)
+#define __NR_shmctl (__NR_SYSCALL_BASE + 308)
+#define __NR_add_key (__NR_SYSCALL_BASE + 309)
+#define __NR_request_key (__NR_SYSCALL_BASE + 310)
+#define __NR_keyctl (__NR_SYSCALL_BASE + 311)
+#define __NR_semtimedop (__NR_SYSCALL_BASE + 312)
+#define __NR_vserver (__NR_SYSCALL_BASE + 313)
+#define __NR_ioprio_set (__NR_SYSCALL_BASE + 314)
+#define __NR_ioprio_get (__NR_SYSCALL_BASE + 315)
+#define __NR_inotify_init (__NR_SYSCALL_BASE + 316)
+#define __NR_inotify_add_watch (__NR_SYSCALL_BASE + 317)
+#define __NR_inotify_rm_watch (__NR_SYSCALL_BASE + 318)
+#define __NR_mbind (__NR_SYSCALL_BASE + 319)
+#define __NR_get_mempolicy (__NR_SYSCALL_BASE + 320)
+#define __NR_set_mempolicy (__NR_SYSCALL_BASE + 321)
+#define __NR_openat (__NR_SYSCALL_BASE + 322)
+#define __NR_mkdirat (__NR_SYSCALL_BASE + 323)
+#define __NR_mknodat (__NR_SYSCALL_BASE + 324)
+#define __NR_fchownat (__NR_SYSCALL_BASE + 325)
+#define __NR_futimesat (__NR_SYSCALL_BASE + 326)
+#define __NR_fstatat64 (__NR_SYSCALL_BASE + 327)
+#define __NR_unlinkat (__NR_SYSCALL_BASE + 328)
+#define __NR_renameat (__NR_SYSCALL_BASE + 329)
+#define __NR_linkat (__NR_SYSCALL_BASE + 330)
+#define __NR_symlinkat (__NR_SYSCALL_BASE + 331)
+#define __NR_readlinkat (__NR_SYSCALL_BASE + 332)
+#define __NR_fchmodat (__NR_SYSCALL_BASE + 333)
+#define __NR_faccessat (__NR_SYSCALL_BASE + 334)
+#define __NR_pselect6 (__NR_SYSCALL_BASE + 335)
+#define __NR_ppoll (__NR_SYSCALL_BASE + 336)
+#define __NR_unshare (__NR_SYSCALL_BASE + 337)
+#define __NR_set_robust_list (__NR_SYSCALL_BASE + 338)
+#define __NR_get_robust_list (__NR_SYSCALL_BASE + 339)
+#define __NR_splice (__NR_SYSCALL_BASE + 340)
+#define __NR_arm_sync_file_range (__NR_SYSCALL_BASE + 341)
+#define __NR_tee (__NR_SYSCALL_BASE + 342)
+#define __NR_vmsplice (__NR_SYSCALL_BASE + 343)
+#define __NR_move_pages (__NR_SYSCALL_BASE + 344)
+#define __NR_getcpu (__NR_SYSCALL_BASE + 345)
+#define __NR_epoll_pwait (__NR_SYSCALL_BASE + 346)
+#define __NR_kexec_load (__NR_SYSCALL_BASE + 347)
+#define __NR_utimensat (__NR_SYSCALL_BASE + 348)
+#define __NR_signalfd (__NR_SYSCALL_BASE + 349)
+#define __NR_timerfd_create (__NR_SYSCALL_BASE + 350)
+#define __NR_eventfd (__NR_SYSCALL_BASE + 351)
+#define __NR_fallocate (__NR_SYSCALL_BASE + 352)
+#define __NR_timerfd_settime (__NR_SYSCALL_BASE + 353)
+#define __NR_timerfd_gettime (__NR_SYSCALL_BASE + 354)
+#define __NR_signalfd4 (__NR_SYSCALL_BASE + 355)
+#define __NR_eventfd2 (__NR_SYSCALL_BASE + 356)
+#define __NR_epoll_create1 (__NR_SYSCALL_BASE + 357)
+#define __NR_dup3 (__NR_SYSCALL_BASE + 358)
+#define __NR_pipe2 (__NR_SYSCALL_BASE + 359)
+#define __NR_inotify_init1 (__NR_SYSCALL_BASE + 360)
+#define __NR_preadv (__NR_SYSCALL_BASE + 361)
+#define __NR_pwritev (__NR_SYSCALL_BASE + 362)
+#define __NR_rt_tgsigqueueinfo (__NR_SYSCALL_BASE + 363)
+#define __NR_perf_event_open (__NR_SYSCALL_BASE + 364)
+#define __NR_recvmmsg (__NR_SYSCALL_BASE + 365)
+#define __NR_accept4 (__NR_SYSCALL_BASE + 366)
+#define __NR_fanotify_init (__NR_SYSCALL_BASE + 367)
+#define __NR_fanotify_mark (__NR_SYSCALL_BASE + 368)
+#define __NR_prlimit64 (__NR_SYSCALL_BASE + 369)
+#define __NR_name_to_handle_at (__NR_SYSCALL_BASE + 370)
+#define __NR_open_by_handle_at (__NR_SYSCALL_BASE + 371)
+#define __NR_clock_adjtime (__NR_SYSCALL_BASE + 372)
+#define __NR_syncfs (__NR_SYSCALL_BASE + 373)
+#define __NR_sendmmsg (__NR_SYSCALL_BASE + 374)
+#define __NR_setns (__NR_SYSCALL_BASE + 375)
+#define __NR_process_vm_readv (__NR_SYSCALL_BASE + 376)
+#define __NR_process_vm_writev (__NR_SYSCALL_BASE + 377)
+#define __NR_kcmp (__NR_SYSCALL_BASE + 378)
+#define __NR_finit_module (__NR_SYSCALL_BASE + 379)
+#define __NR_sched_setattr (__NR_SYSCALL_BASE + 380)
+#define __NR_sched_getattr (__NR_SYSCALL_BASE + 381)
+#define __NR_renameat2 (__NR_SYSCALL_BASE + 382)
+#define __NR_seccomp (__NR_SYSCALL_BASE + 383)
+#define __NR_getrandom (__NR_SYSCALL_BASE + 384)
+#define __NR_memfd_create (__NR_SYSCALL_BASE + 385)
+#define __NR_bpf (__NR_SYSCALL_BASE + 386)
+#define __NR_execveat (__NR_SYSCALL_BASE + 387)
+#define __NR_userfaultfd (__NR_SYSCALL_BASE + 388)
+#define __NR_membarrier (__NR_SYSCALL_BASE + 389)
+#define __NR_mlock2 (__NR_SYSCALL_BASE + 390)
+#define __NR_copy_file_range (__NR_SYSCALL_BASE + 391)
+#define __NR_preadv2 (__NR_SYSCALL_BASE + 392)
+#define __NR_pwritev2 (__NR_SYSCALL_BASE + 393)
+#define __NR_pkey_mprotect (__NR_SYSCALL_BASE + 394)
+#define __NR_pkey_alloc (__NR_SYSCALL_BASE + 395)
+#define __NR_pkey_free (__NR_SYSCALL_BASE + 396)
+#define __NR_statx (__NR_SYSCALL_BASE + 397)
+#define __NR_rseq (__NR_SYSCALL_BASE + 398)
+#define __NR_io_pgetevents (__NR_SYSCALL_BASE + 399)
+#define __NR_migrate_pages (__NR_SYSCALL_BASE + 400)
+#define __NR_kexec_file_load (__NR_SYSCALL_BASE + 401)
+#define __NR_clock_gettime64 (__NR_SYSCALL_BASE + 403)
+#define __NR_clock_settime64 (__NR_SYSCALL_BASE + 404)
+#define __NR_clock_adjtime64 (__NR_SYSCALL_BASE + 405)
+#define __NR_clock_getres_time64 (__NR_SYSCALL_BASE + 406)
+#define __NR_clock_nanosleep_time64 (__NR_SYSCALL_BASE + 407)
+#define __NR_timer_gettime64 (__NR_SYSCALL_BASE + 408)
+#define __NR_timer_settime64 (__NR_SYSCALL_BASE + 409)
+#define __NR_timerfd_gettime64 (__NR_SYSCALL_BASE + 410)
+#define __NR_timerfd_settime64 (__NR_SYSCALL_BASE + 411)
+#define __NR_utimensat_time64 (__NR_SYSCALL_BASE + 412)
+#define __NR_pselect6_time64 (__NR_SYSCALL_BASE + 413)
+#define __NR_ppoll_time64 (__NR_SYSCALL_BASE + 414)
+#define __NR_io_pgetevents_time64 (__NR_SYSCALL_BASE + 416)
+#define __NR_recvmmsg_time64 (__NR_SYSCALL_BASE + 417)
+#define __NR_mq_timedsend_time64 (__NR_SYSCALL_BASE + 418)
+#define __NR_mq_timedreceive_time64 (__NR_SYSCALL_BASE + 419)
+#define __NR_semtimedop_time64 (__NR_SYSCALL_BASE + 420)
+#define __NR_rt_sigtimedwait_time64 (__NR_SYSCALL_BASE + 421)
+#define __NR_futex_time64 (__NR_SYSCALL_BASE + 422)
+#define __NR_sched_rr_get_interval_time64 (__NR_SYSCALL_BASE + 423)
+#define __NR_pidfd_send_signal (__NR_SYSCALL_BASE + 424)
+#define __NR_io_uring_setup (__NR_SYSCALL_BASE + 425)
+#define __NR_io_uring_enter (__NR_SYSCALL_BASE + 426)
+#define __NR_io_uring_register (__NR_SYSCALL_BASE + 427)
+#define __NR_open_tree (__NR_SYSCALL_BASE + 428)
+#define __NR_move_mount (__NR_SYSCALL_BASE + 429)
+#define __NR_fsopen (__NR_SYSCALL_BASE + 430)
+#define __NR_fsconfig (__NR_SYSCALL_BASE + 431)
+#define __NR_fsmount (__NR_SYSCALL_BASE + 432)
+#define __NR_fspick (__NR_SYSCALL_BASE + 433)
+#define __NR_pidfd_open (__NR_SYSCALL_BASE + 434)
+#define __NR_clone3 (__NR_SYSCALL_BASE + 435)
+#define __NR_close_range (__NR_SYSCALL_BASE + 436)
+#define __NR_openat2 (__NR_SYSCALL_BASE + 437)
+#define __NR_pidfd_getfd (__NR_SYSCALL_BASE + 438)
+#define __NR_faccessat2 (__NR_SYSCALL_BASE + 439)
+#define __NR_process_madvise (__NR_SYSCALL_BASE + 440)
+#define __NR_epoll_pwait2 (__NR_SYSCALL_BASE + 441)
+#define __NR_mount_setattr (__NR_SYSCALL_BASE + 442)
+#define __NR_quotactl_fd (__NR_SYSCALL_BASE + 443)
+#define __NR_landlock_create_ruleset (__NR_SYSCALL_BASE + 444)
+#define __NR_landlock_add_rule (__NR_SYSCALL_BASE + 445)
+#define __NR_landlock_restrict_self (__NR_SYSCALL_BASE + 446)
+#define __NR_process_mrelease (__NR_SYSCALL_BASE + 448)
+#define __NR_futex_waitv (__NR_SYSCALL_BASE + 449)
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm/asm/unistd.h b/x86_64-linux-musl/include/asm-arm/asm/unistd.h
new file mode 100644
index 0000000..8bb0f58
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm/asm/unistd.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__ASM_ARM_UNISTD_H
+#define _UAPI__ASM_ARM_UNISTD_H
+#define __NR_OABI_SYSCALL_BASE 0x900000
+#define __NR_SYSCALL_MASK 0x0fffff
+#define __NR_SYSCALL_BASE 0
+#include <asm/unistd-eabi.h>
+#define __NR_sync_file_range2 __NR_arm_sync_file_range
+#define __ARM_NR_BASE (__NR_SYSCALL_BASE + 0x0f0000)
+#define __ARM_NR_breakpoint (__ARM_NR_BASE + 1)
+#define __ARM_NR_cacheflush (__ARM_NR_BASE + 2)
+#define __ARM_NR_usr26 (__ARM_NR_BASE + 3)
+#define __ARM_NR_usr32 (__ARM_NR_BASE + 4)
+#define __ARM_NR_set_tls (__ARM_NR_BASE + 5)
+#define __ARM_NR_get_tls (__ARM_NR_BASE + 6)
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/auxvec.h b/x86_64-linux-musl/include/asm-arm64/asm/auxvec.h
new file mode 100644
index 0000000..4735fd5
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/auxvec.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 __ASM_AUXVEC_H
+#define __ASM_AUXVEC_H
+#define AT_SYSINFO_EHDR 33
+#define AT_MINSIGSTKSZ 51
+#define AT_VECTOR_SIZE_ARCH 2
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/bitsperlong.h b/x86_64-linux-musl/include/asm-arm64/asm/bitsperlong.h
new file mode 100644
index 0000000..c409c19
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/bitsperlong.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 __ASM_BITSPERLONG_H
+#define __ASM_BITSPERLONG_H
+#define __BITS_PER_LONG 64
+#include <asm-generic/bitsperlong.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/bpf_perf_event.h b/x86_64-linux-musl/include/asm-arm64/asm/bpf_perf_event.h
new file mode 100644
index 0000000..cad04bf
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/bpf_perf_event.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__ASM_BPF_PERF_EVENT_H__
+#define _UAPI__ASM_BPF_PERF_EVENT_H__
+#include <asm/ptrace.h>
+typedef struct user_pt_regs bpf_user_pt_regs_t;
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/byteorder.h b/x86_64-linux-musl/include/asm-arm64/asm/byteorder.h
new file mode 100644
index 0000000..c3174b1
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/byteorder.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 __ASM_BYTEORDER_H
+#define __ASM_BYTEORDER_H
+#ifdef __AARCH64EB__
+#include <linux/byteorder/big_endian.h>
+#else
+#include <linux/byteorder/little_endian.h>
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/errno.h b/x86_64-linux-musl/include/asm-arm64/asm/errno.h
new file mode 100644
index 0000000..392cd94
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/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-generic/errno.h>
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/fcntl.h b/x86_64-linux-musl/include/asm-arm64/asm/fcntl.h
new file mode 100644
index 0000000..e9e0e01
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/fcntl.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 __ASM_FCNTL_H
+#define __ASM_FCNTL_H
+#define O_DIRECTORY 040000
+#define O_NOFOLLOW 0100000
+#define O_DIRECT 0200000
+#define O_LARGEFILE 0400000
+#include <asm-generic/fcntl.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/hwcap.h b/x86_64-linux-musl/include/asm-arm64/asm/hwcap.h
new file mode 100644
index 0000000..d4d4324
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/hwcap.h
@@ -0,0 +1,73 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__ASM_HWCAP_H
+#define _UAPI__ASM_HWCAP_H
+#define HWCAP_FP (1 << 0)
+#define HWCAP_ASIMD (1 << 1)
+#define HWCAP_EVTSTRM (1 << 2)
+#define HWCAP_AES (1 << 3)
+#define HWCAP_PMULL (1 << 4)
+#define HWCAP_SHA1 (1 << 5)
+#define HWCAP_SHA2 (1 << 6)
+#define HWCAP_CRC32 (1 << 7)
+#define HWCAP_ATOMICS (1 << 8)
+#define HWCAP_FPHP (1 << 9)
+#define HWCAP_ASIMDHP (1 << 10)
+#define HWCAP_CPUID (1 << 11)
+#define HWCAP_ASIMDRDM (1 << 12)
+#define HWCAP_JSCVT (1 << 13)
+#define HWCAP_FCMA (1 << 14)
+#define HWCAP_LRCPC (1 << 15)
+#define HWCAP_DCPOP (1 << 16)
+#define HWCAP_SHA3 (1 << 17)
+#define HWCAP_SM3 (1 << 18)
+#define HWCAP_SM4 (1 << 19)
+#define HWCAP_ASIMDDP (1 << 20)
+#define HWCAP_SHA512 (1 << 21)
+#define HWCAP_SVE (1 << 22)
+#define HWCAP_ASIMDFHM (1 << 23)
+#define HWCAP_DIT (1 << 24)
+#define HWCAP_USCAT (1 << 25)
+#define HWCAP_ILRCPC (1 << 26)
+#define HWCAP_FLAGM (1 << 27)
+#define HWCAP_SSBS (1 << 28)
+#define HWCAP_SB (1 << 29)
+#define HWCAP_PACA (1 << 30)
+#define HWCAP_PACG (1UL << 31)
+#define HWCAP2_DCPODP (1 << 0)
+#define HWCAP2_SVE2 (1 << 1)
+#define HWCAP2_SVEAES (1 << 2)
+#define HWCAP2_SVEPMULL (1 << 3)
+#define HWCAP2_SVEBITPERM (1 << 4)
+#define HWCAP2_SVESHA3 (1 << 5)
+#define HWCAP2_SVESM4 (1 << 6)
+#define HWCAP2_FLAGM2 (1 << 7)
+#define HWCAP2_FRINT (1 << 8)
+#define HWCAP2_SVEI8MM (1 << 9)
+#define HWCAP2_SVEF32MM (1 << 10)
+#define HWCAP2_SVEF64MM (1 << 11)
+#define HWCAP2_SVEBF16 (1 << 12)
+#define HWCAP2_I8MM (1 << 13)
+#define HWCAP2_BF16 (1 << 14)
+#define HWCAP2_DGH (1 << 15)
+#define HWCAP2_RNG (1 << 16)
+#define HWCAP2_BTI (1 << 17)
+#define HWCAP2_MTE (1 << 18)
+#define HWCAP2_ECV (1 << 19)
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/ioctl.h b/x86_64-linux-musl/include/asm-arm64/asm/ioctl.h
new file mode 100644
index 0000000..7b7bd37
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/ioctl.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-generic/ioctl.h>
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/ioctls.h b/x86_64-linux-musl/include/asm-arm64/asm/ioctls.h
new file mode 100644
index 0000000..0c66935
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/ioctls.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-generic/ioctls.h>
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/ipcbuf.h b/x86_64-linux-musl/include/asm-arm64/asm/ipcbuf.h
new file mode 100644
index 0000000..0021f14
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/ipcbuf.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-generic/ipcbuf.h>
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/kvm.h b/x86_64-linux-musl/include/asm-arm64/asm/kvm.h
new file mode 100644
index 0000000..74aa7c6
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/kvm.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 __ARM_KVM_H__
+#define __ARM_KVM_H__
+#define KVM_SPSR_EL1 0
+#define KVM_SPSR_SVC KVM_SPSR_EL1
+#define KVM_SPSR_ABT 1
+#define KVM_SPSR_UND 2
+#define KVM_SPSR_IRQ 3
+#define KVM_SPSR_FIQ 4
+#define KVM_NR_SPSR 5
+#ifndef __ASSEMBLY__
+#include <linux/psci.h>
+#include <linux/types.h>
+#include <asm/ptrace.h>
+#include <asm/sve_context.h>
+#define __KVM_HAVE_GUEST_DEBUG
+#define __KVM_HAVE_IRQ_LINE
+#define __KVM_HAVE_READONLY_MEM
+#define __KVM_HAVE_VCPU_EVENTS
+#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
+#define KVM_REG_SIZE(id) (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
+struct kvm_regs {
+  struct user_pt_regs regs;
+  __u64 sp_el1;
+  __u64 elr_el1;
+  __u64 spsr[KVM_NR_SPSR];
+  struct user_fpsimd_state fp_regs;
+};
+#define KVM_ARM_TARGET_AEM_V8 0
+#define KVM_ARM_TARGET_FOUNDATION_V8 1
+#define KVM_ARM_TARGET_CORTEX_A57 2
+#define KVM_ARM_TARGET_XGENE_POTENZA 3
+#define KVM_ARM_TARGET_CORTEX_A53 4
+#define KVM_ARM_TARGET_GENERIC_V8 5
+#define KVM_ARM_NUM_TARGETS 6
+#define KVM_ARM_DEVICE_TYPE_SHIFT 0
+#define KVM_ARM_DEVICE_TYPE_MASK (0xffff << KVM_ARM_DEVICE_TYPE_SHIFT)
+#define KVM_ARM_DEVICE_ID_SHIFT 16
+#define KVM_ARM_DEVICE_ID_MASK (0xffff << KVM_ARM_DEVICE_ID_SHIFT)
+#define KVM_ARM_DEVICE_VGIC_V2 0
+#define KVM_VGIC_V2_ADDR_TYPE_DIST 0
+#define KVM_VGIC_V2_ADDR_TYPE_CPU 1
+#define KVM_VGIC_V2_DIST_SIZE 0x1000
+#define KVM_VGIC_V2_CPU_SIZE 0x2000
+#define KVM_VGIC_V3_ADDR_TYPE_DIST 2
+#define KVM_VGIC_V3_ADDR_TYPE_REDIST 3
+#define KVM_VGIC_ITS_ADDR_TYPE 4
+#define KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION 5
+#define KVM_VGIC_V3_DIST_SIZE SZ_64K
+#define KVM_VGIC_V3_REDIST_SIZE (2 * SZ_64K)
+#define KVM_VGIC_V3_ITS_SIZE (2 * SZ_64K)
+#define KVM_ARM_VCPU_POWER_OFF 0
+#define KVM_ARM_VCPU_EL1_32BIT 1
+#define KVM_ARM_VCPU_PSCI_0_2 2
+#define KVM_ARM_VCPU_PMU_V3 3
+#define KVM_ARM_VCPU_SVE 4
+#define KVM_ARM_VCPU_PTRAUTH_ADDRESS 5
+#define KVM_ARM_VCPU_PTRAUTH_GENERIC 6
+struct kvm_vcpu_init {
+  __u32 target;
+  __u32 features[7];
+};
+struct kvm_sregs {
+};
+struct kvm_fpu {
+};
+#define KVM_ARM_MAX_DBG_REGS 16
+struct kvm_guest_debug_arch {
+  __u64 dbg_bcr[KVM_ARM_MAX_DBG_REGS];
+  __u64 dbg_bvr[KVM_ARM_MAX_DBG_REGS];
+  __u64 dbg_wcr[KVM_ARM_MAX_DBG_REGS];
+  __u64 dbg_wvr[KVM_ARM_MAX_DBG_REGS];
+};
+struct kvm_debug_exit_arch {
+  __u32 hsr;
+  __u64 far;
+};
+#define KVM_GUESTDBG_USE_SW_BP (1 << 16)
+#define KVM_GUESTDBG_USE_HW (1 << 17)
+struct kvm_sync_regs {
+  __u64 device_irq_level;
+};
+struct kvm_pmu_event_filter {
+  __u16 base_event;
+  __u16 nevents;
+#define KVM_PMU_EVENT_ALLOW 0
+#define KVM_PMU_EVENT_DENY 1
+  __u8 action;
+  __u8 pad[3];
+};
+struct kvm_vcpu_events {
+  struct {
+    __u8 serror_pending;
+    __u8 serror_has_esr;
+    __u8 ext_dabt_pending;
+    __u8 pad[5];
+    __u64 serror_esr;
+  } exception;
+  __u32 reserved[12];
+};
+struct kvm_arm_copy_mte_tags {
+  __u64 guest_ipa;
+  __u64 length;
+  void __user * addr;
+  __u64 flags;
+  __u64 reserved[2];
+};
+#define KVM_ARM_TAGS_TO_GUEST 0
+#define KVM_ARM_TAGS_FROM_GUEST 1
+#define KVM_REG_ARM_COPROC_MASK 0x000000000FFF0000
+#define KVM_REG_ARM_COPROC_SHIFT 16
+#define KVM_REG_ARM_CORE (0x0010 << KVM_REG_ARM_COPROC_SHIFT)
+#define KVM_REG_ARM_CORE_REG(name) (offsetof(struct kvm_regs, name) / sizeof(__u32))
+#define KVM_REG_ARM_DEMUX (0x0011 << KVM_REG_ARM_COPROC_SHIFT)
+#define KVM_REG_ARM_DEMUX_ID_MASK 0x000000000000FF00
+#define KVM_REG_ARM_DEMUX_ID_SHIFT 8
+#define KVM_REG_ARM_DEMUX_ID_CCSIDR (0x00 << KVM_REG_ARM_DEMUX_ID_SHIFT)
+#define KVM_REG_ARM_DEMUX_VAL_MASK 0x00000000000000FF
+#define KVM_REG_ARM_DEMUX_VAL_SHIFT 0
+#define KVM_REG_ARM64_SYSREG (0x0013 << KVM_REG_ARM_COPROC_SHIFT)
+#define KVM_REG_ARM64_SYSREG_OP0_MASK 0x000000000000c000
+#define KVM_REG_ARM64_SYSREG_OP0_SHIFT 14
+#define KVM_REG_ARM64_SYSREG_OP1_MASK 0x0000000000003800
+#define KVM_REG_ARM64_SYSREG_OP1_SHIFT 11
+#define KVM_REG_ARM64_SYSREG_CRN_MASK 0x0000000000000780
+#define KVM_REG_ARM64_SYSREG_CRN_SHIFT 7
+#define KVM_REG_ARM64_SYSREG_CRM_MASK 0x0000000000000078
+#define KVM_REG_ARM64_SYSREG_CRM_SHIFT 3
+#define KVM_REG_ARM64_SYSREG_OP2_MASK 0x0000000000000007
+#define KVM_REG_ARM64_SYSREG_OP2_SHIFT 0
+#define ARM64_SYS_REG_SHIFT_MASK(x,n) (((x) << KVM_REG_ARM64_SYSREG_ ##n ##_SHIFT) & KVM_REG_ARM64_SYSREG_ ##n ##_MASK)
+#define __ARM64_SYS_REG(op0,op1,crn,crm,op2) (KVM_REG_ARM64 | KVM_REG_ARM64_SYSREG | ARM64_SYS_REG_SHIFT_MASK(op0, OP0) | ARM64_SYS_REG_SHIFT_MASK(op1, OP1) | ARM64_SYS_REG_SHIFT_MASK(crn, CRN) | ARM64_SYS_REG_SHIFT_MASK(crm, CRM) | ARM64_SYS_REG_SHIFT_MASK(op2, OP2))
+#define ARM64_SYS_REG(...) (__ARM64_SYS_REG(__VA_ARGS__) | KVM_REG_SIZE_U64)
+#define KVM_REG_ARM_PTIMER_CTL ARM64_SYS_REG(3, 3, 14, 2, 1)
+#define KVM_REG_ARM_PTIMER_CVAL ARM64_SYS_REG(3, 3, 14, 2, 2)
+#define KVM_REG_ARM_PTIMER_CNT ARM64_SYS_REG(3, 3, 14, 0, 1)
+#define KVM_REG_ARM_TIMER_CTL ARM64_SYS_REG(3, 3, 14, 3, 1)
+#define KVM_REG_ARM_TIMER_CVAL ARM64_SYS_REG(3, 3, 14, 0, 2)
+#define KVM_REG_ARM_TIMER_CNT ARM64_SYS_REG(3, 3, 14, 3, 2)
+#define KVM_REG_ARM_FW (0x0014 << KVM_REG_ARM_COPROC_SHIFT)
+#define KVM_REG_ARM_FW_REG(r) (KVM_REG_ARM64 | KVM_REG_SIZE_U64 | KVM_REG_ARM_FW | ((r) & 0xffff))
+#define KVM_REG_ARM_PSCI_VERSION KVM_REG_ARM_FW_REG(0)
+#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1 KVM_REG_ARM_FW_REG(1)
+#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_AVAIL 0
+#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_AVAIL 1
+#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_REQUIRED 2
+#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2 KVM_REG_ARM_FW_REG(2)
+#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_NOT_AVAIL 0
+#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_UNKNOWN 1
+#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_AVAIL 2
+#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_NOT_REQUIRED 3
+#define KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_ENABLED (1U << 4)
+#define KVM_REG_ARM64_SVE (0x15 << KVM_REG_ARM_COPROC_SHIFT)
+#define KVM_REG_ARM64_SVE_ZREG_BASE 0
+#define KVM_REG_ARM64_SVE_PREG_BASE 0x400
+#define KVM_REG_ARM64_SVE_FFR_BASE 0x600
+#define KVM_ARM64_SVE_NUM_ZREGS __SVE_NUM_ZREGS
+#define KVM_ARM64_SVE_NUM_PREGS __SVE_NUM_PREGS
+#define KVM_ARM64_SVE_MAX_SLICES 32
+#define KVM_REG_ARM64_SVE_ZREG(n,i) (KVM_REG_ARM64 | KVM_REG_ARM64_SVE | KVM_REG_ARM64_SVE_ZREG_BASE | KVM_REG_SIZE_U2048 | (((n) & (KVM_ARM64_SVE_NUM_ZREGS - 1)) << 5) | ((i) & (KVM_ARM64_SVE_MAX_SLICES - 1)))
+#define KVM_REG_ARM64_SVE_PREG(n,i) (KVM_REG_ARM64 | KVM_REG_ARM64_SVE | KVM_REG_ARM64_SVE_PREG_BASE | KVM_REG_SIZE_U256 | (((n) & (KVM_ARM64_SVE_NUM_PREGS - 1)) << 5) | ((i) & (KVM_ARM64_SVE_MAX_SLICES - 1)))
+#define KVM_REG_ARM64_SVE_FFR(i) (KVM_REG_ARM64 | KVM_REG_ARM64_SVE | KVM_REG_ARM64_SVE_FFR_BASE | KVM_REG_SIZE_U256 | ((i) & (KVM_ARM64_SVE_MAX_SLICES - 1)))
+#define KVM_ARM64_SVE_VQ_MIN __SVE_VQ_MIN
+#define KVM_ARM64_SVE_VQ_MAX __SVE_VQ_MAX
+#define KVM_REG_ARM64_SVE_VLS (KVM_REG_ARM64 | KVM_REG_ARM64_SVE | KVM_REG_SIZE_U512 | 0xffff)
+#define KVM_ARM64_SVE_VLS_WORDS ((KVM_ARM64_SVE_VQ_MAX - KVM_ARM64_SVE_VQ_MIN) / 64 + 1)
+#define KVM_DEV_ARM_VGIC_GRP_ADDR 0
+#define KVM_DEV_ARM_VGIC_GRP_DIST_REGS 1
+#define KVM_DEV_ARM_VGIC_GRP_CPU_REGS 2
+#define KVM_DEV_ARM_VGIC_CPUID_SHIFT 32
+#define KVM_DEV_ARM_VGIC_CPUID_MASK (0xffULL << KVM_DEV_ARM_VGIC_CPUID_SHIFT)
+#define KVM_DEV_ARM_VGIC_V3_MPIDR_SHIFT 32
+#define KVM_DEV_ARM_VGIC_V3_MPIDR_MASK (0xffffffffULL << KVM_DEV_ARM_VGIC_V3_MPIDR_SHIFT)
+#define KVM_DEV_ARM_VGIC_OFFSET_SHIFT 0
+#define KVM_DEV_ARM_VGIC_OFFSET_MASK (0xffffffffULL << KVM_DEV_ARM_VGIC_OFFSET_SHIFT)
+#define KVM_DEV_ARM_VGIC_SYSREG_INSTR_MASK (0xffff)
+#define KVM_DEV_ARM_VGIC_GRP_NR_IRQS 3
+#define KVM_DEV_ARM_VGIC_GRP_CTRL 4
+#define KVM_DEV_ARM_VGIC_GRP_REDIST_REGS 5
+#define KVM_DEV_ARM_VGIC_GRP_CPU_SYSREGS 6
+#define KVM_DEV_ARM_VGIC_GRP_LEVEL_INFO 7
+#define KVM_DEV_ARM_VGIC_GRP_ITS_REGS 8
+#define KVM_DEV_ARM_VGIC_LINE_LEVEL_INFO_SHIFT 10
+#define KVM_DEV_ARM_VGIC_LINE_LEVEL_INFO_MASK (0x3fffffULL << KVM_DEV_ARM_VGIC_LINE_LEVEL_INFO_SHIFT)
+#define KVM_DEV_ARM_VGIC_LINE_LEVEL_INTID_MASK 0x3ff
+#define VGIC_LEVEL_INFO_LINE_LEVEL 0
+#define KVM_DEV_ARM_VGIC_CTRL_INIT 0
+#define KVM_DEV_ARM_ITS_SAVE_TABLES 1
+#define KVM_DEV_ARM_ITS_RESTORE_TABLES 2
+#define KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES 3
+#define KVM_DEV_ARM_ITS_CTRL_RESET 4
+#define KVM_ARM_VCPU_PMU_V3_CTRL 0
+#define KVM_ARM_VCPU_PMU_V3_IRQ 0
+#define KVM_ARM_VCPU_PMU_V3_INIT 1
+#define KVM_ARM_VCPU_PMU_V3_FILTER 2
+#define KVM_ARM_VCPU_TIMER_CTRL 1
+#define KVM_ARM_VCPU_TIMER_IRQ_VTIMER 0
+#define KVM_ARM_VCPU_TIMER_IRQ_PTIMER 1
+#define KVM_ARM_VCPU_PVTIME_CTRL 2
+#define KVM_ARM_VCPU_PVTIME_IPA 0
+#define KVM_ARM_IRQ_VCPU2_SHIFT 28
+#define KVM_ARM_IRQ_VCPU2_MASK 0xf
+#define KVM_ARM_IRQ_TYPE_SHIFT 24
+#define KVM_ARM_IRQ_TYPE_MASK 0xf
+#define KVM_ARM_IRQ_VCPU_SHIFT 16
+#define KVM_ARM_IRQ_VCPU_MASK 0xff
+#define KVM_ARM_IRQ_NUM_SHIFT 0
+#define KVM_ARM_IRQ_NUM_MASK 0xffff
+#define KVM_ARM_IRQ_TYPE_CPU 0
+#define KVM_ARM_IRQ_TYPE_SPI 1
+#define KVM_ARM_IRQ_TYPE_PPI 2
+#define KVM_ARM_IRQ_CPU_IRQ 0
+#define KVM_ARM_IRQ_CPU_FIQ 1
+#define KVM_ARM_IRQ_GIC_MAX 127
+#define KVM_NR_IRQCHIPS 1
+#define KVM_PSCI_FN_BASE 0x95c1ba5e
+#define KVM_PSCI_FN(n) (KVM_PSCI_FN_BASE + (n))
+#define KVM_PSCI_FN_CPU_SUSPEND KVM_PSCI_FN(0)
+#define KVM_PSCI_FN_CPU_OFF KVM_PSCI_FN(1)
+#define KVM_PSCI_FN_CPU_ON KVM_PSCI_FN(2)
+#define KVM_PSCI_FN_MIGRATE KVM_PSCI_FN(3)
+#define KVM_PSCI_RET_SUCCESS PSCI_RET_SUCCESS
+#define KVM_PSCI_RET_NI PSCI_RET_NOT_SUPPORTED
+#define KVM_PSCI_RET_INVAL PSCI_RET_INVALID_PARAMS
+#define KVM_PSCI_RET_DENIED PSCI_RET_DENIED
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/kvm_para.h b/x86_64-linux-musl/include/asm-arm64/asm/kvm_para.h
new file mode 100644
index 0000000..e19f7a0
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/kvm_para.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-generic/kvm_para.h>
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/mman.h b/x86_64-linux-musl/include/asm-arm64/asm/mman.h
new file mode 100644
index 0000000..98f72cf
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/mman.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__ASM_MMAN_H
+#define _UAPI__ASM_MMAN_H
+#include <asm-generic/mman.h>
+#define PROT_BTI 0x10
+#define PROT_MTE 0x20
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/msgbuf.h b/x86_64-linux-musl/include/asm-arm64/asm/msgbuf.h
new file mode 100644
index 0000000..7809e3c
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/msgbuf.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-generic/msgbuf.h>
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/param.h b/x86_64-linux-musl/include/asm-arm64/asm/param.h
new file mode 100644
index 0000000..3bd70ed
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/param.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 __ASM_PARAM_H
+#define __ASM_PARAM_H
+#define EXEC_PAGESIZE 65536
+#include <asm-generic/param.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/perf_regs.h b/x86_64-linux-musl/include/asm-arm64/asm/perf_regs.h
new file mode 100644
index 0000000..71d496f
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/perf_regs.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 _ASM_ARM64_PERF_REGS_H
+#define _ASM_ARM64_PERF_REGS_H
+enum perf_event_arm_regs {
+  PERF_REG_ARM64_X0,
+  PERF_REG_ARM64_X1,
+  PERF_REG_ARM64_X2,
+  PERF_REG_ARM64_X3,
+  PERF_REG_ARM64_X4,
+  PERF_REG_ARM64_X5,
+  PERF_REG_ARM64_X6,
+  PERF_REG_ARM64_X7,
+  PERF_REG_ARM64_X8,
+  PERF_REG_ARM64_X9,
+  PERF_REG_ARM64_X10,
+  PERF_REG_ARM64_X11,
+  PERF_REG_ARM64_X12,
+  PERF_REG_ARM64_X13,
+  PERF_REG_ARM64_X14,
+  PERF_REG_ARM64_X15,
+  PERF_REG_ARM64_X16,
+  PERF_REG_ARM64_X17,
+  PERF_REG_ARM64_X18,
+  PERF_REG_ARM64_X19,
+  PERF_REG_ARM64_X20,
+  PERF_REG_ARM64_X21,
+  PERF_REG_ARM64_X22,
+  PERF_REG_ARM64_X23,
+  PERF_REG_ARM64_X24,
+  PERF_REG_ARM64_X25,
+  PERF_REG_ARM64_X26,
+  PERF_REG_ARM64_X27,
+  PERF_REG_ARM64_X28,
+  PERF_REG_ARM64_X29,
+  PERF_REG_ARM64_LR,
+  PERF_REG_ARM64_SP,
+  PERF_REG_ARM64_PC,
+  PERF_REG_ARM64_MAX,
+};
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/poll.h b/x86_64-linux-musl/include/asm-arm64/asm/poll.h
new file mode 100644
index 0000000..d7e8adc
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/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-generic/poll.h>
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/posix_types.h b/x86_64-linux-musl/include/asm-arm64/asm/posix_types.h
new file mode 100644
index 0000000..9ae7bfc
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/posix_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 __ASM_POSIX_TYPES_H
+#define __ASM_POSIX_TYPES_H
+typedef unsigned short __kernel_old_uid_t;
+typedef unsigned short __kernel_old_gid_t;
+#define __kernel_old_uid_t __kernel_old_uid_t
+#include <asm-generic/posix_types.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/ptrace.h b/x86_64-linux-musl/include/asm-arm64/asm/ptrace.h
new file mode 100644
index 0000000..480efcf
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/ptrace.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__ASM_PTRACE_H
+#define _UAPI__ASM_PTRACE_H
+#include <linux/types.h>
+#include <asm/hwcap.h>
+#include <asm/sve_context.h>
+#define PSR_MODE_EL0t 0x00000000
+#define PSR_MODE_EL1t 0x00000004
+#define PSR_MODE_EL1h 0x00000005
+#define PSR_MODE_EL2t 0x00000008
+#define PSR_MODE_EL2h 0x00000009
+#define PSR_MODE_EL3t 0x0000000c
+#define PSR_MODE_EL3h 0x0000000d
+#define PSR_MODE_MASK 0x0000000f
+#define PSR_MODE32_BIT 0x00000010
+#define PSR_F_BIT 0x00000040
+#define PSR_I_BIT 0x00000080
+#define PSR_A_BIT 0x00000100
+#define PSR_D_BIT 0x00000200
+#define PSR_BTYPE_MASK 0x00000c00
+#define PSR_SSBS_BIT 0x00001000
+#define PSR_PAN_BIT 0x00400000
+#define PSR_UAO_BIT 0x00800000
+#define PSR_DIT_BIT 0x01000000
+#define PSR_TCO_BIT 0x02000000
+#define PSR_V_BIT 0x10000000
+#define PSR_C_BIT 0x20000000
+#define PSR_Z_BIT 0x40000000
+#define PSR_N_BIT 0x80000000
+#define PSR_BTYPE_SHIFT 10
+#define PSR_f 0xff000000
+#define PSR_s 0x00ff0000
+#define PSR_x 0x0000ff00
+#define PSR_c 0x000000ff
+#define PSR_BTYPE_NONE (0b00 << PSR_BTYPE_SHIFT)
+#define PSR_BTYPE_JC (0b01 << PSR_BTYPE_SHIFT)
+#define PSR_BTYPE_C (0b10 << PSR_BTYPE_SHIFT)
+#define PSR_BTYPE_J (0b11 << PSR_BTYPE_SHIFT)
+#define PTRACE_SYSEMU 31
+#define PTRACE_SYSEMU_SINGLESTEP 32
+#define PTRACE_PEEKMTETAGS 33
+#define PTRACE_POKEMTETAGS 34
+#ifndef __ASSEMBLY__
+struct user_pt_regs {
+  __u64 regs[31];
+  __u64 sp;
+  __u64 pc;
+  __u64 pstate;
+};
+struct user_fpsimd_state {
+  __uint128_t vregs[32];
+  __u32 fpsr;
+  __u32 fpcr;
+  __u32 __reserved[2];
+};
+struct user_hwdebug_state {
+  __u32 dbg_info;
+  __u32 pad;
+  struct {
+    __u64 addr;
+    __u32 ctrl;
+    __u32 pad;
+  } dbg_regs[16];
+};
+struct user_sve_header {
+  __u32 size;
+  __u32 max_size;
+  __u16 vl;
+  __u16 max_vl;
+  __u16 flags;
+  __u16 __reserved;
+};
+#define SVE_PT_REGS_MASK (1 << 0)
+#define SVE_PT_REGS_FPSIMD 0
+#define SVE_PT_REGS_SVE SVE_PT_REGS_MASK
+#define SVE_PT_VL_INHERIT ((1 << 17) >> 16)
+#define SVE_PT_VL_ONEXEC ((1 << 18) >> 16)
+#define SVE_PT_REGS_OFFSET ((sizeof(struct user_sve_header) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
+#define SVE_PT_FPSIMD_OFFSET SVE_PT_REGS_OFFSET
+#define SVE_PT_FPSIMD_SIZE(vq,flags) (sizeof(struct user_fpsimd_state))
+#define SVE_PT_SVE_ZREG_SIZE(vq) __SVE_ZREG_SIZE(vq)
+#define SVE_PT_SVE_PREG_SIZE(vq) __SVE_PREG_SIZE(vq)
+#define SVE_PT_SVE_FFR_SIZE(vq) __SVE_FFR_SIZE(vq)
+#define SVE_PT_SVE_FPSR_SIZE sizeof(__u32)
+#define SVE_PT_SVE_FPCR_SIZE sizeof(__u32)
+#define SVE_PT_SVE_OFFSET SVE_PT_REGS_OFFSET
+#define SVE_PT_SVE_ZREGS_OFFSET (SVE_PT_REGS_OFFSET + __SVE_ZREGS_OFFSET)
+#define SVE_PT_SVE_ZREG_OFFSET(vq,n) (SVE_PT_REGS_OFFSET + __SVE_ZREG_OFFSET(vq, n))
+#define SVE_PT_SVE_ZREGS_SIZE(vq) (SVE_PT_SVE_ZREG_OFFSET(vq, __SVE_NUM_ZREGS) - SVE_PT_SVE_ZREGS_OFFSET)
+#define SVE_PT_SVE_PREGS_OFFSET(vq) (SVE_PT_REGS_OFFSET + __SVE_PREGS_OFFSET(vq))
+#define SVE_PT_SVE_PREG_OFFSET(vq,n) (SVE_PT_REGS_OFFSET + __SVE_PREG_OFFSET(vq, n))
+#define SVE_PT_SVE_PREGS_SIZE(vq) (SVE_PT_SVE_PREG_OFFSET(vq, __SVE_NUM_PREGS) - SVE_PT_SVE_PREGS_OFFSET(vq))
+#define SVE_PT_SVE_FFR_OFFSET(vq) (SVE_PT_REGS_OFFSET + __SVE_FFR_OFFSET(vq))
+#define SVE_PT_SVE_FPSR_OFFSET(vq) ((SVE_PT_SVE_FFR_OFFSET(vq) + SVE_PT_SVE_FFR_SIZE(vq) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
+#define SVE_PT_SVE_FPCR_OFFSET(vq) (SVE_PT_SVE_FPSR_OFFSET(vq) + SVE_PT_SVE_FPSR_SIZE)
+#define SVE_PT_SVE_SIZE(vq,flags) ((SVE_PT_SVE_FPCR_OFFSET(vq) + SVE_PT_SVE_FPCR_SIZE - SVE_PT_SVE_OFFSET + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
+#define SVE_PT_SIZE(vq,flags) (((flags) & SVE_PT_REGS_MASK) == SVE_PT_REGS_SVE ? SVE_PT_SVE_OFFSET + SVE_PT_SVE_SIZE(vq, flags) : SVE_PT_FPSIMD_OFFSET + SVE_PT_FPSIMD_SIZE(vq, flags))
+struct user_pac_mask {
+  __u64 data_mask;
+  __u64 insn_mask;
+};
+struct user_pac_address_keys {
+  __uint128_t apiakey;
+  __uint128_t apibkey;
+  __uint128_t apdakey;
+  __uint128_t apdbkey;
+};
+struct user_pac_generic_keys {
+  __uint128_t apgakey;
+};
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/resource.h b/x86_64-linux-musl/include/asm-arm64/asm/resource.h
new file mode 100644
index 0000000..371adb5
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/resource.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-generic/resource.h>
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/sembuf.h b/x86_64-linux-musl/include/asm-arm64/asm/sembuf.h
new file mode 100644
index 0000000..6ce6549
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/sembuf.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-generic/sembuf.h>
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/setup.h b/x86_64-linux-musl/include/asm-arm64/asm/setup.h
new file mode 100644
index 0000000..eac94e0
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/setup.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 __ASM_SETUP_H
+#define __ASM_SETUP_H
+#include <linux/types.h>
+#define COMMAND_LINE_SIZE 2048
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/shmbuf.h b/x86_64-linux-musl/include/asm-arm64/asm/shmbuf.h
new file mode 100644
index 0000000..fe8b1be
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/shmbuf.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-generic/shmbuf.h>
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/sigcontext.h b/x86_64-linux-musl/include/asm-arm64/asm/sigcontext.h
new file mode 100644
index 0000000..518079d
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/sigcontext.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__ASM_SIGCONTEXT_H
+#define _UAPI__ASM_SIGCONTEXT_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+struct sigcontext {
+  __u64 fault_address;
+  __u64 regs[31];
+  __u64 sp;
+  __u64 pc;
+  __u64 pstate;
+  __u8 __reserved[4096] __attribute__((__aligned__(16)));
+};
+struct _aarch64_ctx {
+  __u32 magic;
+  __u32 size;
+};
+#define FPSIMD_MAGIC 0x46508001
+struct fpsimd_context {
+  struct _aarch64_ctx head;
+  __u32 fpsr;
+  __u32 fpcr;
+  __uint128_t vregs[32];
+};
+#define ESR_MAGIC 0x45535201
+struct esr_context {
+  struct _aarch64_ctx head;
+  __u64 esr;
+};
+#define EXTRA_MAGIC 0x45585401
+struct extra_context {
+  struct _aarch64_ctx head;
+  __u64 datap;
+  __u32 size;
+  __u32 __reserved[3];
+};
+#define SVE_MAGIC 0x53564501
+struct sve_context {
+  struct _aarch64_ctx head;
+  __u16 vl;
+  __u16 __reserved[3];
+};
+#endif
+#include <asm/sve_context.h>
+#define SVE_VQ_BYTES __SVE_VQ_BYTES
+#define SVE_VQ_MIN __SVE_VQ_MIN
+#define SVE_VQ_MAX __SVE_VQ_MAX
+#define SVE_VL_MIN __SVE_VL_MIN
+#define SVE_VL_MAX __SVE_VL_MAX
+#define SVE_NUM_ZREGS __SVE_NUM_ZREGS
+#define SVE_NUM_PREGS __SVE_NUM_PREGS
+#define sve_vl_valid(vl) __sve_vl_valid(vl)
+#define sve_vq_from_vl(vl) __sve_vq_from_vl(vl)
+#define sve_vl_from_vq(vq) __sve_vl_from_vq(vq)
+#define SVE_SIG_ZREG_SIZE(vq) __SVE_ZREG_SIZE(vq)
+#define SVE_SIG_PREG_SIZE(vq) __SVE_PREG_SIZE(vq)
+#define SVE_SIG_FFR_SIZE(vq) __SVE_FFR_SIZE(vq)
+#define SVE_SIG_REGS_OFFSET ((sizeof(struct sve_context) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
+#define SVE_SIG_ZREGS_OFFSET (SVE_SIG_REGS_OFFSET + __SVE_ZREGS_OFFSET)
+#define SVE_SIG_ZREG_OFFSET(vq,n) (SVE_SIG_REGS_OFFSET + __SVE_ZREG_OFFSET(vq, n))
+#define SVE_SIG_ZREGS_SIZE(vq) __SVE_ZREGS_SIZE(vq)
+#define SVE_SIG_PREGS_OFFSET(vq) (SVE_SIG_REGS_OFFSET + __SVE_PREGS_OFFSET(vq))
+#define SVE_SIG_PREG_OFFSET(vq,n) (SVE_SIG_REGS_OFFSET + __SVE_PREG_OFFSET(vq, n))
+#define SVE_SIG_PREGS_SIZE(vq) __SVE_PREGS_SIZE(vq)
+#define SVE_SIG_FFR_OFFSET(vq) (SVE_SIG_REGS_OFFSET + __SVE_FFR_OFFSET(vq))
+#define SVE_SIG_REGS_SIZE(vq) (__SVE_FFR_OFFSET(vq) + __SVE_FFR_SIZE(vq))
+#define SVE_SIG_CONTEXT_SIZE(vq) (SVE_SIG_REGS_OFFSET + SVE_SIG_REGS_SIZE(vq))
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/siginfo.h b/x86_64-linux-musl/include/asm-arm64/asm/siginfo.h
new file mode 100644
index 0000000..a31ebb2
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/siginfo.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-generic/siginfo.h>
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/signal.h b/x86_64-linux-musl/include/asm-arm64/asm/signal.h
new file mode 100644
index 0000000..7630b75
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/signal.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 __ASM_SIGNAL_H
+#define __ASM_SIGNAL_H
+#define SA_RESTORER 0x04000000
+#define MINSIGSTKSZ 5120
+#define SIGSTKSZ 16384
+#include <asm-generic/signal.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/socket.h b/x86_64-linux-musl/include/asm-arm64/asm/socket.h
new file mode 100644
index 0000000..50a9874
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/socket.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-generic/socket.h>
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/sockios.h b/x86_64-linux-musl/include/asm-arm64/asm/sockios.h
new file mode 100644
index 0000000..710db92
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/sockios.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-generic/sockios.h>
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/stat.h b/x86_64-linux-musl/include/asm-arm64/asm/stat.h
new file mode 100644
index 0000000..af7ebfc
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/stat.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-generic/stat.h>
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/statfs.h b/x86_64-linux-musl/include/asm-arm64/asm/statfs.h
new file mode 100644
index 0000000..4a96c7e
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/statfs.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 __ASM_STATFS_H
+#define __ASM_STATFS_H
+#define ARCH_PACK_COMPAT_STATFS64 __attribute__((packed, aligned(4)))
+#include <asm-generic/statfs.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/sve_context.h b/x86_64-linux-musl/include/asm-arm64/asm/sve_context.h
new file mode 100644
index 0000000..ff0063e
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/sve_context.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__ASM_SVE_CONTEXT_H
+#define _UAPI__ASM_SVE_CONTEXT_H
+#include <linux/types.h>
+#define __SVE_VQ_BYTES 16
+#define __SVE_VQ_MIN 1
+#define __SVE_VQ_MAX 512
+#define __SVE_VL_MIN (__SVE_VQ_MIN * __SVE_VQ_BYTES)
+#define __SVE_VL_MAX (__SVE_VQ_MAX * __SVE_VQ_BYTES)
+#define __SVE_NUM_ZREGS 32
+#define __SVE_NUM_PREGS 16
+#define __sve_vl_valid(vl) ((vl) % __SVE_VQ_BYTES == 0 && (vl) >= __SVE_VL_MIN && (vl) <= __SVE_VL_MAX)
+#define __sve_vq_from_vl(vl) ((vl) / __SVE_VQ_BYTES)
+#define __sve_vl_from_vq(vq) ((vq) * __SVE_VQ_BYTES)
+#define __SVE_ZREG_SIZE(vq) ((__u32) (vq) * __SVE_VQ_BYTES)
+#define __SVE_PREG_SIZE(vq) ((__u32) (vq) * (__SVE_VQ_BYTES / 8))
+#define __SVE_FFR_SIZE(vq) __SVE_PREG_SIZE(vq)
+#define __SVE_ZREGS_OFFSET 0
+#define __SVE_ZREG_OFFSET(vq,n) (__SVE_ZREGS_OFFSET + __SVE_ZREG_SIZE(vq) * (n))
+#define __SVE_ZREGS_SIZE(vq) (__SVE_ZREG_OFFSET(vq, __SVE_NUM_ZREGS) - __SVE_ZREGS_OFFSET)
+#define __SVE_PREGS_OFFSET(vq) (__SVE_ZREGS_OFFSET + __SVE_ZREGS_SIZE(vq))
+#define __SVE_PREG_OFFSET(vq,n) (__SVE_PREGS_OFFSET(vq) + __SVE_PREG_SIZE(vq) * (n))
+#define __SVE_PREGS_SIZE(vq) (__SVE_PREG_OFFSET(vq, __SVE_NUM_PREGS) - __SVE_PREGS_OFFSET(vq))
+#define __SVE_FFR_OFFSET(vq) (__SVE_PREGS_OFFSET(vq) + __SVE_PREGS_SIZE(vq))
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/swab.h b/x86_64-linux-musl/include/asm-arm64/asm/swab.h
new file mode 100644
index 0000000..0049f53
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/swab.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-generic/swab.h>
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/termbits.h b/x86_64-linux-musl/include/asm-arm64/asm/termbits.h
new file mode 100644
index 0000000..42af6fe
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/termbits.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-generic/termbits.h>
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/termios.h b/x86_64-linux-musl/include/asm-arm64/asm/termios.h
new file mode 100644
index 0000000..feca4c6
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/termios.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-generic/termios.h>
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/types.h b/x86_64-linux-musl/include/asm-arm64/asm/types.h
new file mode 100644
index 0000000..8250f43
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/types.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-generic/types.h>
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/ucontext.h b/x86_64-linux-musl/include/asm-arm64/asm/ucontext.h
new file mode 100644
index 0000000..24dc60a
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/ucontext.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__ASM_UCONTEXT_H
+#define _UAPI__ASM_UCONTEXT_H
+#include <linux/types.h>
+struct ucontext {
+  unsigned long uc_flags;
+  struct ucontext * uc_link;
+  stack_t uc_stack;
+  sigset_t uc_sigmask;
+  __u8 __linux_unused[1024 / 8 - sizeof(sigset_t)];
+  struct sigcontext uc_mcontext;
+};
+#endif
diff --git a/x86_64-linux-musl/include/asm-arm64/asm/unistd.h b/x86_64-linux-musl/include/asm-arm64/asm/unistd.h
new file mode 100644
index 0000000..06b85ed
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-arm64/asm/unistd.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!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#define __ARCH_WANT_RENAMEAT
+#define __ARCH_WANT_NEW_STAT
+#define __ARCH_WANT_SET_GET_RLIMIT
+#define __ARCH_WANT_TIME32_SYSCALLS
+#define __ARCH_WANT_SYS_CLONE3
+#define __ARCH_WANT_MEMFD_SECRET
+#include <asm-generic/unistd.h>
diff --git a/x86_64-linux-musl/include/asm-generic/auxvec.h b/x86_64-linux-musl/include/asm-generic/auxvec.h
new file mode 100644
index 0000000..fad637b
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/auxvec.h
@@ -0,0 +1,21 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_GENERIC_AUXVEC_H
+#define __ASM_GENERIC_AUXVEC_H
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/bitsperlong.h b/x86_64-linux-musl/include/asm-generic/bitsperlong.h
new file mode 100644
index 0000000..8fb379f
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/bitsperlong.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__ASM_GENERIC_BITS_PER_LONG
+#define _UAPI__ASM_GENERIC_BITS_PER_LONG
+#ifndef __BITS_PER_LONG
+#define __BITS_PER_LONG 32
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/bpf_perf_event.h b/x86_64-linux-musl/include/asm-generic/bpf_perf_event.h
new file mode 100644
index 0000000..794927b
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/bpf_perf_event.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__ASM_GENERIC_BPF_PERF_EVENT_H__
+#define _UAPI__ASM_GENERIC_BPF_PERF_EVENT_H__
+#include <linux/ptrace.h>
+typedef struct pt_regs bpf_user_pt_regs_t;
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/errno-base.h b/x86_64-linux-musl/include/asm-generic/errno-base.h
new file mode 100644
index 0000000..bdfb811
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/errno-base.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 _ASM_GENERIC_ERRNO_BASE_H
+#define _ASM_GENERIC_ERRNO_BASE_H
+#define EPERM 1
+#define ENOENT 2
+#define ESRCH 3
+#define EINTR 4
+#define EIO 5
+#define ENXIO 6
+#define E2BIG 7
+#define ENOEXEC 8
+#define EBADF 9
+#define ECHILD 10
+#define EAGAIN 11
+#define ENOMEM 12
+#define EACCES 13
+#define EFAULT 14
+#define ENOTBLK 15
+#define EBUSY 16
+#define EEXIST 17
+#define EXDEV 18
+#define ENODEV 19
+#define ENOTDIR 20
+#define EISDIR 21
+#define EINVAL 22
+#define ENFILE 23
+#define EMFILE 24
+#define ENOTTY 25
+#define ETXTBSY 26
+#define EFBIG 27
+#define ENOSPC 28
+#define ESPIPE 29
+#define EROFS 30
+#define EMLINK 31
+#define EPIPE 32
+#define EDOM 33
+#define ERANGE 34
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/errno.h b/x86_64-linux-musl/include/asm-generic/errno.h
new file mode 100644
index 0000000..6a2c285
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/errno.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 _ASM_GENERIC_ERRNO_H
+#define _ASM_GENERIC_ERRNO_H
+#include <asm-generic/errno-base.h>
+#define EDEADLK 35
+#define ENAMETOOLONG 36
+#define ENOLCK 37
+#define ENOSYS 38
+#define ENOTEMPTY 39
+#define ELOOP 40
+#define EWOULDBLOCK EAGAIN
+#define ENOMSG 42
+#define EIDRM 43
+#define ECHRNG 44
+#define EL2NSYNC 45
+#define EL3HLT 46
+#define EL3RST 47
+#define ELNRNG 48
+#define EUNATCH 49
+#define ENOCSI 50
+#define EL2HLT 51
+#define EBADE 52
+#define EBADR 53
+#define EXFULL 54
+#define ENOANO 55
+#define EBADRQC 56
+#define EBADSLT 57
+#define EDEADLOCK EDEADLK
+#define EBFONT 59
+#define ENOSTR 60
+#define ENODATA 61
+#define ETIME 62
+#define ENOSR 63
+#define ENONET 64
+#define ENOPKG 65
+#define EREMOTE 66
+#define ENOLINK 67
+#define EADV 68
+#define ESRMNT 69
+#define ECOMM 70
+#define EPROTO 71
+#define EMULTIHOP 72
+#define EDOTDOT 73
+#define EBADMSG 74
+#define EOVERFLOW 75
+#define ENOTUNIQ 76
+#define EBADFD 77
+#define EREMCHG 78
+#define ELIBACC 79
+#define ELIBBAD 80
+#define ELIBSCN 81
+#define ELIBMAX 82
+#define ELIBEXEC 83
+#define EILSEQ 84
+#define ERESTART 85
+#define ESTRPIPE 86
+#define EUSERS 87
+#define ENOTSOCK 88
+#define EDESTADDRREQ 89
+#define EMSGSIZE 90
+#define EPROTOTYPE 91
+#define ENOPROTOOPT 92
+#define EPROTONOSUPPORT 93
+#define ESOCKTNOSUPPORT 94
+#define EOPNOTSUPP 95
+#define EPFNOSUPPORT 96
+#define EAFNOSUPPORT 97
+#define EADDRINUSE 98
+#define EADDRNOTAVAIL 99
+#define ENETDOWN 100
+#define ENETUNREACH 101
+#define ENETRESET 102
+#define ECONNABORTED 103
+#define ECONNRESET 104
+#define ENOBUFS 105
+#define EISCONN 106
+#define ENOTCONN 107
+#define ESHUTDOWN 108
+#define ETOOMANYREFS 109
+#define ETIMEDOUT 110
+#define ECONNREFUSED 111
+#define EHOSTDOWN 112
+#define EHOSTUNREACH 113
+#define EALREADY 114
+#define EINPROGRESS 115
+#define ESTALE 116
+#define EUCLEAN 117
+#define ENOTNAM 118
+#define ENAVAIL 119
+#define EISNAM 120
+#define EREMOTEIO 121
+#define EDQUOT 122
+#define ENOMEDIUM 123
+#define EMEDIUMTYPE 124
+#define ECANCELED 125
+#define ENOKEY 126
+#define EKEYEXPIRED 127
+#define EKEYREVOKED 128
+#define EKEYREJECTED 129
+#define EOWNERDEAD 130
+#define ENOTRECOVERABLE 131
+#define ERFKILL 132
+#define EHWPOISON 133
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/fcntl.h b/x86_64-linux-musl/include/asm-generic/fcntl.h
new file mode 100644
index 0000000..a2cb5f4
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/fcntl.h
@@ -0,0 +1,156 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_GENERIC_FCNTL_H
+#define _ASM_GENERIC_FCNTL_H
+#include <bits/flock64.h>
+#include <bits/flock.h>
+#include <linux/types.h>
+#define O_ACCMODE 00000003
+#define O_RDONLY 00000000
+#define O_WRONLY 00000001
+#define O_RDWR 00000002
+#ifndef O_CREAT
+#define O_CREAT 00000100
+#endif
+#ifndef O_EXCL
+#define O_EXCL 00000200
+#endif
+#ifndef O_NOCTTY
+#define O_NOCTTY 00000400
+#endif
+#ifndef O_TRUNC
+#define O_TRUNC 00001000
+#endif
+#ifndef O_APPEND
+#define O_APPEND 00002000
+#endif
+#ifndef O_NONBLOCK
+#define O_NONBLOCK 00004000
+#endif
+#ifndef O_DSYNC
+#define O_DSYNC 00010000
+#endif
+#ifndef FASYNC
+#define FASYNC 00020000
+#endif
+#ifndef O_DIRECT
+#define O_DIRECT 00040000
+#endif
+#ifndef O_LARGEFILE
+#define O_LARGEFILE 00100000
+#endif
+#ifndef O_DIRECTORY
+#define O_DIRECTORY 00200000
+#endif
+#ifndef O_NOFOLLOW
+#define O_NOFOLLOW 00400000
+#endif
+#ifndef O_NOATIME
+#define O_NOATIME 01000000
+#endif
+#ifndef O_CLOEXEC
+#define O_CLOEXEC 02000000
+#endif
+#ifndef O_SYNC
+#define __O_SYNC 04000000
+#define O_SYNC (__O_SYNC | O_DSYNC)
+#endif
+#ifndef O_PATH
+#define O_PATH 010000000
+#endif
+#ifndef __O_TMPFILE
+#define __O_TMPFILE 020000000
+#endif
+#define O_TMPFILE (__O_TMPFILE | O_DIRECTORY)
+#define O_TMPFILE_MASK (__O_TMPFILE | O_DIRECTORY | O_CREAT)
+#ifndef O_NDELAY
+#define O_NDELAY O_NONBLOCK
+#endif
+#define F_DUPFD 0
+#define F_GETFD 1
+#define F_SETFD 2
+#define F_GETFL 3
+#define F_SETFL 4
+#ifndef F_GETLK
+#define F_GETLK 5
+#define F_SETLK 6
+#define F_SETLKW 7
+#endif
+#ifndef F_SETOWN
+#define F_SETOWN 8
+#define F_GETOWN 9
+#endif
+#ifndef F_SETSIG
+#define F_SETSIG 10
+#define F_GETSIG 11
+#endif
+#ifndef __LP64__
+#ifndef F_GETLK64
+#define F_GETLK64 12
+#define F_SETLK64 13
+#define F_SETLKW64 14
+#endif
+#endif
+#ifndef F_SETOWN_EX
+#define F_SETOWN_EX 15
+#define F_GETOWN_EX 16
+#endif
+#ifndef F_GETOWNER_UIDS
+#define F_GETOWNER_UIDS 17
+#endif
+#define F_OFD_GETLK 36
+#define F_OFD_SETLK 37
+#define F_OFD_SETLKW 38
+#define F_OWNER_TID 0
+#define F_OWNER_PID 1
+#define F_OWNER_PGRP 2
+struct f_owner_ex {
+  int type;
+  __kernel_pid_t pid;
+};
+#define FD_CLOEXEC 1
+#ifndef F_RDLCK
+#define F_RDLCK 0
+#define F_WRLCK 1
+#define F_UNLCK 2
+#endif
+#ifndef F_EXLCK
+#define F_EXLCK 4
+#define F_SHLCK 8
+#endif
+#define LOCK_SH 1
+#define LOCK_EX 2
+#define LOCK_NB 4
+#define LOCK_UN 8
+#define LOCK_MAND 32
+#define LOCK_READ 64
+#define LOCK_WRITE 128
+#define LOCK_RW 192
+#define F_LINUX_SPECIFIC_BASE 1024
+#ifndef HAVE_ARCH_STRUCT_FLOCK
+#ifndef __ARCH_FLOCK_PAD
+#define __ARCH_FLOCK_PAD
+#endif
+#endif
+#ifndef HAVE_ARCH_STRUCT_FLOCK64
+#ifndef __ARCH_FLOCK64_PAD
+#define __ARCH_FLOCK64_PAD
+#endif
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/hugetlb_encode.h b/x86_64-linux-musl/include/asm-generic/hugetlb_encode.h
new file mode 100644
index 0000000..73d8180
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/hugetlb_encode.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 _ASM_GENERIC_HUGETLB_ENCODE_H_
+#define _ASM_GENERIC_HUGETLB_ENCODE_H_
+#define HUGETLB_FLAG_ENCODE_SHIFT 26
+#define HUGETLB_FLAG_ENCODE_MASK 0x3f
+#define HUGETLB_FLAG_ENCODE_16KB (14 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_64KB (16 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_512KB (19 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_1MB (20 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_2MB (21 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_8MB (23 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16MB (24 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_32MB (25 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_256MB (28 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_512MB (29 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_1GB (30 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_2GB (31 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16GB (34 << HUGETLB_FLAG_ENCODE_SHIFT)
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/int-l64.h b/x86_64-linux-musl/include/asm-generic/int-l64.h
new file mode 100644
index 0000000..6ddf740
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/int-l64.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_ASM_GENERIC_INT_L64_H
+#define _UAPI_ASM_GENERIC_INT_L64_H
+#include <asm/bitsperlong.h>
+#ifndef __ASSEMBLY__
+typedef __signed__ char __s8;
+typedef unsigned char __u8;
+typedef __signed__ short __s16;
+typedef unsigned short __u16;
+typedef __signed__ int __s32;
+typedef unsigned int __u32;
+typedef __signed__ long __s64;
+typedef unsigned long __u64;
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/int-ll64.h b/x86_64-linux-musl/include/asm-generic/int-ll64.h
new file mode 100644
index 0000000..dcad2eb
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/int-ll64.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_ASM_GENERIC_INT_LL64_H
+#define _UAPI_ASM_GENERIC_INT_LL64_H
+#include <asm/bitsperlong.h>
+#ifndef __ASSEMBLY__
+typedef __signed__ char __s8;
+typedef unsigned char __u8;
+typedef __signed__ short __s16;
+typedef unsigned short __u16;
+typedef __signed__ int __s32;
+typedef unsigned int __u32;
+#ifdef __GNUC__
+__extension__ typedef __signed__ long long __s64;
+__extension__ typedef unsigned long long __u64;
+#else
+typedef __signed__ long long __s64;
+typedef unsigned long long __u64;
+#endif
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/ioctl.h b/x86_64-linux-musl/include/asm-generic/ioctl.h
new file mode 100644
index 0000000..84c2ec8
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/ioctl.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_ASM_GENERIC_IOCTL_H
+#define _UAPI_ASM_GENERIC_IOCTL_H
+#define _IOC_NRBITS 8
+#define _IOC_TYPEBITS 8
+#ifndef _IOC_SIZEBITS
+#define _IOC_SIZEBITS 14
+#endif
+#ifndef _IOC_DIRBITS
+#define _IOC_DIRBITS 2
+#endif
+#define _IOC_NRMASK ((1 << _IOC_NRBITS) - 1)
+#define _IOC_TYPEMASK ((1 << _IOC_TYPEBITS) - 1)
+#define _IOC_SIZEMASK ((1 << _IOC_SIZEBITS) - 1)
+#define _IOC_DIRMASK ((1 << _IOC_DIRBITS) - 1)
+#define _IOC_NRSHIFT 0
+#define _IOC_TYPESHIFT (_IOC_NRSHIFT + _IOC_NRBITS)
+#define _IOC_SIZESHIFT (_IOC_TYPESHIFT + _IOC_TYPEBITS)
+#define _IOC_DIRSHIFT (_IOC_SIZESHIFT + _IOC_SIZEBITS)
+#ifndef _IOC_NONE
+#define _IOC_NONE 0U
+#endif
+#ifndef _IOC_WRITE
+#define _IOC_WRITE 1U
+#endif
+#ifndef _IOC_READ
+#define _IOC_READ 2U
+#endif
+#define _IOC(dir,type,nr,size) (((dir) << _IOC_DIRSHIFT) | ((type) << _IOC_TYPESHIFT) | ((nr) << _IOC_NRSHIFT) | ((size) << _IOC_SIZESHIFT))
+#define _IOC_TYPECHECK(t) (sizeof(t))
+#define _IO(type,nr) _IOC(_IOC_NONE, (type), (nr), 0)
+#define _IOR(type,nr,size) _IOC(_IOC_READ, (type), (nr), (_IOC_TYPECHECK(size)))
+#define _IOW(type,nr,size) _IOC(_IOC_WRITE, (type), (nr), (_IOC_TYPECHECK(size)))
+#define _IOWR(type,nr,size) _IOC(_IOC_READ | _IOC_WRITE, (type), (nr), (_IOC_TYPECHECK(size)))
+#define _IOR_BAD(type,nr,size) _IOC(_IOC_READ, (type), (nr), sizeof(size))
+#define _IOW_BAD(type,nr,size) _IOC(_IOC_WRITE, (type), (nr), sizeof(size))
+#define _IOWR_BAD(type,nr,size) _IOC(_IOC_READ | _IOC_WRITE, (type), (nr), sizeof(size))
+#define _IOC_DIR(nr) (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK)
+#define _IOC_TYPE(nr) (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK)
+#define _IOC_NR(nr) (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK)
+#define _IOC_SIZE(nr) (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK)
+#define IOC_IN (_IOC_WRITE << _IOC_DIRSHIFT)
+#define IOC_OUT (_IOC_READ << _IOC_DIRSHIFT)
+#define IOC_INOUT ((_IOC_WRITE | _IOC_READ) << _IOC_DIRSHIFT)
+#define IOCSIZE_MASK (_IOC_SIZEMASK << _IOC_SIZESHIFT)
+#define IOCSIZE_SHIFT (_IOC_SIZESHIFT)
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/ioctls.h b/x86_64-linux-musl/include/asm-generic/ioctls.h
new file mode 100644
index 0000000..f8a4357
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/ioctls.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 __ASM_GENERIC_IOCTLS_H
+#define __ASM_GENERIC_IOCTLS_H
+#include <linux/ioctl.h>
+#define TCGETS 0x5401
+#define TCSETS 0x5402
+#define TCSETSW 0x5403
+#define TCSETSF 0x5404
+#define TCGETA 0x5405
+#define TCSETA 0x5406
+#define TCSETAW 0x5407
+#define TCSETAF 0x5408
+#define TCSBRK 0x5409
+#define TCXONC 0x540A
+#define TCFLSH 0x540B
+#define TIOCEXCL 0x540C
+#define TIOCNXCL 0x540D
+#define TIOCSCTTY 0x540E
+#define TIOCGPGRP 0x540F
+#define TIOCSPGRP 0x5410
+#define TIOCOUTQ 0x5411
+#define TIOCSTI 0x5412
+#define TIOCGWINSZ 0x5413
+#define TIOCSWINSZ 0x5414
+#define TIOCMGET 0x5415
+#define TIOCMBIS 0x5416
+#define TIOCMBIC 0x5417
+#define TIOCMSET 0x5418
+#define TIOCGSOFTCAR 0x5419
+#define TIOCSSOFTCAR 0x541A
+#define FIONREAD 0x541B
+#define TIOCINQ FIONREAD
+#define TIOCLINUX 0x541C
+#define TIOCCONS 0x541D
+#define TIOCGSERIAL 0x541E
+#define TIOCSSERIAL 0x541F
+#define TIOCPKT 0x5420
+#define FIONBIO 0x5421
+#define TIOCNOTTY 0x5422
+#define TIOCSETD 0x5423
+#define TIOCGETD 0x5424
+#define TCSBRKP 0x5425
+#define TIOCSBRK 0x5427
+#define TIOCCBRK 0x5428
+#define TIOCGSID 0x5429
+#define TCGETS2 _IOR('T', 0x2A, struct termios2)
+#define TCSETS2 _IOW('T', 0x2B, struct termios2)
+#define TCSETSW2 _IOW('T', 0x2C, struct termios2)
+#define TCSETSF2 _IOW('T', 0x2D, struct termios2)
+#define TIOCGRS485 0x542E
+#ifndef TIOCSRS485
+#define TIOCSRS485 0x542F
+#endif
+#define TIOCGPTN _IOR('T', 0x30, unsigned int)
+#define TIOCSPTLCK _IOW('T', 0x31, int)
+#define TIOCGDEV _IOR('T', 0x32, unsigned int)
+#define TCGETX 0x5432
+#define TCSETX 0x5433
+#define TCSETXF 0x5434
+#define TCSETXW 0x5435
+#define TIOCSIG _IOW('T', 0x36, int)
+#define TIOCVHANGUP 0x5437
+#define TIOCGPKT _IOR('T', 0x38, int)
+#define TIOCGPTLCK _IOR('T', 0x39, int)
+#define TIOCGEXCL _IOR('T', 0x40, int)
+#define TIOCGPTPEER _IO('T', 0x41)
+#define TIOCGISO7816 _IOR('T', 0x42, struct serial_iso7816)
+#define TIOCSISO7816 _IOWR('T', 0x43, struct serial_iso7816)
+#define FIONCLEX 0x5450
+#define FIOCLEX 0x5451
+#define FIOASYNC 0x5452
+#define TIOCSERCONFIG 0x5453
+#define TIOCSERGWILD 0x5454
+#define TIOCSERSWILD 0x5455
+#define TIOCGLCKTRMIOS 0x5456
+#define TIOCSLCKTRMIOS 0x5457
+#define TIOCSERGSTRUCT 0x5458
+#define TIOCSERGETLSR 0x5459
+#define TIOCSERGETMULTI 0x545A
+#define TIOCSERSETMULTI 0x545B
+#define TIOCMIWAIT 0x545C
+#define TIOCGICOUNT 0x545D
+#ifndef FIOQSIZE
+#define FIOQSIZE 0x5460
+#endif
+#define TIOCPKT_DATA 0
+#define TIOCPKT_FLUSHREAD 1
+#define TIOCPKT_FLUSHWRITE 2
+#define TIOCPKT_STOP 4
+#define TIOCPKT_START 8
+#define TIOCPKT_NOSTOP 16
+#define TIOCPKT_DOSTOP 32
+#define TIOCPKT_IOCTL 64
+#define TIOCSER_TEMT 0x01
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/ipcbuf.h b/x86_64-linux-musl/include/asm-generic/ipcbuf.h
new file mode 100644
index 0000000..40c45ab
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/ipcbuf.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 __ASM_GENERIC_IPCBUF_H
+#define __ASM_GENERIC_IPCBUF_H
+#include <linux/posix_types.h>
+struct ipc64_perm {
+  __kernel_key_t key;
+  __kernel_uid32_t uid;
+  __kernel_gid32_t gid;
+  __kernel_uid32_t cuid;
+  __kernel_gid32_t cgid;
+  __kernel_mode_t mode;
+  unsigned char __pad1[4 - sizeof(__kernel_mode_t)];
+  unsigned short seq;
+  unsigned short __pad2;
+  __kernel_ulong_t __unused1;
+  __kernel_ulong_t __unused2;
+};
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/kvm_para.h b/x86_64-linux-musl/include/asm-generic/kvm_para.h
new file mode 100644
index 0000000..878419c
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/kvm_para.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/x86_64-linux-musl/include/asm-generic/mman-common.h b/x86_64-linux-musl/include/asm-generic/mman-common.h
new file mode 100644
index 0000000..9440576
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/mman-common.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 __ASM_GENERIC_MMAN_COMMON_H
+#define __ASM_GENERIC_MMAN_COMMON_H
+#define PROT_READ 0x1
+#define PROT_WRITE 0x2
+#define PROT_EXEC 0x4
+#define PROT_SEM 0x8
+#define PROT_NONE 0x0
+#define PROT_GROWSDOWN 0x01000000
+#define PROT_GROWSUP 0x02000000
+#define MAP_TYPE 0x0f
+#define MAP_FIXED 0x10
+#define MAP_ANONYMOUS 0x20
+#define MAP_POPULATE 0x008000
+#define MAP_NONBLOCK 0x010000
+#define MAP_STACK 0x020000
+#define MAP_HUGETLB 0x040000
+#define MAP_SYNC 0x080000
+#define MAP_FIXED_NOREPLACE 0x100000
+#define MAP_UNINITIALIZED 0x4000000
+#define MLOCK_ONFAULT 0x01
+#define MS_ASYNC 1
+#define MS_INVALIDATE 2
+#define MS_SYNC 4
+#define MADV_NORMAL 0
+#define MADV_RANDOM 1
+#define MADV_SEQUENTIAL 2
+#define MADV_WILLNEED 3
+#define MADV_DONTNEED 4
+#define MADV_FREE 8
+#define MADV_REMOVE 9
+#define MADV_DONTFORK 10
+#define MADV_DOFORK 11
+#define MADV_HWPOISON 100
+#define MADV_SOFT_OFFLINE 101
+#define MADV_MERGEABLE 12
+#define MADV_UNMERGEABLE 13
+#define MADV_HUGEPAGE 14
+#define MADV_NOHUGEPAGE 15
+#define MADV_DONTDUMP 16
+#define MADV_DODUMP 17
+#define MADV_WIPEONFORK 18
+#define MADV_KEEPONFORK 19
+#define MADV_COLD 20
+#define MADV_PAGEOUT 21
+#define MADV_POPULATE_READ 22
+#define MADV_POPULATE_WRITE 23
+#define MAP_FILE 0
+#define PKEY_DISABLE_ACCESS 0x1
+#define PKEY_DISABLE_WRITE 0x2
+#define PKEY_ACCESS_MASK (PKEY_DISABLE_ACCESS | PKEY_DISABLE_WRITE)
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/mman.h b/x86_64-linux-musl/include/asm-generic/mman.h
new file mode 100644
index 0000000..33d43f7
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/mman.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 __ASM_GENERIC_MMAN_H
+#define __ASM_GENERIC_MMAN_H
+#include <asm-generic/mman-common.h>
+#define MAP_GROWSDOWN 0x0100
+#define MAP_DENYWRITE 0x0800
+#define MAP_EXECUTABLE 0x1000
+#define MAP_LOCKED 0x2000
+#define MAP_NORESERVE 0x4000
+#define MCL_CURRENT 1
+#define MCL_FUTURE 2
+#define MCL_ONFAULT 4
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/msgbuf.h b/x86_64-linux-musl/include/asm-generic/msgbuf.h
new file mode 100644
index 0000000..827d050
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/msgbuf.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 __ASM_GENERIC_MSGBUF_H
+#define __ASM_GENERIC_MSGBUF_H
+#include <asm/bitsperlong.h>
+#include <asm/ipcbuf.h>
+struct msqid64_ds {
+  struct ipc64_perm msg_perm;
+#if __BITS_PER_LONG == 64
+  long msg_stime;
+  long msg_rtime;
+  long msg_ctime;
+#else
+  unsigned long msg_stime;
+  unsigned long msg_stime_high;
+  unsigned long msg_rtime;
+  unsigned long msg_rtime_high;
+  unsigned long msg_ctime;
+  unsigned long msg_ctime_high;
+#endif
+  unsigned long msg_cbytes;
+  unsigned long msg_qnum;
+  unsigned long msg_qbytes;
+  __kernel_pid_t msg_lspid;
+  __kernel_pid_t msg_lrpid;
+  unsigned long __unused4;
+  unsigned long __unused5;
+};
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/param.h b/x86_64-linux-musl/include/asm-generic/param.h
new file mode 100644
index 0000000..7897799
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/param.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__ASM_GENERIC_PARAM_H
+#define _UAPI__ASM_GENERIC_PARAM_H
+#ifndef HZ
+#define HZ 100
+#endif
+#ifndef EXEC_PAGESIZE
+#define EXEC_PAGESIZE 4096
+#endif
+#ifndef NOGROUP
+#define NOGROUP (- 1)
+#endif
+#define MAXHOSTNAMELEN 64
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/poll.h b/x86_64-linux-musl/include/asm-generic/poll.h
new file mode 100644
index 0000000..372bc77
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/poll.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 __ASM_GENERIC_POLL_H
+#define __ASM_GENERIC_POLL_H
+#define POLLIN 0x0001
+#define POLLPRI 0x0002
+#define POLLOUT 0x0004
+#define POLLERR 0x0008
+#define POLLHUP 0x0010
+#define POLLNVAL 0x0020
+#define POLLRDNORM 0x0040
+#define POLLRDBAND 0x0080
+#ifndef POLLWRNORM
+#define POLLWRNORM 0x0100
+#endif
+#ifndef POLLWRBAND
+#define POLLWRBAND 0x0200
+#endif
+#ifndef POLLMSG
+#define POLLMSG 0x0400
+#endif
+#ifndef POLLREMOVE
+#define POLLREMOVE 0x1000
+#endif
+#ifndef POLLRDHUP
+#define POLLRDHUP 0x2000
+#endif
+#define POLLFREE (__force __poll_t) 0x4000
+#define POLL_BUSY_LOOP (__force __poll_t) 0x8000
+struct pollfd {
+  int fd;
+  short events;
+  short revents;
+};
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/posix_types.h b/x86_64-linux-musl/include/asm-generic/posix_types.h
new file mode 100644
index 0000000..4045127
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/posix_types.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 __ASM_GENERIC_POSIX_TYPES_H
+#define __ASM_GENERIC_POSIX_TYPES_H
+#include <asm/bitsperlong.h>
+#ifndef __kernel_long_t
+typedef long __kernel_long_t;
+typedef unsigned long __kernel_ulong_t;
+#endif
+#ifndef __kernel_ino_t
+typedef __kernel_ulong_t __kernel_ino_t;
+#endif
+#ifndef __kernel_mode_t
+typedef unsigned int __kernel_mode_t;
+#endif
+#ifndef __kernel_pid_t
+typedef int __kernel_pid_t;
+#endif
+#ifndef __kernel_ipc_pid_t
+typedef int __kernel_ipc_pid_t;
+#endif
+#ifndef __kernel_uid_t
+typedef unsigned int __kernel_uid_t;
+typedef unsigned int __kernel_gid_t;
+#endif
+#ifndef __kernel_suseconds_t
+typedef __kernel_long_t __kernel_suseconds_t;
+#endif
+#ifndef __kernel_daddr_t
+typedef int __kernel_daddr_t;
+#endif
+#ifndef __kernel_uid32_t
+typedef unsigned int __kernel_uid32_t;
+typedef unsigned int __kernel_gid32_t;
+#endif
+#ifndef __kernel_old_uid_t
+typedef __kernel_uid_t __kernel_old_uid_t;
+typedef __kernel_gid_t __kernel_old_gid_t;
+#endif
+#ifndef __kernel_old_dev_t
+typedef unsigned int __kernel_old_dev_t;
+#endif
+#ifndef __kernel_size_t
+#if __BITS_PER_LONG != 64
+typedef unsigned int __kernel_size_t;
+typedef int __kernel_ssize_t;
+typedef int __kernel_ptrdiff_t;
+#else
+typedef __kernel_ulong_t __kernel_size_t;
+typedef __kernel_long_t __kernel_ssize_t;
+typedef __kernel_long_t __kernel_ptrdiff_t;
+#endif
+#endif
+#ifndef __kernel_fsid_t
+typedef struct {
+  int val[2];
+} __kernel_fsid_t;
+#endif
+typedef __kernel_long_t __kernel_off_t;
+typedef long long __kernel_loff_t;
+typedef __kernel_long_t __kernel_old_time_t;
+typedef __kernel_long_t __kernel_time_t;
+typedef long long __kernel_time64_t;
+typedef __kernel_long_t __kernel_clock_t;
+typedef int __kernel_timer_t;
+typedef int __kernel_clockid_t;
+typedef char * __kernel_caddr_t;
+typedef unsigned short __kernel_uid16_t;
+typedef unsigned short __kernel_gid16_t;
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/resource.h b/x86_64-linux-musl/include/asm-generic/resource.h
new file mode 100644
index 0000000..843910b
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/resource.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_ASM_GENERIC_RESOURCE_H
+#define _UAPI_ASM_GENERIC_RESOURCE_H
+#define RLIMIT_CPU 0
+#define RLIMIT_FSIZE 1
+#define RLIMIT_DATA 2
+#define RLIMIT_STACK 3
+#define RLIMIT_CORE 4
+#ifndef RLIMIT_RSS
+#define RLIMIT_RSS 5
+#endif
+#ifndef RLIMIT_NPROC
+#define RLIMIT_NPROC 6
+#endif
+#ifndef RLIMIT_NOFILE
+#define RLIMIT_NOFILE 7
+#endif
+#ifndef RLIMIT_MEMLOCK
+#define RLIMIT_MEMLOCK 8
+#endif
+#ifndef RLIMIT_AS
+#define RLIMIT_AS 9
+#endif
+#define RLIMIT_LOCKS 10
+#define RLIMIT_SIGPENDING 11
+#define RLIMIT_MSGQUEUE 12
+#define RLIMIT_NICE 13
+#define RLIMIT_RTPRIO 14
+#define RLIMIT_RTTIME 15
+#define RLIM_NLIMITS 16
+#ifndef RLIM_INFINITY
+#define RLIM_INFINITY (~0UL)
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/sembuf.h b/x86_64-linux-musl/include/asm-generic/sembuf.h
new file mode 100644
index 0000000..46306f7
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/sembuf.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 __ASM_GENERIC_SEMBUF_H
+#define __ASM_GENERIC_SEMBUF_H
+#include <asm/bitsperlong.h>
+#include <asm/ipcbuf.h>
+struct semid64_ds {
+  struct ipc64_perm sem_perm;
+#if __BITS_PER_LONG == 64
+  long sem_otime;
+  long sem_ctime;
+#else
+  unsigned long sem_otime;
+  unsigned long sem_otime_high;
+  unsigned long sem_ctime;
+  unsigned long sem_ctime_high;
+#endif
+  unsigned long sem_nsems;
+  unsigned long __unused3;
+  unsigned long __unused4;
+};
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/setup.h b/x86_64-linux-musl/include/asm-generic/setup.h
new file mode 100644
index 0000000..f44a6dd
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/setup.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 __ASM_GENERIC_SETUP_H
+#define __ASM_GENERIC_SETUP_H
+#define COMMAND_LINE_SIZE 512
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/shmbuf.h b/x86_64-linux-musl/include/asm-generic/shmbuf.h
new file mode 100644
index 0000000..067ffbc
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/shmbuf.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 __ASM_GENERIC_SHMBUF_H
+#define __ASM_GENERIC_SHMBUF_H
+#include <asm/bitsperlong.h>
+struct shmid64_ds {
+  struct ipc64_perm shm_perm;
+  size_t shm_segsz;
+#if __BITS_PER_LONG == 64
+  long shm_atime;
+  long shm_dtime;
+  long shm_ctime;
+#else
+  unsigned long shm_atime;
+  unsigned long shm_atime_high;
+  unsigned long shm_dtime;
+  unsigned long shm_dtime_high;
+  unsigned long shm_ctime;
+  unsigned long shm_ctime_high;
+#endif
+  __kernel_pid_t shm_cpid;
+  __kernel_pid_t shm_lpid;
+  unsigned long shm_nattch;
+  unsigned long __unused4;
+  unsigned long __unused5;
+};
+struct shminfo64 {
+  unsigned long shmmax;
+  unsigned long shmmin;
+  unsigned long shmmni;
+  unsigned long shmseg;
+  unsigned long shmall;
+  unsigned long __unused1;
+  unsigned long __unused2;
+  unsigned long __unused3;
+  unsigned long __unused4;
+};
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/siginfo.h b/x86_64-linux-musl/include/asm-generic/siginfo.h
new file mode 100644
index 0000000..f9199e5
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/siginfo.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_ASM_GENERIC_SIGINFO_H
+#define _UAPI_ASM_GENERIC_SIGINFO_H
+#include <linux/compiler.h>
+#include <linux/types.h>
+typedef union sigval {
+  int sival_int;
+  void __user * sival_ptr;
+} sigval_t;
+#define SI_MAX_SIZE 128
+#ifndef __ARCH_SI_BAND_T
+#define __ARCH_SI_BAND_T long
+#endif
+#ifndef __ARCH_SI_CLOCK_T
+#define __ARCH_SI_CLOCK_T __kernel_clock_t
+#endif
+#ifndef __ARCH_SI_ATTRIBUTES
+#define __ARCH_SI_ATTRIBUTES
+#endif
+union __sifields {
+  struct {
+    __kernel_pid_t _pid;
+    __kernel_uid32_t _uid;
+  } _kill;
+  struct {
+    __kernel_timer_t _tid;
+    int _overrun;
+    sigval_t _sigval;
+    int _sys_private;
+  } _timer;
+  struct {
+    __kernel_pid_t _pid;
+    __kernel_uid32_t _uid;
+    sigval_t _sigval;
+  } _rt;
+  struct {
+    __kernel_pid_t _pid;
+    __kernel_uid32_t _uid;
+    int _status;
+    __ARCH_SI_CLOCK_T _utime;
+    __ARCH_SI_CLOCK_T _stime;
+  } _sigchld;
+  struct {
+    void __user * _addr;
+#ifdef __ia64__
+    int _imm;
+    unsigned int _flags;
+    unsigned long _isr;
+#endif
+#define __ADDR_BND_PKEY_PAD (__alignof__(void *) < sizeof(short) ? sizeof(short) : __alignof__(void *))
+    union {
+      int _trapno;
+      short _addr_lsb;
+      struct {
+        char _dummy_bnd[__ADDR_BND_PKEY_PAD];
+        void __user * _lower;
+        void __user * _upper;
+      } _addr_bnd;
+      struct {
+        char _dummy_pkey[__ADDR_BND_PKEY_PAD];
+        __u32 _pkey;
+      } _addr_pkey;
+      struct {
+        unsigned long _data;
+        __u32 _type;
+      } _perf;
+    };
+  } _sigfault;
+  struct {
+    __ARCH_SI_BAND_T _band;
+    int _fd;
+  } _sigpoll;
+  struct {
+    void __user * _call_addr;
+    int _syscall;
+    unsigned int _arch;
+  } _sigsys;
+};
+#ifndef __ARCH_HAS_SWAPPED_SIGINFO
+#define __SIGINFO struct { int si_signo; int si_errno; int si_code; union __sifields _sifields; \
+}
+#else
+#define __SIGINFO struct { int si_signo; int si_code; int si_errno; union __sifields _sifields; \
+}
+#endif
+typedef struct siginfo {
+  union {
+    __SIGINFO;
+    int _si_pad[SI_MAX_SIZE / sizeof(int)];
+  };
+} __ARCH_SI_ATTRIBUTES siginfo_t;
+#define si_pid _sifields._kill._pid
+#define si_uid _sifields._kill._uid
+#define si_tid _sifields._timer._tid
+#define si_overrun _sifields._timer._overrun
+#define si_sys_private _sifields._timer._sys_private
+#define si_status _sifields._sigchld._status
+#define si_utime _sifields._sigchld._utime
+#define si_stime _sifields._sigchld._stime
+#define si_value _sifields._rt._sigval
+#define si_int _sifields._rt._sigval.sival_int
+#define si_ptr _sifields._rt._sigval.sival_ptr
+#define si_addr _sifields._sigfault._addr
+#define si_trapno _sifields._sigfault._trapno
+#define si_addr_lsb _sifields._sigfault._addr_lsb
+#define si_lower _sifields._sigfault._addr_bnd._lower
+#define si_upper _sifields._sigfault._addr_bnd._upper
+#define si_pkey _sifields._sigfault._addr_pkey._pkey
+#define si_perf_data _sifields._sigfault._perf._data
+#define si_perf_type _sifields._sigfault._perf._type
+#define si_band _sifields._sigpoll._band
+#define si_fd _sifields._sigpoll._fd
+#define si_call_addr _sifields._sigsys._call_addr
+#define si_syscall _sifields._sigsys._syscall
+#define si_arch _sifields._sigsys._arch
+#define SI_USER 0
+#define SI_KERNEL 0x80
+#define SI_QUEUE - 1
+#define SI_TIMER - 2
+#define SI_MESGQ - 3
+#define SI_ASYNCIO - 4
+#define SI_SIGIO - 5
+#define SI_TKILL - 6
+#define SI_DETHREAD - 7
+#define SI_ASYNCNL - 60
+#define SI_FROMUSER(siptr) ((siptr)->si_code <= 0)
+#define SI_FROMKERNEL(siptr) ((siptr)->si_code > 0)
+#define ILL_ILLOPC 1
+#define ILL_ILLOPN 2
+#define ILL_ILLADR 3
+#define ILL_ILLTRP 4
+#define ILL_PRVOPC 5
+#define ILL_PRVREG 6
+#define ILL_COPROC 7
+#define ILL_BADSTK 8
+#define ILL_BADIADDR 9
+#define __ILL_BREAK 10
+#define __ILL_BNDMOD 11
+#define NSIGILL 11
+#define FPE_INTDIV 1
+#define FPE_INTOVF 2
+#define FPE_FLTDIV 3
+#define FPE_FLTOVF 4
+#define FPE_FLTUND 5
+#define FPE_FLTRES 6
+#define FPE_FLTINV 7
+#define FPE_FLTSUB 8
+#define __FPE_DECOVF 9
+#define __FPE_DECDIV 10
+#define __FPE_DECERR 11
+#define __FPE_INVASC 12
+#define __FPE_INVDEC 13
+#define FPE_FLTUNK 14
+#define FPE_CONDTRAP 15
+#define NSIGFPE 15
+#define SEGV_MAPERR 1
+#define SEGV_ACCERR 2
+#define SEGV_BNDERR 3
+#ifdef __ia64__
+#define __SEGV_PSTKOVF 4
+#else
+#define SEGV_PKUERR 4
+#endif
+#define SEGV_ACCADI 5
+#define SEGV_ADIDERR 6
+#define SEGV_ADIPERR 7
+#define SEGV_MTEAERR 8
+#define SEGV_MTESERR 9
+#define NSIGSEGV 9
+#define BUS_ADRALN 1
+#define BUS_ADRERR 2
+#define BUS_OBJERR 3
+#define BUS_MCEERR_AR 4
+#define BUS_MCEERR_AO 5
+#define NSIGBUS 5
+#define TRAP_BRKPT 1
+#define TRAP_TRACE 2
+#define TRAP_BRANCH 3
+#define TRAP_HWBKPT 4
+#define TRAP_UNK 5
+#define TRAP_PERF 6
+#define NSIGTRAP 6
+#define CLD_EXITED 1
+#define CLD_KILLED 2
+#define CLD_DUMPED 3
+#define CLD_TRAPPED 4
+#define CLD_STOPPED 5
+#define CLD_CONTINUED 6
+#define NSIGCHLD 6
+#define POLL_IN 1
+#define POLL_OUT 2
+#define POLL_MSG 3
+#define POLL_ERR 4
+#define POLL_PRI 5
+#define POLL_HUP 6
+#define NSIGPOLL 6
+#define SYS_SECCOMP 1
+#define SYS_USER_DISPATCH 2
+#define NSIGSYS 2
+#define EMT_TAGOVF 1
+#define NSIGEMT 1
+#define SIGEV_SIGNAL 0
+#define SIGEV_NONE 1
+#define SIGEV_THREAD 2
+#define SIGEV_THREAD_ID 4
+#ifndef __ARCH_SIGEV_PREAMBLE_SIZE
+#define __ARCH_SIGEV_PREAMBLE_SIZE (sizeof(int) * 2 + sizeof(sigval_t))
+#endif
+#define SIGEV_MAX_SIZE 64
+#define SIGEV_PAD_SIZE ((SIGEV_MAX_SIZE - __ARCH_SIGEV_PREAMBLE_SIZE) / sizeof(int))
+typedef struct sigevent {
+  sigval_t sigev_value;
+  int sigev_signo;
+  int sigev_notify;
+  union {
+    int _pad[SIGEV_PAD_SIZE];
+    int _tid;
+    struct {
+      void(* _function) (sigval_t);
+      void * _attribute;
+    } _sigev_thread;
+  } _sigev_un;
+} sigevent_t;
+#define sigev_notify_function _sigev_un._sigev_thread._function
+#define sigev_notify_attributes _sigev_un._sigev_thread._attribute
+#define sigev_notify_thread_id _sigev_un._tid
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/signal-defs.h b/x86_64-linux-musl/include/asm-generic/signal-defs.h
new file mode 100644
index 0000000..c7e9504
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/signal-defs.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 __ASM_GENERIC_SIGNAL_DEFS_H
+#define __ASM_GENERIC_SIGNAL_DEFS_H
+#include <linux/compiler.h>
+#ifndef SA_NOCLDSTOP
+#define SA_NOCLDSTOP 0x00000001
+#endif
+#ifndef SA_NOCLDWAIT
+#define SA_NOCLDWAIT 0x00000002
+#endif
+#ifndef SA_SIGINFO
+#define SA_SIGINFO 0x00000004
+#endif
+#define SA_UNSUPPORTED 0x00000400
+#define SA_EXPOSE_TAGBITS 0x00000800
+#ifndef SA_ONSTACK
+#define SA_ONSTACK 0x08000000
+#endif
+#ifndef SA_RESTART
+#define SA_RESTART 0x10000000
+#endif
+#ifndef SA_NODEFER
+#define SA_NODEFER 0x40000000
+#endif
+#ifndef SA_RESETHAND
+#define SA_RESETHAND 0x80000000
+#endif
+#define SA_NOMASK SA_NODEFER
+#define SA_ONESHOT SA_RESETHAND
+#ifndef SIG_BLOCK
+#define SIG_BLOCK 0
+#endif
+#ifndef SIG_UNBLOCK
+#define SIG_UNBLOCK 1
+#endif
+#ifndef SIG_SETMASK
+#define SIG_SETMASK 2
+#endif
+#ifndef __ASSEMBLY__
+typedef void __signalfn_t(int);
+typedef __signalfn_t __user * __sighandler_t;
+typedef void __restorefn_t(void);
+typedef __restorefn_t __user * __sigrestore_t;
+#define SIG_DFL ((__force __sighandler_t) 0)
+#define SIG_IGN ((__force __sighandler_t) 1)
+#define SIG_ERR ((__force __sighandler_t) - 1)
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/signal.h b/x86_64-linux-musl/include/asm-generic/signal.h
new file mode 100644
index 0000000..874fece
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/signal.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__ASM_GENERIC_SIGNAL_H
+#define _UAPI__ASM_GENERIC_SIGNAL_H
+#include <linux/types.h>
+#define _KERNEL__NSIG 64
+#define _NSIG_BPW __BITS_PER_LONG
+#define _NSIG_WORDS (_KERNEL__NSIG / _NSIG_BPW)
+#define SIGHUP 1
+#define SIGINT 2
+#define SIGQUIT 3
+#define SIGILL 4
+#define SIGTRAP 5
+#define SIGABRT 6
+#define SIGIOT 6
+#define SIGBUS 7
+#define SIGFPE 8
+#define SIGKILL 9
+#define SIGUSR1 10
+#define SIGSEGV 11
+#define SIGUSR2 12
+#define SIGPIPE 13
+#define SIGALRM 14
+#define SIGTERM 15
+#define SIGSTKFLT 16
+#define SIGCHLD 17
+#define SIGCONT 18
+#define SIGSTOP 19
+#define SIGTSTP 20
+#define SIGTTIN 21
+#define SIGTTOU 22
+#define SIGURG 23
+#define SIGXCPU 24
+#define SIGXFSZ 25
+#define SIGVTALRM 26
+#define SIGPROF 27
+#define SIGWINCH 28
+#define SIGIO 29
+#define SIGPOLL SIGIO
+#define SIGPWR 30
+#define SIGSYS 31
+#define SIGUNUSED 31
+#define __SIGRTMIN 32
+#ifndef __SIGRTMAX
+#define __SIGRTMAX _KERNEL__NSIG
+#endif
+#if !defined(MINSIGSTKSZ) || !defined(SIGSTKSZ)
+#define MINSIGSTKSZ 2048
+#define SIGSTKSZ 8192
+#endif
+#ifndef __ASSEMBLY__
+typedef struct {
+  unsigned long sig[_NSIG_WORDS];
+} sigset_t;
+typedef unsigned long old_sigset_t;
+#include <asm-generic/signal-defs.h>
+#ifdef SA_RESTORER
+#define __ARCH_HAS_SA_RESTORER
+#endif
+struct sigaction {
+  __sighandler_t sa_handler;
+  unsigned long sa_flags;
+#ifdef SA_RESTORER
+  __sigrestore_t sa_restorer;
+#endif
+  sigset_t sa_mask;
+};
+typedef struct sigaltstack {
+  void __user * ss_sp;
+  int ss_flags;
+  size_t ss_size;
+} stack_t;
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/socket.h b/x86_64-linux-musl/include/asm-generic/socket.h
new file mode 100644
index 0000000..6767993
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/socket.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 __ASM_GENERIC_SOCKET_H
+#define __ASM_GENERIC_SOCKET_H
+#include <linux/posix_types.h>
+#include <asm/sockios.h>
+#define SOL_SOCKET 1
+#define SO_DEBUG 1
+#define SO_REUSEADDR 2
+#define SO_TYPE 3
+#define SO_ERROR 4
+#define SO_DONTROUTE 5
+#define SO_BROADCAST 6
+#define SO_SNDBUF 7
+#define SO_RCVBUF 8
+#define SO_SNDBUFFORCE 32
+#define SO_RCVBUFFORCE 33
+#define SO_KEEPALIVE 9
+#define SO_OOBINLINE 10
+#define SO_NO_CHECK 11
+#define SO_PRIORITY 12
+#define SO_LINGER 13
+#define SO_BSDCOMPAT 14
+#define SO_REUSEPORT 15
+#ifndef SO_PASSCRED
+#define SO_PASSCRED 16
+#define SO_PEERCRED 17
+#define SO_RCVLOWAT 18
+#define SO_SNDLOWAT 19
+#define SO_RCVTIMEO_OLD 20
+#define SO_SNDTIMEO_OLD 21
+#endif
+#define SO_SECURITY_AUTHENTICATION 22
+#define SO_SECURITY_ENCRYPTION_TRANSPORT 23
+#define SO_SECURITY_ENCRYPTION_NETWORK 24
+#define SO_BINDTODEVICE 25
+#define SO_ATTACH_FILTER 26
+#define SO_DETACH_FILTER 27
+#define SO_GET_FILTER SO_ATTACH_FILTER
+#define SO_PEERNAME 28
+#define SO_ACCEPTCONN 30
+#define SO_PEERSEC 31
+#define SO_PASSSEC 34
+#define SO_MARK 36
+#define SO_PROTOCOL 38
+#define SO_DOMAIN 39
+#define SO_RXQ_OVFL 40
+#define SO_WIFI_STATUS 41
+#define SCM_WIFI_STATUS SO_WIFI_STATUS
+#define SO_PEEK_OFF 42
+#define SO_NOFCS 43
+#define SO_LOCK_FILTER 44
+#define SO_SELECT_ERR_QUEUE 45
+#define SO_BUSY_POLL 46
+#define SO_MAX_PACING_RATE 47
+#define SO_BPF_EXTENSIONS 48
+#define SO_INCOMING_CPU 49
+#define SO_ATTACH_BPF 50
+#define SO_DETACH_BPF SO_DETACH_FILTER
+#define SO_ATTACH_REUSEPORT_CBPF 51
+#define SO_ATTACH_REUSEPORT_EBPF 52
+#define SO_CNX_ADVICE 53
+#define SCM_TIMESTAMPING_OPT_STATS 54
+#define SO_MEMINFO 55
+#define SO_INCOMING_NAPI_ID 56
+#define SO_COOKIE 57
+#define SCM_TIMESTAMPING_PKTINFO 58
+#define SO_PEERGROUPS 59
+#define SO_ZEROCOPY 60
+#define SO_TXTIME 61
+#define SCM_TXTIME SO_TXTIME
+#define SO_BINDTOIFINDEX 62
+#define SO_TIMESTAMP_OLD 29
+#define SO_TIMESTAMPNS_OLD 35
+#define SO_TIMESTAMPING_OLD 37
+#define SO_TIMESTAMP_NEW 63
+#define SO_TIMESTAMPNS_NEW 64
+#define SO_TIMESTAMPING_NEW 65
+#define SO_RCVTIMEO_NEW 66
+#define SO_SNDTIMEO_NEW 67
+#define SO_DETACH_REUSEPORT_BPF 68
+#define SO_PREFER_BUSY_POLL 69
+#define SO_BUSY_POLL_BUDGET 70
+#define SO_NETNS_COOKIE 71
+#define SO_BUF_LOCK 72
+#define SO_RESERVE_MEM 73
+#if __BITS_PER_LONG == 64 || defined(__x86_64__) && defined(__ILP32__)
+#define SO_TIMESTAMP SO_TIMESTAMP_OLD
+#define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
+#define SO_TIMESTAMPING SO_TIMESTAMPING_OLD
+#define SO_RCVTIMEO SO_RCVTIMEO_OLD
+#define SO_SNDTIMEO SO_SNDTIMEO_OLD
+#else
+#define SO_TIMESTAMP (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW)
+#define SO_TIMESTAMPNS (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW)
+#define SO_TIMESTAMPING (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW)
+#define SO_RCVTIMEO (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_RCVTIMEO_OLD : SO_RCVTIMEO_NEW)
+#define SO_SNDTIMEO (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_SNDTIMEO_OLD : SO_SNDTIMEO_NEW)
+#endif
+#define SCM_TIMESTAMP SO_TIMESTAMP
+#define SCM_TIMESTAMPNS SO_TIMESTAMPNS
+#define SCM_TIMESTAMPING SO_TIMESTAMPING
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/sockios.h b/x86_64-linux-musl/include/asm-generic/sockios.h
new file mode 100644
index 0000000..afbc6ad
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/sockios.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 __ASM_GENERIC_SOCKIOS_H
+#define __ASM_GENERIC_SOCKIOS_H
+#define FIOSETOWN 0x8901
+#define SIOCSPGRP 0x8902
+#define FIOGETOWN 0x8903
+#define SIOCGPGRP 0x8904
+#define SIOCATMARK 0x8905
+#define SIOCGSTAMP_OLD 0x8906
+#define SIOCGSTAMPNS_OLD 0x8907
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/stat.h b/x86_64-linux-musl/include/asm-generic/stat.h
new file mode 100644
index 0000000..9cc00f2
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/stat.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 __ASM_GENERIC_STAT_H
+#define __ASM_GENERIC_STAT_H
+#include <asm/bitsperlong.h>
+#define STAT_HAVE_NSEC 1
+struct stat {
+  unsigned long st_dev;
+  unsigned long st_ino;
+  unsigned int st_mode;
+  unsigned int st_nlink;
+  unsigned int st_uid;
+  unsigned int st_gid;
+  unsigned long st_rdev;
+  unsigned long __pad1;
+  long st_size;
+  int st_blksize;
+  int __pad2;
+  long st_blocks;
+  long st_atime;
+  unsigned long st_atime_nsec;
+  long st_mtime;
+  unsigned long st_mtime_nsec;
+  long st_ctime;
+  unsigned long st_ctime_nsec;
+  unsigned int __unused4;
+  unsigned int __unused5;
+};
+#if __BITS_PER_LONG != 64 || defined(__ARCH_WANT_STAT64)
+struct stat64 {
+  unsigned long long st_dev;
+  unsigned long long st_ino;
+  unsigned int st_mode;
+  unsigned int st_nlink;
+  unsigned int st_uid;
+  unsigned int st_gid;
+  unsigned long long st_rdev;
+  unsigned long long __pad1;
+  long long st_size;
+  int st_blksize;
+  int __pad2;
+  long long st_blocks;
+  int st_atime;
+  unsigned int st_atime_nsec;
+  int st_mtime;
+  unsigned int st_mtime_nsec;
+  int st_ctime;
+  unsigned int st_ctime_nsec;
+  unsigned int __unused4;
+  unsigned int __unused5;
+};
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/statfs.h b/x86_64-linux-musl/include/asm-generic/statfs.h
new file mode 100644
index 0000000..7184ce9
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/statfs.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_GENERIC_STATFS_H
+#define _UAPI_GENERIC_STATFS_H
+#include <linux/types.h>
+#ifndef __statfs_word
+#if __BITS_PER_LONG == 64
+#define __statfs_word __kernel_long_t
+#else
+#define __statfs_word __u32
+#endif
+#endif
+struct statfs {
+  __statfs_word f_type;
+  __statfs_word f_bsize;
+  __statfs_word f_blocks;
+  __statfs_word f_bfree;
+  __statfs_word f_bavail;
+  __statfs_word f_files;
+  __statfs_word f_ffree;
+  __kernel_fsid_t f_fsid;
+  __statfs_word f_namelen;
+  __statfs_word f_frsize;
+  __statfs_word f_flags;
+  __statfs_word f_spare[4];
+};
+#ifndef ARCH_PACK_STATFS64
+#define ARCH_PACK_STATFS64
+#endif
+struct statfs64 {
+  __statfs_word f_type;
+  __statfs_word f_bsize;
+  __u64 f_blocks;
+  __u64 f_bfree;
+  __u64 f_bavail;
+  __u64 f_files;
+  __u64 f_ffree;
+  __kernel_fsid_t f_fsid;
+  __statfs_word f_namelen;
+  __statfs_word f_frsize;
+  __statfs_word f_flags;
+  __statfs_word f_spare[4];
+} ARCH_PACK_STATFS64;
+#ifndef ARCH_PACK_COMPAT_STATFS64
+#define ARCH_PACK_COMPAT_STATFS64
+#endif
+struct compat_statfs64 {
+  __u32 f_type;
+  __u32 f_bsize;
+  __u64 f_blocks;
+  __u64 f_bfree;
+  __u64 f_bavail;
+  __u64 f_files;
+  __u64 f_ffree;
+  __kernel_fsid_t f_fsid;
+  __u32 f_namelen;
+  __u32 f_frsize;
+  __u32 f_flags;
+  __u32 f_spare[4];
+} ARCH_PACK_COMPAT_STATFS64;
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/swab.h b/x86_64-linux-musl/include/asm-generic/swab.h
new file mode 100644
index 0000000..b6119db
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/swab.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 _ASM_GENERIC_SWAB_H
+#define _ASM_GENERIC_SWAB_H
+#include <asm/bitsperlong.h>
+#if __BITS_PER_LONG == 32
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define __SWAB_64_THRU_32__
+#endif
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/termbits.h b/x86_64-linux-musl/include/asm-generic/termbits.h
new file mode 100644
index 0000000..b592964
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/termbits.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 __ASM_GENERIC_TERMBITS_H
+#define __ASM_GENERIC_TERMBITS_H
+#include <linux/posix_types.h>
+typedef unsigned char cc_t;
+typedef unsigned int speed_t;
+typedef unsigned int tcflag_t;
+#define NCCS 19
+struct termios {
+  tcflag_t c_iflag;
+  tcflag_t c_oflag;
+  tcflag_t c_cflag;
+  tcflag_t c_lflag;
+  cc_t c_line;
+  cc_t c_cc[NCCS];
+};
+struct termios2 {
+  tcflag_t c_iflag;
+  tcflag_t c_oflag;
+  tcflag_t c_cflag;
+  tcflag_t c_lflag;
+  cc_t c_line;
+  cc_t c_cc[NCCS];
+  speed_t c_ispeed;
+  speed_t c_ospeed;
+};
+struct ktermios {
+  tcflag_t c_iflag;
+  tcflag_t c_oflag;
+  tcflag_t c_cflag;
+  tcflag_t c_lflag;
+  cc_t c_line;
+  cc_t c_cc[NCCS];
+  speed_t c_ispeed;
+  speed_t c_ospeed;
+};
+#define VINTR 0
+#define VQUIT 1
+#define VERASE 2
+#define VKILL 3
+#define VEOF 4
+#define VTIME 5
+#define VMIN 6
+#define VSWTC 7
+#define VSTART 8
+#define VSTOP 9
+#define VSUSP 10
+#define VEOL 11
+#define VREPRINT 12
+#define VDISCARD 13
+#define VWERASE 14
+#define VLNEXT 15
+#define VEOL2 16
+#define IGNBRK 0000001
+#define BRKINT 0000002
+#define IGNPAR 0000004
+#define PARMRK 0000010
+#define INPCK 0000020
+#define ISTRIP 0000040
+#define INLCR 0000100
+#define IGNCR 0000200
+#define ICRNL 0000400
+#define IUCLC 0001000
+#define IXON 0002000
+#define IXANY 0004000
+#define IXOFF 0010000
+#define IMAXBEL 0020000
+#define IUTF8 0040000
+#define OPOST 0000001
+#define OLCUC 0000002
+#define ONLCR 0000004
+#define OCRNL 0000010
+#define ONOCR 0000020
+#define ONLRET 0000040
+#define OFILL 0000100
+#define OFDEL 0000200
+#define NLDLY 0000400
+#define NL0 0000000
+#define NL1 0000400
+#define CRDLY 0003000
+#define CR0 0000000
+#define CR1 0001000
+#define CR2 0002000
+#define CR3 0003000
+#define TABDLY 0014000
+#define TAB0 0000000
+#define TAB1 0004000
+#define TAB2 0010000
+#define TAB3 0014000
+#define XTABS 0014000
+#define BSDLY 0020000
+#define BS0 0000000
+#define BS1 0020000
+#define VTDLY 0040000
+#define VT0 0000000
+#define VT1 0040000
+#define FFDLY 0100000
+#define FF0 0000000
+#define FF1 0100000
+#define CBAUD 0010017
+#define B0 0000000
+#define B50 0000001
+#define B75 0000002
+#define B110 0000003
+#define B134 0000004
+#define B150 0000005
+#define B200 0000006
+#define B300 0000007
+#define B600 0000010
+#define B1200 0000011
+#define B1800 0000012
+#define B2400 0000013
+#define B4800 0000014
+#define B9600 0000015
+#define B19200 0000016
+#define B38400 0000017
+#define EXTA B19200
+#define EXTB B38400
+#define CSIZE 0000060
+#define CS5 0000000
+#define CS6 0000020
+#define CS7 0000040
+#define CS8 0000060
+#define CSTOPB 0000100
+#define CREAD 0000200
+#define PARENB 0000400
+#define PARODD 0001000
+#define HUPCL 0002000
+#define CLOCAL 0004000
+#define CBAUDEX 0010000
+#define BOTHER 0010000
+#define B57600 0010001
+#define B115200 0010002
+#define B230400 0010003
+#define B460800 0010004
+#define B500000 0010005
+#define B576000 0010006
+#define B921600 0010007
+#define B1000000 0010010
+#define B1152000 0010011
+#define B1500000 0010012
+#define B2000000 0010013
+#define B2500000 0010014
+#define B3000000 0010015
+#define B3500000 0010016
+#define B4000000 0010017
+#define CIBAUD 002003600000
+#define CMSPAR 010000000000
+#define CRTSCTS 020000000000
+#define IBSHIFT 16
+#define ISIG 0000001
+#define ICANON 0000002
+#define XCASE 0000004
+#define ECHO 0000010
+#define ECHOE 0000020
+#define ECHOK 0000040
+#define ECHONL 0000100
+#define NOFLSH 0000200
+#define TOSTOP 0000400
+#define ECHOCTL 0001000
+#define ECHOPRT 0002000
+#define ECHOKE 0004000
+#define FLUSHO 0010000
+#define PENDIN 0040000
+#define IEXTEN 0100000
+#define EXTPROC 0200000
+#define TCOOFF 0
+#define TCOON 1
+#define TCIOFF 2
+#define TCION 3
+#define TCIFLUSH 0
+#define TCOFLUSH 1
+#define TCIOFLUSH 2
+#define TCSANOW 0
+#define TCSADRAIN 1
+#define TCSAFLUSH 2
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/termios.h b/x86_64-linux-musl/include/asm-generic/termios.h
new file mode 100644
index 0000000..77b260b
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/termios.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_ASM_GENERIC_TERMIOS_H
+#define _UAPI_ASM_GENERIC_TERMIOS_H
+#include <asm/termbits.h>
+#include <asm/ioctls.h>
+struct winsize {
+  unsigned short ws_row;
+  unsigned short ws_col;
+  unsigned short ws_xpixel;
+  unsigned short ws_ypixel;
+};
+#define NCC 8
+struct termio {
+  unsigned short c_iflag;
+  unsigned short c_oflag;
+  unsigned short c_cflag;
+  unsigned short c_lflag;
+  unsigned char c_line;
+  unsigned char c_cc[NCC];
+};
+#define TIOCM_LE 0x001
+#define TIOCM_DTR 0x002
+#define TIOCM_RTS 0x004
+#define TIOCM_ST 0x008
+#define TIOCM_SR 0x010
+#define TIOCM_CTS 0x020
+#define TIOCM_CAR 0x040
+#define TIOCM_RNG 0x080
+#define TIOCM_DSR 0x100
+#define TIOCM_CD TIOCM_CAR
+#define TIOCM_RI TIOCM_RNG
+#define TIOCM_OUT1 0x2000
+#define TIOCM_OUT2 0x4000
+#define TIOCM_LOOP 0x8000
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/types.h b/x86_64-linux-musl/include/asm-generic/types.h
new file mode 100644
index 0000000..ea6e7df
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/types.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 _ASM_GENERIC_TYPES_H
+#define _ASM_GENERIC_TYPES_H
+#include <asm-generic/int-ll64.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/ucontext.h b/x86_64-linux-musl/include/asm-generic/ucontext.h
new file mode 100644
index 0000000..17d8f70
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/ucontext.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 __ASM_GENERIC_UCONTEXT_H
+#define __ASM_GENERIC_UCONTEXT_H
+struct ucontext {
+  unsigned long uc_flags;
+  struct ucontext * uc_link;
+  stack_t uc_stack;
+  struct sigcontext uc_mcontext;
+  sigset_t uc_sigmask;
+};
+#endif
diff --git a/x86_64-linux-musl/include/asm-generic/unistd.h b/x86_64-linux-musl/include/asm-generic/unistd.h
new file mode 100644
index 0000000..1e14ee5
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-generic/unistd.h
@@ -0,0 +1,453 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/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/bitsperlong.h>
+#ifndef __SYSCALL
+#define __SYSCALL(x,y)
+#endif
+#if __BITS_PER_LONG == 32 || defined(__SYSCALL_COMPAT)
+#define __SC_3264(_nr,_32,_64) __SYSCALL(_nr, _32)
+#else
+#define __SC_3264(_nr,_32,_64) __SYSCALL(_nr, _64)
+#endif
+#ifdef __SYSCALL_COMPAT
+#define __SC_COMP(_nr,_sys,_comp) __SYSCALL(_nr, _comp)
+#define __SC_COMP_3264(_nr,_32,_64,_comp) __SYSCALL(_nr, _comp)
+#else
+#define __SC_COMP(_nr,_sys,_comp) __SYSCALL(_nr, _sys)
+#define __SC_COMP_3264(_nr,_32,_64,_comp) __SC_3264(_nr, _32, _64)
+#endif
+#define __NR_io_setup 0
+#define __NR_io_destroy 1
+#define __NR_io_submit 2
+#define __NR_io_cancel 3
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_io_getevents 4
+#endif
+#define __NR_setxattr 5
+#define __NR_lsetxattr 6
+#define __NR_fsetxattr 7
+#define __NR_getxattr 8
+#define __NR_lgetxattr 9
+#define __NR_fgetxattr 10
+#define __NR_listxattr 11
+#define __NR_llistxattr 12
+#define __NR_flistxattr 13
+#define __NR_removexattr 14
+#define __NR_lremovexattr 15
+#define __NR_fremovexattr 16
+#define __NR_getcwd 17
+#define __NR_lookup_dcookie 18
+#define __NR_eventfd2 19
+#define __NR_epoll_create1 20
+#define __NR_epoll_ctl 21
+#define __NR_epoll_pwait 22
+#define __NR_dup 23
+#define __NR_dup3 24
+#define __NR3264_fcntl 25
+#define __NR_inotify_init1 26
+#define __NR_inotify_add_watch 27
+#define __NR_inotify_rm_watch 28
+#define __NR_ioctl 29
+#define __NR_ioprio_set 30
+#define __NR_ioprio_get 31
+#define __NR_flock 32
+#define __NR_mknodat 33
+#define __NR_mkdirat 34
+#define __NR_unlinkat 35
+#define __NR_symlinkat 36
+#define __NR_linkat 37
+#ifdef __ARCH_WANT_RENAMEAT
+#define __NR_renameat 38
+#endif
+#define __NR_umount2 39
+#define __NR_mount 40
+#define __NR_pivot_root 41
+#define __NR_nfsservctl 42
+#define __NR3264_statfs 43
+#define __NR3264_fstatfs 44
+#define __NR3264_truncate 45
+#define __NR3264_ftruncate 46
+#define __NR_fallocate 47
+#define __NR_faccessat 48
+#define __NR_chdir 49
+#define __NR_fchdir 50
+#define __NR_chroot 51
+#define __NR_fchmod 52
+#define __NR_fchmodat 53
+#define __NR_fchownat 54
+#define __NR_fchown 55
+#define __NR_openat 56
+#define __NR_close 57
+#define __NR_vhangup 58
+#define __NR_pipe2 59
+#define __NR_quotactl 60
+#define __NR_getdents64 61
+#define __NR3264_lseek 62
+#define __NR_read 63
+#define __NR_write 64
+#define __NR_readv 65
+#define __NR_writev 66
+#define __NR_pread64 67
+#define __NR_pwrite64 68
+#define __NR_preadv 69
+#define __NR_pwritev 70
+#define __NR3264_sendfile 71
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_pselect6 72
+#define __NR_ppoll 73
+#endif
+#define __NR_signalfd4 74
+#define __NR_vmsplice 75
+#define __NR_splice 76
+#define __NR_tee 77
+#define __NR_readlinkat 78
+#if defined(__ARCH_WANT_NEW_STAT) || defined(__ARCH_WANT_STAT64)
+#define __NR3264_fstatat 79
+#define __NR3264_fstat 80
+#endif
+#define __NR_sync 81
+#define __NR_fsync 82
+#define __NR_fdatasync 83
+#ifdef __ARCH_WANT_SYNC_FILE_RANGE2
+#define __NR_sync_file_range2 84
+#else
+#define __NR_sync_file_range 84
+#endif
+#define __NR_timerfd_create 85
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_timerfd_settime 86
+#define __NR_timerfd_gettime 87
+#endif
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_utimensat 88
+#endif
+#define __NR_acct 89
+#define __NR_capget 90
+#define __NR_capset 91
+#define __NR_personality 92
+#define __NR_exit 93
+#define __NR_exit_group 94
+#define __NR_waitid 95
+#define __NR_set_tid_address 96
+#define __NR_unshare 97
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_futex 98
+#endif
+#define __NR_set_robust_list 99
+#define __NR_get_robust_list 100
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_nanosleep 101
+#endif
+#define __NR_getitimer 102
+#define __NR_setitimer 103
+#define __NR_kexec_load 104
+#define __NR_init_module 105
+#define __NR_delete_module 106
+#define __NR_timer_create 107
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_timer_gettime 108
+#endif
+#define __NR_timer_getoverrun 109
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_timer_settime 110
+#endif
+#define __NR_timer_delete 111
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_clock_settime 112
+#define __NR_clock_gettime 113
+#define __NR_clock_getres 114
+#define __NR_clock_nanosleep 115
+#endif
+#define __NR_syslog 116
+#define __NR_ptrace 117
+#define __NR_sched_setparam 118
+#define __NR_sched_setscheduler 119
+#define __NR_sched_getscheduler 120
+#define __NR_sched_getparam 121
+#define __NR_sched_setaffinity 122
+#define __NR_sched_getaffinity 123
+#define __NR_sched_yield 124
+#define __NR_sched_get_priority_max 125
+#define __NR_sched_get_priority_min 126
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_sched_rr_get_interval 127
+#endif
+#define __NR_restart_syscall 128
+#define __NR_kill 129
+#define __NR_tkill 130
+#define __NR_tgkill 131
+#define __NR_sigaltstack 132
+#define __NR_rt_sigsuspend 133
+#define __NR_rt_sigaction 134
+#define __NR_rt_sigprocmask 135
+#define __NR_rt_sigpending 136
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_rt_sigtimedwait 137
+#endif
+#define __NR_rt_sigqueueinfo 138
+#define __NR_rt_sigreturn 139
+#define __NR_setpriority 140
+#define __NR_getpriority 141
+#define __NR_reboot 142
+#define __NR_setregid 143
+#define __NR_setgid 144
+#define __NR_setreuid 145
+#define __NR_setuid 146
+#define __NR_setresuid 147
+#define __NR_getresuid 148
+#define __NR_setresgid 149
+#define __NR_getresgid 150
+#define __NR_setfsuid 151
+#define __NR_setfsgid 152
+#define __NR_times 153
+#define __NR_setpgid 154
+#define __NR_getpgid 155
+#define __NR_getsid 156
+#define __NR_setsid 157
+#define __NR_getgroups 158
+#define __NR_setgroups 159
+#define __NR_uname 160
+#define __NR_sethostname 161
+#define __NR_setdomainname 162
+#ifdef __ARCH_WANT_SET_GET_RLIMIT
+#define __NR_getrlimit 163
+#define __NR_setrlimit 164
+#endif
+#define __NR_getrusage 165
+#define __NR_umask 166
+#define __NR_prctl 167
+#define __NR_getcpu 168
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_gettimeofday 169
+#define __NR_settimeofday 170
+#define __NR_adjtimex 171
+#endif
+#define __NR_getpid 172
+#define __NR_getppid 173
+#define __NR_getuid 174
+#define __NR_geteuid 175
+#define __NR_getgid 176
+#define __NR_getegid 177
+#define __NR_gettid 178
+#define __NR_sysinfo 179
+#define __NR_mq_open 180
+#define __NR_mq_unlink 181
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_mq_timedsend 182
+#define __NR_mq_timedreceive 183
+#endif
+#define __NR_mq_notify 184
+#define __NR_mq_getsetattr 185
+#define __NR_msgget 186
+#define __NR_msgctl 187
+#define __NR_msgrcv 188
+#define __NR_msgsnd 189
+#define __NR_semget 190
+#define __NR_semctl 191
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_semtimedop 192
+#endif
+#define __NR_semop 193
+#define __NR_shmget 194
+#define __NR_shmctl 195
+#define __NR_shmat 196
+#define __NR_shmdt 197
+#define __NR_socket 198
+#define __NR_socketpair 199
+#define __NR_bind 200
+#define __NR_listen 201
+#define __NR_accept 202
+#define __NR_connect 203
+#define __NR_getsockname 204
+#define __NR_getpeername 205
+#define __NR_sendto 206
+#define __NR_recvfrom 207
+#define __NR_setsockopt 208
+#define __NR_getsockopt 209
+#define __NR_shutdown 210
+#define __NR_sendmsg 211
+#define __NR_recvmsg 212
+#define __NR_readahead 213
+#define __NR_brk 214
+#define __NR_munmap 215
+#define __NR_mremap 216
+#define __NR_add_key 217
+#define __NR_request_key 218
+#define __NR_keyctl 219
+#define __NR_clone 220
+#define __NR_execve 221
+#define __NR3264_mmap 222
+#define __NR3264_fadvise64 223
+#ifndef __ARCH_NOMMU
+#define __NR_swapon 224
+#define __NR_swapoff 225
+#define __NR_mprotect 226
+#define __NR_msync 227
+#define __NR_mlock 228
+#define __NR_munlock 229
+#define __NR_mlockall 230
+#define __NR_munlockall 231
+#define __NR_mincore 232
+#define __NR_madvise 233
+#define __NR_remap_file_pages 234
+#define __NR_mbind 235
+#define __NR_get_mempolicy 236
+#define __NR_set_mempolicy 237
+#define __NR_migrate_pages 238
+#define __NR_move_pages 239
+#endif
+#define __NR_rt_tgsigqueueinfo 240
+#define __NR_perf_event_open 241
+#define __NR_accept4 242
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_recvmmsg 243
+#endif
+#define __NR_arch_specific_syscall 244
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_wait4 260
+#endif
+#define __NR_prlimit64 261
+#define __NR_fanotify_init 262
+#define __NR_fanotify_mark 263
+#define __NR_name_to_handle_at 264
+#define __NR_open_by_handle_at 265
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_clock_adjtime 266
+#endif
+#define __NR_syncfs 267
+#define __NR_setns 268
+#define __NR_sendmmsg 269
+#define __NR_process_vm_readv 270
+#define __NR_process_vm_writev 271
+#define __NR_kcmp 272
+#define __NR_finit_module 273
+#define __NR_sched_setattr 274
+#define __NR_sched_getattr 275
+#define __NR_renameat2 276
+#define __NR_seccomp 277
+#define __NR_getrandom 278
+#define __NR_memfd_create 279
+#define __NR_bpf 280
+#define __NR_execveat 281
+#define __NR_userfaultfd 282
+#define __NR_membarrier 283
+#define __NR_mlock2 284
+#define __NR_copy_file_range 285
+#define __NR_preadv2 286
+#define __NR_pwritev2 287
+#define __NR_pkey_mprotect 288
+#define __NR_pkey_alloc 289
+#define __NR_pkey_free 290
+#define __NR_statx 291
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
+#define __NR_io_pgetevents 292
+#endif
+#define __NR_rseq 293
+#define __NR_kexec_file_load 294
+#if __BITS_PER_LONG == 32
+#define __NR_clock_gettime64 403
+#define __NR_clock_settime64 404
+#define __NR_clock_adjtime64 405
+#define __NR_clock_getres_time64 406
+#define __NR_clock_nanosleep_time64 407
+#define __NR_timer_gettime64 408
+#define __NR_timer_settime64 409
+#define __NR_timerfd_gettime64 410
+#define __NR_timerfd_settime64 411
+#define __NR_utimensat_time64 412
+#define __NR_pselect6_time64 413
+#define __NR_ppoll_time64 414
+#define __NR_io_pgetevents_time64 416
+#define __NR_recvmmsg_time64 417
+#define __NR_mq_timedsend_time64 418
+#define __NR_mq_timedreceive_time64 419
+#define __NR_semtimedop_time64 420
+#define __NR_rt_sigtimedwait_time64 421
+#define __NR_futex_time64 422
+#define __NR_sched_rr_get_interval_time64 423
+#endif
+#define __NR_pidfd_send_signal 424
+#define __NR_io_uring_setup 425
+#define __NR_io_uring_enter 426
+#define __NR_io_uring_register 427
+#define __NR_open_tree 428
+#define __NR_move_mount 429
+#define __NR_fsopen 430
+#define __NR_fsconfig 431
+#define __NR_fsmount 432
+#define __NR_fspick 433
+#define __NR_pidfd_open 434
+#ifdef __ARCH_WANT_SYS_CLONE3
+#define __NR_clone3 435
+#endif
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
+#define __NR_process_madvise 440
+#define __NR_epoll_pwait2 441
+#define __NR_mount_setattr 442
+#define __NR_quotactl_fd 443
+#define __NR_landlock_create_ruleset 444
+#define __NR_landlock_add_rule 445
+#define __NR_landlock_restrict_self 446
+#ifdef __ARCH_WANT_MEMFD_SECRET
+#define __NR_memfd_secret 447
+#endif
+#define __NR_process_mrelease 448
+#define __NR_futex_waitv 449
+#undef __NR_syscalls
+#define __NR_syscalls 450
+#if __BITS_PER_LONG == 64 && !defined(__SYSCALL_COMPAT)
+#define __NR_fcntl __NR3264_fcntl
+#define __NR_statfs __NR3264_statfs
+#define __NR_fstatfs __NR3264_fstatfs
+#define __NR_truncate __NR3264_truncate
+#define __NR_ftruncate __NR3264_ftruncate
+#define __NR_lseek __NR3264_lseek
+#define __NR_sendfile __NR3264_sendfile
+#if defined(__ARCH_WANT_NEW_STAT) || defined(__ARCH_WANT_STAT64)
+#define __NR_newfstatat __NR3264_fstatat
+#define __NR_fstat __NR3264_fstat
+#endif
+#define __NR_mmap __NR3264_mmap
+#define __NR_fadvise64 __NR3264_fadvise64
+#ifdef __NR3264_stat
+#define __NR_stat __NR3264_stat
+#define __NR_lstat __NR3264_lstat
+#endif
+#else
+#define __NR_fcntl64 __NR3264_fcntl
+#define __NR_statfs64 __NR3264_statfs
+#define __NR_fstatfs64 __NR3264_fstatfs
+#define __NR_truncate64 __NR3264_truncate
+#define __NR_ftruncate64 __NR3264_ftruncate
+#define __NR_llseek __NR3264_lseek
+#define __NR_sendfile64 __NR3264_sendfile
+#if defined(__ARCH_WANT_NEW_STAT) || defined(__ARCH_WANT_STAT64)
+#define __NR_fstatat64 __NR3264_fstatat
+#define __NR_fstat64 __NR3264_fstat
+#endif
+#define __NR_mmap2 __NR3264_mmap
+#define __NR_fadvise64_64 __NR3264_fadvise64
+#ifdef __NR3264_stat
+#define __NR_stat64 __NR3264_stat
+#define __NR_lstat64 __NR3264_lstat
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/a.out.h b/x86_64-linux-musl/include/asm-x86/asm/a.out.h
new file mode 100644
index 0000000..3a1b845
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/a.out.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 _ASM_X86_A_OUT_H
+#define _ASM_X86_A_OUT_H
+struct exec {
+  unsigned int a_info;
+  unsigned a_text;
+  unsigned a_data;
+  unsigned a_bss;
+  unsigned a_syms;
+  unsigned a_entry;
+  unsigned a_trsize;
+  unsigned a_drsize;
+};
+#define N_TRSIZE(a) ((a).a_trsize)
+#define N_DRSIZE(a) ((a).a_drsize)
+#define N_SYMSIZE(a) ((a).a_syms)
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/auxvec.h b/x86_64-linux-musl/include/asm-x86/asm/auxvec.h
new file mode 100644
index 0000000..dd86783
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/auxvec.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 _ASM_X86_AUXVEC_H
+#define _ASM_X86_AUXVEC_H
+#ifdef __i386__
+#define AT_SYSINFO 32
+#endif
+#define AT_SYSINFO_EHDR 33
+#define AT_VECTOR_SIZE_ARCH 3
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/bitsperlong.h b/x86_64-linux-musl/include/asm-x86/asm/bitsperlong.h
new file mode 100644
index 0000000..7eca377
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/bitsperlong.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 __ASM_X86_BITSPERLONG_H
+#define __ASM_X86_BITSPERLONG_H
+#if defined(__x86_64__) && !defined(__ILP32__)
+#define __BITS_PER_LONG 64
+#else
+#define __BITS_PER_LONG 32
+#endif
+#include <asm-generic/bitsperlong.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/boot.h b/x86_64-linux-musl/include/asm-x86/asm/boot.h
new file mode 100644
index 0000000..7cbb691
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/boot.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_ASM_X86_BOOT_H
+#define _UAPI_ASM_X86_BOOT_H
+#define NORMAL_VGA 0xffff
+#define EXTENDED_VGA 0xfffe
+#define ASK_VGA 0xfffd
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/bootparam.h b/x86_64-linux-musl/include/asm-x86/asm/bootparam.h
new file mode 100644
index 0000000..7401135
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/bootparam.h
@@ -0,0 +1,195 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_X86_BOOTPARAM_H
+#define _ASM_X86_BOOTPARAM_H
+#define SETUP_NONE 0
+#define SETUP_E820_EXT 1
+#define SETUP_DTB 2
+#define SETUP_PCI 3
+#define SETUP_EFI 4
+#define SETUP_APPLE_PROPERTIES 5
+#define SETUP_JAILHOUSE 6
+#define SETUP_INDIRECT (1 << 31)
+#define SETUP_TYPE_MAX (SETUP_INDIRECT | SETUP_JAILHOUSE)
+#define RAMDISK_IMAGE_START_MASK 0x07FF
+#define RAMDISK_PROMPT_FLAG 0x8000
+#define RAMDISK_LOAD_FLAG 0x4000
+#define LOADED_HIGH (1 << 0)
+#define KASLR_FLAG (1 << 1)
+#define QUIET_FLAG (1 << 5)
+#define KEEP_SEGMENTS (1 << 6)
+#define CAN_USE_HEAP (1 << 7)
+#define XLF_KERNEL_64 (1 << 0)
+#define XLF_CAN_BE_LOADED_ABOVE_4G (1 << 1)
+#define XLF_EFI_HANDOVER_32 (1 << 2)
+#define XLF_EFI_HANDOVER_64 (1 << 3)
+#define XLF_EFI_KEXEC (1 << 4)
+#define XLF_5LEVEL (1 << 5)
+#define XLF_5LEVEL_ENABLED (1 << 6)
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#include <linux/screen_info.h>
+#include <linux/apm_bios.h>
+#include <linux/edd.h>
+#include <asm/ist.h>
+#include <video/edid.h>
+struct setup_data {
+  __u64 next;
+  __u32 type;
+  __u32 len;
+  __u8 data[0];
+};
+struct setup_indirect {
+  __u32 type;
+  __u32 reserved;
+  __u64 len;
+  __u64 addr;
+};
+struct setup_header {
+  __u8 setup_sects;
+  __u16 root_flags;
+  __u32 syssize;
+  __u16 ram_size;
+  __u16 vid_mode;
+  __u16 root_dev;
+  __u16 boot_flag;
+  __u16 jump;
+  __u32 header;
+  __u16 version;
+  __u32 realmode_swtch;
+  __u16 start_sys_seg;
+  __u16 kernel_version;
+  __u8 type_of_loader;
+  __u8 loadflags;
+  __u16 setup_move_size;
+  __u32 code32_start;
+  __u32 ramdisk_image;
+  __u32 ramdisk_size;
+  __u32 bootsect_kludge;
+  __u16 heap_end_ptr;
+  __u8 ext_loader_ver;
+  __u8 ext_loader_type;
+  __u32 cmd_line_ptr;
+  __u32 initrd_addr_max;
+  __u32 kernel_alignment;
+  __u8 relocatable_kernel;
+  __u8 min_alignment;
+  __u16 xloadflags;
+  __u32 cmdline_size;
+  __u32 hardware_subarch;
+  __u64 hardware_subarch_data;
+  __u32 payload_offset;
+  __u32 payload_length;
+  __u64 setup_data;
+  __u64 pref_address;
+  __u32 init_size;
+  __u32 handover_offset;
+  __u32 kernel_info_offset;
+} __attribute__((packed));
+struct sys_desc_table {
+  __u16 length;
+  __u8 table[14];
+};
+struct olpc_ofw_header {
+  __u32 ofw_magic;
+  __u32 ofw_version;
+  __u32 cif_handler;
+  __u32 irq_desc_table;
+} __attribute__((packed));
+struct efi_info {
+  __u32 efi_loader_signature;
+  __u32 efi_systab;
+  __u32 efi_memdesc_size;
+  __u32 efi_memdesc_version;
+  __u32 efi_memmap;
+  __u32 efi_memmap_size;
+  __u32 efi_systab_hi;
+  __u32 efi_memmap_hi;
+};
+#define E820_MAX_ENTRIES_ZEROPAGE 128
+struct boot_e820_entry {
+  __u64 addr;
+  __u64 size;
+  __u32 type;
+} __attribute__((packed));
+#define JAILHOUSE_SETUP_REQUIRED_VERSION 1
+struct jailhouse_setup_data {
+  struct {
+    __u16 version;
+    __u16 compatible_version;
+  } __attribute__((packed)) hdr;
+  struct {
+    __u16 pm_timer_address;
+    __u16 num_cpus;
+    __u64 pci_mmconfig_base;
+    __u32 tsc_khz;
+    __u32 apic_khz;
+    __u8 standard_ioapic;
+    __u8 cpu_ids[255];
+  } __attribute__((packed)) v1;
+  struct {
+    __u32 flags;
+  } __attribute__((packed)) v2;
+} __attribute__((packed));
+struct boot_params {
+  struct screen_info screen_info;
+  struct apm_bios_info apm_bios_info;
+  __u8 _pad2[4];
+  __u64 tboot_addr;
+  struct ist_info ist_info;
+  __u64 acpi_rsdp_addr;
+  __u8 _pad3[8];
+  __u8 hd0_info[16];
+  __u8 hd1_info[16];
+  struct sys_desc_table sys_desc_table;
+  struct olpc_ofw_header olpc_ofw_header;
+  __u32 ext_ramdisk_image;
+  __u32 ext_ramdisk_size;
+  __u32 ext_cmd_line_ptr;
+  __u8 _pad4[116];
+  struct edid_info edid_info;
+  struct efi_info efi_info;
+  __u32 alt_mem_k;
+  __u32 scratch;
+  __u8 e820_entries;
+  __u8 eddbuf_entries;
+  __u8 edd_mbr_sig_buf_entries;
+  __u8 kbd_status;
+  __u8 secure_boot;
+  __u8 _pad5[2];
+  __u8 sentinel;
+  __u8 _pad6[1];
+  struct setup_header hdr;
+  __u8 _pad7[0x290 - 0x1f1 - sizeof(struct setup_header)];
+  __u32 edd_mbr_sig_buffer[EDD_MBR_SIG_MAX];
+  struct boot_e820_entry e820_table[E820_MAX_ENTRIES_ZEROPAGE];
+  __u8 _pad8[48];
+  struct edd_info eddbuf[EDDMAXNR];
+  __u8 _pad9[276];
+} __attribute__((packed));
+enum x86_hardware_subarch {
+  X86_SUBARCH_PC = 0,
+  X86_SUBARCH_LGUEST,
+  X86_SUBARCH_XEN,
+  X86_SUBARCH_INTEL_MID,
+  X86_SUBARCH_CE4100,
+  X86_NR_SUBARCHS,
+};
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/bpf_perf_event.h b/x86_64-linux-musl/include/asm-x86/asm/bpf_perf_event.h
new file mode 100644
index 0000000..fa7bc48
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/bpf_perf_event.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-generic/bpf_perf_event.h>
diff --git a/x86_64-linux-musl/include/asm-x86/asm/byteorder.h b/x86_64-linux-musl/include/asm-x86/asm/byteorder.h
new file mode 100644
index 0000000..db3ddff
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/byteorder.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 _ASM_X86_BYTEORDER_H
+#define _ASM_X86_BYTEORDER_H
+#include <linux/byteorder/little_endian.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/debugreg.h b/x86_64-linux-musl/include/asm-x86/asm/debugreg.h
new file mode 100644
index 0000000..360f432
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/debugreg.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_ASM_X86_DEBUGREG_H
+#define _UAPI_ASM_X86_DEBUGREG_H
+#define DR_FIRSTADDR 0
+#define DR_LASTADDR 3
+#define DR_STATUS 6
+#define DR_CONTROL 7
+#define DR6_RESERVED (0xFFFF0FF0)
+#define DR_TRAP0 (0x1)
+#define DR_TRAP1 (0x2)
+#define DR_TRAP2 (0x4)
+#define DR_TRAP3 (0x8)
+#define DR_TRAP_BITS (DR_TRAP0 | DR_TRAP1 | DR_TRAP2 | DR_TRAP3)
+#define DR_BUS_LOCK (0x800)
+#define DR_STEP (0x4000)
+#define DR_SWITCH (0x8000)
+#define DR_CONTROL_SHIFT 16
+#define DR_CONTROL_SIZE 4
+#define DR_RW_EXECUTE (0x0)
+#define DR_RW_WRITE (0x1)
+#define DR_RW_READ (0x3)
+#define DR_LEN_1 (0x0)
+#define DR_LEN_2 (0x4)
+#define DR_LEN_4 (0xC)
+#define DR_LEN_8 (0x8)
+#define DR_LOCAL_ENABLE_SHIFT 0
+#define DR_GLOBAL_ENABLE_SHIFT 1
+#define DR_LOCAL_ENABLE (0x1)
+#define DR_GLOBAL_ENABLE (0x2)
+#define DR_ENABLE_SIZE 2
+#define DR_LOCAL_ENABLE_MASK (0x55)
+#define DR_GLOBAL_ENABLE_MASK (0xAA)
+#ifdef __i386__
+#define DR_CONTROL_RESERVED (0xFC00)
+#else
+#define DR_CONTROL_RESERVED (0xFFFFFFFF0000FC00UL)
+#endif
+#define DR_LOCAL_SLOWDOWN (0x100)
+#define DR_GLOBAL_SLOWDOWN (0x200)
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/e820.h b/x86_64-linux-musl/include/asm-x86/asm/e820.h
new file mode 100644
index 0000000..8f00c5c
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/e820.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_ASM_X86_E820_H
+#define _UAPI_ASM_X86_E820_H
+#define E820MAP 0x2d0
+#define E820MAX 128
+#define E820_X_MAX E820MAX
+#define E820NR 0x1e8
+#define E820_RAM 1
+#define E820_RESERVED 2
+#define E820_ACPI 3
+#define E820_NVS 4
+#define E820_UNUSABLE 5
+#define E820_PMEM 7
+#define E820_PRAM 12
+#define E820_RESERVED_KERN 128
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+struct e820entry {
+  __u64 addr;
+  __u64 size;
+  __u32 type;
+} __attribute__((packed));
+struct e820map {
+  __u32 nr_map;
+  struct e820entry map[E820_X_MAX];
+};
+#define ISA_START_ADDRESS 0xa0000
+#define ISA_END_ADDRESS 0x100000
+#define BIOS_BEGIN 0x000a0000
+#define BIOS_END 0x00100000
+#define BIOS_ROM_BASE 0xffe00000
+#define BIOS_ROM_END 0xffffffff
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/errno.h b/x86_64-linux-musl/include/asm-x86/asm/errno.h
new file mode 100644
index 0000000..392cd94
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/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-generic/errno.h>
diff --git a/x86_64-linux-musl/include/asm-x86/asm/fcntl.h b/x86_64-linux-musl/include/asm-x86/asm/fcntl.h
new file mode 100644
index 0000000..518d3a7
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/fcntl.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-generic/fcntl.h>
diff --git a/x86_64-linux-musl/include/asm-x86/asm/hw_breakpoint.h b/x86_64-linux-musl/include/asm-x86/asm/hw_breakpoint.h
new file mode 100644
index 0000000..878419c
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/hw_breakpoint.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/x86_64-linux-musl/include/asm-x86/asm/hwcap2.h b/x86_64-linux-musl/include/asm-x86/asm/hwcap2.h
new file mode 100644
index 0000000..9f715c9
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/hwcap2.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 _ASM_X86_HWCAP2_H
+#define _ASM_X86_HWCAP2_H
+#include <linux/const.h>
+#define HWCAP2_RING3MWAIT _BITUL(0)
+#define HWCAP2_FSGSBASE _BITUL(1)
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/ioctl.h b/x86_64-linux-musl/include/asm-x86/asm/ioctl.h
new file mode 100644
index 0000000..7b7bd37
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/ioctl.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-generic/ioctl.h>
diff --git a/x86_64-linux-musl/include/asm-x86/asm/ioctls.h b/x86_64-linux-musl/include/asm-x86/asm/ioctls.h
new file mode 100644
index 0000000..0c66935
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/ioctls.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-generic/ioctls.h>
diff --git a/x86_64-linux-musl/include/asm-x86/asm/ipcbuf.h b/x86_64-linux-musl/include/asm-x86/asm/ipcbuf.h
new file mode 100644
index 0000000..0021f14
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/ipcbuf.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-generic/ipcbuf.h>
diff --git a/x86_64-linux-musl/include/asm-x86/asm/ist.h b/x86_64-linux-musl/include/asm-x86/asm/ist.h
new file mode 100644
index 0000000..9648952
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/ist.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_ASM_X86_IST_H
+#define _UAPI_ASM_X86_IST_H
+#include <linux/types.h>
+struct ist_info {
+  __u32 signature;
+  __u32 command;
+  __u32 event;
+  __u32 perf_level;
+};
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/kvm.h b/x86_64-linux-musl/include/asm-x86/asm/kvm.h
new file mode 100644
index 0000000..fd0f5f8
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/kvm.h
@@ -0,0 +1,410 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_X86_KVM_H
+#define _ASM_X86_KVM_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define KVM_PIO_PAGE_OFFSET 1
+#define KVM_COALESCED_MMIO_PAGE_OFFSET 2
+#define KVM_DIRTY_LOG_PAGE_OFFSET 64
+#define DE_VECTOR 0
+#define DB_VECTOR 1
+#define BP_VECTOR 3
+#define OF_VECTOR 4
+#define BR_VECTOR 5
+#define UD_VECTOR 6
+#define NM_VECTOR 7
+#define DF_VECTOR 8
+#define TS_VECTOR 10
+#define NP_VECTOR 11
+#define SS_VECTOR 12
+#define GP_VECTOR 13
+#define PF_VECTOR 14
+#define MF_VECTOR 16
+#define AC_VECTOR 17
+#define MC_VECTOR 18
+#define XM_VECTOR 19
+#define VE_VECTOR 20
+#define __KVM_HAVE_PIT
+#define __KVM_HAVE_IOAPIC
+#define __KVM_HAVE_IRQ_LINE
+#define __KVM_HAVE_MSI
+#define __KVM_HAVE_USER_NMI
+#define __KVM_HAVE_GUEST_DEBUG
+#define __KVM_HAVE_MSIX
+#define __KVM_HAVE_MCE
+#define __KVM_HAVE_PIT_STATE2
+#define __KVM_HAVE_XEN_HVM
+#define __KVM_HAVE_VCPU_EVENTS
+#define __KVM_HAVE_DEBUGREGS
+#define __KVM_HAVE_XSAVE
+#define __KVM_HAVE_XCRS
+#define __KVM_HAVE_READONLY_MEM
+#define KVM_NR_INTERRUPTS 256
+struct kvm_memory_alias {
+  __u32 slot;
+  __u32 flags;
+  __u64 guest_phys_addr;
+  __u64 memory_size;
+  __u64 target_phys_addr;
+};
+struct kvm_pic_state {
+  __u8 last_irr;
+  __u8 irr;
+  __u8 imr;
+  __u8 isr;
+  __u8 priority_add;
+  __u8 irq_base;
+  __u8 read_reg_select;
+  __u8 poll;
+  __u8 special_mask;
+  __u8 init_state;
+  __u8 auto_eoi;
+  __u8 rotate_on_auto_eoi;
+  __u8 special_fully_nested_mode;
+  __u8 init4;
+  __u8 elcr;
+  __u8 elcr_mask;
+};
+#define KVM_IOAPIC_NUM_PINS 24
+struct kvm_ioapic_state {
+  __u64 base_address;
+  __u32 ioregsel;
+  __u32 id;
+  __u32 irr;
+  __u32 pad;
+  union {
+    __u64 bits;
+    struct {
+      __u8 vector;
+      __u8 delivery_mode : 3;
+      __u8 dest_mode : 1;
+      __u8 delivery_status : 1;
+      __u8 polarity : 1;
+      __u8 remote_irr : 1;
+      __u8 trig_mode : 1;
+      __u8 mask : 1;
+      __u8 reserve : 7;
+      __u8 reserved[4];
+      __u8 dest_id;
+    } fields;
+  } redirtbl[KVM_IOAPIC_NUM_PINS];
+};
+#define KVM_IRQCHIP_PIC_MASTER 0
+#define KVM_IRQCHIP_PIC_SLAVE 1
+#define KVM_IRQCHIP_IOAPIC 2
+#define KVM_NR_IRQCHIPS 3
+#define KVM_RUN_X86_SMM (1 << 0)
+#define KVM_RUN_X86_BUS_LOCK (1 << 1)
+struct kvm_regs {
+  __u64 rax, rbx, rcx, rdx;
+  __u64 rsi, rdi, rsp, rbp;
+  __u64 r8, r9, r10, r11;
+  __u64 r12, r13, r14, r15;
+  __u64 rip, rflags;
+};
+#define KVM_APIC_REG_SIZE 0x400
+struct kvm_lapic_state {
+  char regs[KVM_APIC_REG_SIZE];
+};
+struct kvm_segment {
+  __u64 base;
+  __u32 limit;
+  __u16 selector;
+  __u8 type;
+  __u8 present, dpl, db, s, l, g, avl;
+  __u8 unusable;
+  __u8 padding;
+};
+struct kvm_dtable {
+  __u64 base;
+  __u16 limit;
+  __u16 padding[3];
+};
+struct kvm_sregs {
+  struct kvm_segment cs, ds, es, fs, gs, ss;
+  struct kvm_segment tr, ldt;
+  struct kvm_dtable gdt, idt;
+  __u64 cr0, cr2, cr3, cr4, cr8;
+  __u64 efer;
+  __u64 apic_base;
+  __u64 interrupt_bitmap[(KVM_NR_INTERRUPTS + 63) / 64];
+};
+struct kvm_sregs2 {
+  struct kvm_segment cs, ds, es, fs, gs, ss;
+  struct kvm_segment tr, ldt;
+  struct kvm_dtable gdt, idt;
+  __u64 cr0, cr2, cr3, cr4, cr8;
+  __u64 efer;
+  __u64 apic_base;
+  __u64 flags;
+  __u64 pdptrs[4];
+};
+#define KVM_SREGS2_FLAGS_PDPTRS_VALID 1
+struct kvm_fpu {
+  __u8 fpr[8][16];
+  __u16 fcw;
+  __u16 fsw;
+  __u8 ftwx;
+  __u8 pad1;
+  __u16 last_opcode;
+  __u64 last_ip;
+  __u64 last_dp;
+  __u8 xmm[16][16];
+  __u32 mxcsr;
+  __u32 pad2;
+};
+struct kvm_msr_entry {
+  __u32 index;
+  __u32 reserved;
+  __u64 data;
+};
+struct kvm_msrs {
+  __u32 nmsrs;
+  __u32 pad;
+  struct kvm_msr_entry entries[0];
+};
+struct kvm_msr_list {
+  __u32 nmsrs;
+  __u32 indices[0];
+};
+#define KVM_MSR_FILTER_MAX_BITMAP_SIZE 0x600
+struct kvm_msr_filter_range {
+#define KVM_MSR_FILTER_READ (1 << 0)
+#define KVM_MSR_FILTER_WRITE (1 << 1)
+  __u32 flags;
+  __u32 nmsrs;
+  __u32 base;
+  __u8 * bitmap;
+};
+#define KVM_MSR_FILTER_MAX_RANGES 16
+struct kvm_msr_filter {
+#define KVM_MSR_FILTER_DEFAULT_ALLOW (0 << 0)
+#define KVM_MSR_FILTER_DEFAULT_DENY (1 << 0)
+  __u32 flags;
+  struct kvm_msr_filter_range ranges[KVM_MSR_FILTER_MAX_RANGES];
+};
+struct kvm_cpuid_entry {
+  __u32 function;
+  __u32 eax;
+  __u32 ebx;
+  __u32 ecx;
+  __u32 edx;
+  __u32 padding;
+};
+struct kvm_cpuid {
+  __u32 nent;
+  __u32 padding;
+  struct kvm_cpuid_entry entries[0];
+};
+struct kvm_cpuid_entry2 {
+  __u32 function;
+  __u32 index;
+  __u32 flags;
+  __u32 eax;
+  __u32 ebx;
+  __u32 ecx;
+  __u32 edx;
+  __u32 padding[3];
+};
+#define KVM_CPUID_FLAG_SIGNIFCANT_INDEX (1 << 0)
+#define KVM_CPUID_FLAG_STATEFUL_FUNC (1 << 1)
+#define KVM_CPUID_FLAG_STATE_READ_NEXT (1 << 2)
+struct kvm_cpuid2 {
+  __u32 nent;
+  __u32 padding;
+  struct kvm_cpuid_entry2 entries[0];
+};
+struct kvm_pit_channel_state {
+  __u32 count;
+  __u16 latched_count;
+  __u8 count_latched;
+  __u8 status_latched;
+  __u8 status;
+  __u8 read_state;
+  __u8 write_state;
+  __u8 write_latch;
+  __u8 rw_mode;
+  __u8 mode;
+  __u8 bcd;
+  __u8 gate;
+  __s64 count_load_time;
+};
+struct kvm_debug_exit_arch {
+  __u32 exception;
+  __u32 pad;
+  __u64 pc;
+  __u64 dr6;
+  __u64 dr7;
+};
+#define KVM_GUESTDBG_USE_SW_BP 0x00010000
+#define KVM_GUESTDBG_USE_HW_BP 0x00020000
+#define KVM_GUESTDBG_INJECT_DB 0x00040000
+#define KVM_GUESTDBG_INJECT_BP 0x00080000
+#define KVM_GUESTDBG_BLOCKIRQ 0x00100000
+struct kvm_guest_debug_arch {
+  __u64 debugreg[8];
+};
+struct kvm_pit_state {
+  struct kvm_pit_channel_state channels[3];
+};
+#define KVM_PIT_FLAGS_HPET_LEGACY 0x00000001
+struct kvm_pit_state2 {
+  struct kvm_pit_channel_state channels[3];
+  __u32 flags;
+  __u32 reserved[9];
+};
+struct kvm_reinject_control {
+  __u8 pit_reinject;
+  __u8 reserved[31];
+};
+#define KVM_VCPUEVENT_VALID_NMI_PENDING 0x00000001
+#define KVM_VCPUEVENT_VALID_SIPI_VECTOR 0x00000002
+#define KVM_VCPUEVENT_VALID_SHADOW 0x00000004
+#define KVM_VCPUEVENT_VALID_SMM 0x00000008
+#define KVM_VCPUEVENT_VALID_PAYLOAD 0x00000010
+#define KVM_X86_SHADOW_INT_MOV_SS 0x01
+#define KVM_X86_SHADOW_INT_STI 0x02
+struct kvm_vcpu_events {
+  struct {
+    __u8 injected;
+    __u8 nr;
+    __u8 has_error_code;
+    __u8 pending;
+    __u32 error_code;
+  } exception;
+  struct {
+    __u8 injected;
+    __u8 nr;
+    __u8 soft;
+    __u8 shadow;
+  } interrupt;
+  struct {
+    __u8 injected;
+    __u8 pending;
+    __u8 masked;
+    __u8 pad;
+  } nmi;
+  __u32 sipi_vector;
+  __u32 flags;
+  struct {
+    __u8 smm;
+    __u8 pending;
+    __u8 smm_inside_nmi;
+    __u8 latched_init;
+  } smi;
+  __u8 reserved[27];
+  __u8 exception_has_payload;
+  __u64 exception_payload;
+};
+struct kvm_debugregs {
+  __u64 db[4];
+  __u64 dr6;
+  __u64 dr7;
+  __u64 flags;
+  __u64 reserved[9];
+};
+struct kvm_xsave {
+  __u32 region[1024];
+};
+#define KVM_MAX_XCRS 16
+struct kvm_xcr {
+  __u32 xcr;
+  __u32 reserved;
+  __u64 value;
+};
+struct kvm_xcrs {
+  __u32 nr_xcrs;
+  __u32 flags;
+  struct kvm_xcr xcrs[KVM_MAX_XCRS];
+  __u64 padding[16];
+};
+#define KVM_SYNC_X86_REGS (1UL << 0)
+#define KVM_SYNC_X86_SREGS (1UL << 1)
+#define KVM_SYNC_X86_EVENTS (1UL << 2)
+#define KVM_SYNC_X86_VALID_FIELDS (KVM_SYNC_X86_REGS | KVM_SYNC_X86_SREGS | KVM_SYNC_X86_EVENTS)
+struct kvm_sync_regs {
+  struct kvm_regs regs;
+  struct kvm_sregs sregs;
+  struct kvm_vcpu_events events;
+};
+#define KVM_X86_QUIRK_LINT0_REENABLED (1 << 0)
+#define KVM_X86_QUIRK_CD_NW_CLEARED (1 << 1)
+#define KVM_X86_QUIRK_LAPIC_MMIO_HOLE (1 << 2)
+#define KVM_X86_QUIRK_OUT_7E_INC_RIP (1 << 3)
+#define KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT (1 << 4)
+#define KVM_STATE_NESTED_FORMAT_VMX 0
+#define KVM_STATE_NESTED_FORMAT_SVM 1
+#define KVM_STATE_NESTED_GUEST_MODE 0x00000001
+#define KVM_STATE_NESTED_RUN_PENDING 0x00000002
+#define KVM_STATE_NESTED_EVMCS 0x00000004
+#define KVM_STATE_NESTED_MTF_PENDING 0x00000008
+#define KVM_STATE_NESTED_GIF_SET 0x00000100
+#define KVM_STATE_NESTED_SMM_GUEST_MODE 0x00000001
+#define KVM_STATE_NESTED_SMM_VMXON 0x00000002
+#define KVM_STATE_NESTED_VMX_VMCS_SIZE 0x1000
+#define KVM_STATE_NESTED_SVM_VMCB_SIZE 0x1000
+#define KVM_STATE_VMX_PREEMPTION_TIMER_DEADLINE 0x00000001
+struct kvm_vmx_nested_state_data {
+  __u8 vmcs12[KVM_STATE_NESTED_VMX_VMCS_SIZE];
+  __u8 shadow_vmcs12[KVM_STATE_NESTED_VMX_VMCS_SIZE];
+};
+struct kvm_vmx_nested_state_hdr {
+  __u64 vmxon_pa;
+  __u64 vmcs12_pa;
+  struct {
+    __u16 flags;
+  } smm;
+  __u16 pad;
+  __u32 flags;
+  __u64 preemption_timer_deadline;
+};
+struct kvm_svm_nested_state_data {
+  __u8 vmcb12[KVM_STATE_NESTED_SVM_VMCB_SIZE];
+};
+struct kvm_svm_nested_state_hdr {
+  __u64 vmcb_pa;
+};
+struct kvm_nested_state {
+  __u16 flags;
+  __u16 format;
+  __u32 size;
+  union {
+    struct kvm_vmx_nested_state_hdr vmx;
+    struct kvm_svm_nested_state_hdr svm;
+    __u8 pad[120];
+  } hdr;
+  union {
+    struct kvm_vmx_nested_state_data vmx[0];
+    struct kvm_svm_nested_state_data svm[0];
+  } data;
+};
+struct kvm_pmu_event_filter {
+  __u32 action;
+  __u32 nevents;
+  __u32 fixed_counter_bitmap;
+  __u32 flags;
+  __u32 pad[4];
+  __u64 events[0];
+};
+#define KVM_PMU_EVENT_ALLOW 0
+#define KVM_PMU_EVENT_DENY 1
+#define KVM_VCPU_TSC_CTRL 0
+#define KVM_VCPU_TSC_OFFSET 0
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/kvm_para.h b/x86_64-linux-musl/include/asm-x86/asm/kvm_para.h
new file mode 100644
index 0000000..dd72af0
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/kvm_para.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_ASM_X86_KVM_PARA_H
+#define _UAPI_ASM_X86_KVM_PARA_H
+#include <linux/types.h>
+#define KVM_CPUID_SIGNATURE 0x40000000
+#define KVM_SIGNATURE "KVMKVMKVM\0\0\0"
+#define KVM_CPUID_FEATURES 0x40000001
+#define KVM_FEATURE_CLOCKSOURCE 0
+#define KVM_FEATURE_NOP_IO_DELAY 1
+#define KVM_FEATURE_MMU_OP 2
+#define KVM_FEATURE_CLOCKSOURCE2 3
+#define KVM_FEATURE_ASYNC_PF 4
+#define KVM_FEATURE_STEAL_TIME 5
+#define KVM_FEATURE_PV_EOI 6
+#define KVM_FEATURE_PV_UNHALT 7
+#define KVM_FEATURE_PV_TLB_FLUSH 9
+#define KVM_FEATURE_ASYNC_PF_VMEXIT 10
+#define KVM_FEATURE_PV_SEND_IPI 11
+#define KVM_FEATURE_POLL_CONTROL 12
+#define KVM_FEATURE_PV_SCHED_YIELD 13
+#define KVM_FEATURE_ASYNC_PF_INT 14
+#define KVM_FEATURE_MSI_EXT_DEST_ID 15
+#define KVM_FEATURE_HC_MAP_GPA_RANGE 16
+#define KVM_FEATURE_MIGRATION_CONTROL 17
+#define KVM_HINTS_REALTIME 0
+#define KVM_FEATURE_CLOCKSOURCE_STABLE_BIT 24
+#define MSR_KVM_WALL_CLOCK 0x11
+#define MSR_KVM_SYSTEM_TIME 0x12
+#define KVM_MSR_ENABLED 1
+#define MSR_KVM_WALL_CLOCK_NEW 0x4b564d00
+#define MSR_KVM_SYSTEM_TIME_NEW 0x4b564d01
+#define MSR_KVM_ASYNC_PF_EN 0x4b564d02
+#define MSR_KVM_STEAL_TIME 0x4b564d03
+#define MSR_KVM_PV_EOI_EN 0x4b564d04
+#define MSR_KVM_POLL_CONTROL 0x4b564d05
+#define MSR_KVM_ASYNC_PF_INT 0x4b564d06
+#define MSR_KVM_ASYNC_PF_ACK 0x4b564d07
+#define MSR_KVM_MIGRATION_CONTROL 0x4b564d08
+struct kvm_steal_time {
+  __u64 steal;
+  __u32 version;
+  __u32 flags;
+  __u8 preempted;
+  __u8 u8_pad[3];
+  __u32 pad[11];
+};
+#define KVM_VCPU_PREEMPTED (1 << 0)
+#define KVM_VCPU_FLUSH_TLB (1 << 1)
+#define KVM_CLOCK_PAIRING_WALLCLOCK 0
+struct kvm_clock_pairing {
+  __s64 sec;
+  __s64 nsec;
+  __u64 tsc;
+  __u32 flags;
+  __u32 pad[9];
+};
+#define KVM_STEAL_ALIGNMENT_BITS 5
+#define KVM_STEAL_VALID_BITS ((- 1ULL << (KVM_STEAL_ALIGNMENT_BITS + 1)))
+#define KVM_STEAL_RESERVED_MASK (((1 << KVM_STEAL_ALIGNMENT_BITS) - 1) << 1)
+#define KVM_MAX_MMU_OP_BATCH 32
+#define KVM_ASYNC_PF_ENABLED (1 << 0)
+#define KVM_ASYNC_PF_SEND_ALWAYS (1 << 1)
+#define KVM_ASYNC_PF_DELIVERY_AS_PF_VMEXIT (1 << 2)
+#define KVM_ASYNC_PF_DELIVERY_AS_INT (1 << 3)
+#define KVM_ASYNC_PF_VEC_MASK GENMASK(7, 0)
+#define KVM_MIGRATION_READY (1 << 0)
+#define KVM_MAP_GPA_RANGE_PAGE_SZ_4K 0
+#define KVM_MAP_GPA_RANGE_PAGE_SZ_2M (1 << 0)
+#define KVM_MAP_GPA_RANGE_PAGE_SZ_1G (1 << 1)
+#define KVM_MAP_GPA_RANGE_ENC_STAT(n) (n << 4)
+#define KVM_MAP_GPA_RANGE_ENCRYPTED KVM_MAP_GPA_RANGE_ENC_STAT(1)
+#define KVM_MAP_GPA_RANGE_DECRYPTED KVM_MAP_GPA_RANGE_ENC_STAT(0)
+#define KVM_MMU_OP_WRITE_PTE 1
+#define KVM_MMU_OP_FLUSH_TLB 2
+#define KVM_MMU_OP_RELEASE_PT 3
+struct kvm_mmu_op_header {
+  __u32 op;
+  __u32 pad;
+};
+struct kvm_mmu_op_write_pte {
+  struct kvm_mmu_op_header header;
+  __u64 pte_phys;
+  __u64 pte_val;
+};
+struct kvm_mmu_op_flush_tlb {
+  struct kvm_mmu_op_header header;
+};
+struct kvm_mmu_op_release_pt {
+  struct kvm_mmu_op_header header;
+  __u64 pt_phys;
+};
+#define KVM_PV_REASON_PAGE_NOT_PRESENT 1
+#define KVM_PV_REASON_PAGE_READY 2
+struct kvm_vcpu_pv_apf_data {
+  __u32 flags;
+  __u32 token;
+  __u8 pad[56];
+  __u32 enabled;
+};
+#define KVM_PV_EOI_BIT 0
+#define KVM_PV_EOI_MASK (0x1 << KVM_PV_EOI_BIT)
+#define KVM_PV_EOI_ENABLED KVM_PV_EOI_MASK
+#define KVM_PV_EOI_DISABLED 0x0
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/kvm_perf.h b/x86_64-linux-musl/include/asm-x86/asm/kvm_perf.h
new file mode 100644
index 0000000..c5c8f8e
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/kvm_perf.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 _ASM_X86_KVM_PERF_H
+#define _ASM_X86_KVM_PERF_H
+#include <asm/svm.h>
+#include <asm/vmx.h>
+#include <asm/kvm.h>
+#define DECODE_STR_LEN 20
+#define VCPU_ID "vcpu_id"
+#define KVM_ENTRY_TRACE "kvm:kvm_entry"
+#define KVM_EXIT_TRACE "kvm:kvm_exit"
+#define KVM_EXIT_REASON "exit_reason"
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/ldt.h b/x86_64-linux-musl/include/asm-x86/asm/ldt.h
new file mode 100644
index 0000000..a98aedf
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/ldt.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 _ASM_X86_LDT_H
+#define _ASM_X86_LDT_H
+#define LDT_ENTRIES 8192
+#define LDT_ENTRY_SIZE 8
+#ifndef __ASSEMBLY__
+struct user_desc {
+  unsigned int entry_number;
+  unsigned int base_addr;
+  unsigned int limit;
+  unsigned int seg_32bit : 1;
+  unsigned int contents : 2;
+  unsigned int read_exec_only : 1;
+  unsigned int limit_in_pages : 1;
+  unsigned int seg_not_present : 1;
+  unsigned int useable : 1;
+#ifdef __x86_64__
+  unsigned int lm : 1;
+#endif
+};
+#define MODIFY_LDT_CONTENTS_DATA 0
+#define MODIFY_LDT_CONTENTS_STACK 1
+#define MODIFY_LDT_CONTENTS_CODE 2
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/mce.h b/x86_64-linux-musl/include/asm-x86/asm/mce.h
new file mode 100644
index 0000000..359af57
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/mce.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 _UAPI_ASM_X86_MCE_H
+#define _UAPI_ASM_X86_MCE_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+struct mce {
+  __u64 status;
+  __u64 misc;
+  __u64 addr;
+  __u64 mcgstatus;
+  __u64 ip;
+  __u64 tsc;
+  __u64 time;
+  __u8 cpuvendor;
+  __u8 inject_flags;
+  __u8 severity;
+  __u8 pad;
+  __u32 cpuid;
+  __u8 cs;
+  __u8 bank;
+  __u8 cpu;
+  __u8 finished;
+  __u32 extcpu;
+  __u32 socketid;
+  __u32 apicid;
+  __u64 mcgcap;
+  __u64 synd;
+  __u64 ipid;
+  __u64 ppin;
+  __u32 microcode;
+  __u64 kflags;
+};
+#define MCE_GET_RECORD_LEN _IOR('M', 1, int)
+#define MCE_GET_LOG_LEN _IOR('M', 2, int)
+#define MCE_GETCLEAR_FLAGS _IOR('M', 3, int)
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/mman.h b/x86_64-linux-musl/include/asm-x86/asm/mman.h
new file mode 100644
index 0000000..1061a6f
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/mman.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 _ASM_X86_MMAN_H
+#define _ASM_X86_MMAN_H
+#define MAP_32BIT 0x40
+#include <asm-generic/mman.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/msgbuf.h b/x86_64-linux-musl/include/asm-x86/asm/msgbuf.h
new file mode 100644
index 0000000..b100b20
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/msgbuf.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 __ASM_X64_MSGBUF_H
+#define __ASM_X64_MSGBUF_H
+#if !defined(__x86_64__) || !defined(__ILP32__)
+#include <asm-generic/msgbuf.h>
+#else
+#include <asm/ipcbuf.h>
+struct msqid64_ds {
+  struct ipc64_perm msg_perm;
+  __kernel_long_t msg_stime;
+  __kernel_long_t msg_rtime;
+  __kernel_long_t msg_ctime;
+  __kernel_ulong_t msg_cbytes;
+  __kernel_ulong_t msg_qnum;
+  __kernel_ulong_t msg_qbytes;
+  __kernel_pid_t msg_lspid;
+  __kernel_pid_t msg_lrpid;
+  __kernel_ulong_t __unused4;
+  __kernel_ulong_t __unused5;
+};
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/msr.h b/x86_64-linux-musl/include/asm-x86/asm/msr.h
new file mode 100644
index 0000000..c772838
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/msr.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_ASM_X86_MSR_H
+#define _UAPI_ASM_X86_MSR_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define X86_IOC_RDMSR_REGS _IOWR('c', 0xA0, __u32[8])
+#define X86_IOC_WRMSR_REGS _IOWR('c', 0xA1, __u32[8])
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/mtrr.h b/x86_64-linux-musl/include/asm-x86/asm/mtrr.h
new file mode 100644
index 0000000..c709a70
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/mtrr.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_ASM_X86_MTRR_H
+#define _UAPI_ASM_X86_MTRR_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#include <linux/errno.h>
+#define MTRR_IOCTL_BASE 'M'
+#ifdef __i386__
+struct mtrr_sentry {
+  unsigned long base;
+  unsigned int size;
+  unsigned int type;
+};
+struct mtrr_gentry {
+  unsigned int regnum;
+  unsigned long base;
+  unsigned int size;
+  unsigned int type;
+};
+#else
+struct mtrr_sentry {
+  __u64 base;
+  __u32 size;
+  __u32 type;
+};
+struct mtrr_gentry {
+  __u64 base;
+  __u32 size;
+  __u32 regnum;
+  __u32 type;
+  __u32 _pad;
+};
+#endif
+struct mtrr_var_range {
+  __u32 base_lo;
+  __u32 base_hi;
+  __u32 mask_lo;
+  __u32 mask_hi;
+};
+typedef __u8 mtrr_type;
+#define MTRR_NUM_FIXED_RANGES 88
+#define MTRR_MAX_VAR_RANGES 256
+struct mtrr_state_type {
+  struct mtrr_var_range var_ranges[MTRR_MAX_VAR_RANGES];
+  mtrr_type fixed_ranges[MTRR_NUM_FIXED_RANGES];
+  unsigned char enabled;
+  unsigned char have_fixed;
+  mtrr_type def_type;
+};
+#define MTRRphysBase_MSR(reg) (0x200 + 2 * (reg))
+#define MTRRphysMask_MSR(reg) (0x200 + 2 * (reg) + 1)
+#define MTRRIOC_ADD_ENTRY _IOW(MTRR_IOCTL_BASE, 0, struct mtrr_sentry)
+#define MTRRIOC_SET_ENTRY _IOW(MTRR_IOCTL_BASE, 1, struct mtrr_sentry)
+#define MTRRIOC_DEL_ENTRY _IOW(MTRR_IOCTL_BASE, 2, struct mtrr_sentry)
+#define MTRRIOC_GET_ENTRY _IOWR(MTRR_IOCTL_BASE, 3, struct mtrr_gentry)
+#define MTRRIOC_KILL_ENTRY _IOW(MTRR_IOCTL_BASE, 4, struct mtrr_sentry)
+#define MTRRIOC_ADD_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 5, struct mtrr_sentry)
+#define MTRRIOC_SET_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 6, struct mtrr_sentry)
+#define MTRRIOC_DEL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 7, struct mtrr_sentry)
+#define MTRRIOC_GET_PAGE_ENTRY _IOWR(MTRR_IOCTL_BASE, 8, struct mtrr_gentry)
+#define MTRRIOC_KILL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 9, struct mtrr_sentry)
+#define MTRR_TYPE_UNCACHABLE 0
+#define MTRR_TYPE_WRCOMB 1
+#define MTRR_TYPE_WRTHROUGH 4
+#define MTRR_TYPE_WRPROT 5
+#define MTRR_TYPE_WRBACK 6
+#define MTRR_NUM_TYPES 7
+#define MTRR_TYPE_INVALID 0xff
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/param.h b/x86_64-linux-musl/include/asm-x86/asm/param.h
new file mode 100644
index 0000000..5ccf935
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/param.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-generic/param.h>
diff --git a/x86_64-linux-musl/include/asm-x86/asm/perf_regs.h b/x86_64-linux-musl/include/asm-x86/asm/perf_regs.h
new file mode 100644
index 0000000..984b7ea
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/perf_regs.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 _ASM_X86_PERF_REGS_H
+#define _ASM_X86_PERF_REGS_H
+enum perf_event_x86_regs {
+  PERF_REG_X86_AX,
+  PERF_REG_X86_BX,
+  PERF_REG_X86_CX,
+  PERF_REG_X86_DX,
+  PERF_REG_X86_SI,
+  PERF_REG_X86_DI,
+  PERF_REG_X86_BP,
+  PERF_REG_X86_SP,
+  PERF_REG_X86_IP,
+  PERF_REG_X86_FLAGS,
+  PERF_REG_X86_CS,
+  PERF_REG_X86_SS,
+  PERF_REG_X86_DS,
+  PERF_REG_X86_ES,
+  PERF_REG_X86_FS,
+  PERF_REG_X86_GS,
+  PERF_REG_X86_R8,
+  PERF_REG_X86_R9,
+  PERF_REG_X86_R10,
+  PERF_REG_X86_R11,
+  PERF_REG_X86_R12,
+  PERF_REG_X86_R13,
+  PERF_REG_X86_R14,
+  PERF_REG_X86_R15,
+  PERF_REG_X86_32_MAX = PERF_REG_X86_GS + 1,
+  PERF_REG_X86_64_MAX = PERF_REG_X86_R15 + 1,
+  PERF_REG_X86_XMM0 = 32,
+  PERF_REG_X86_XMM1 = 34,
+  PERF_REG_X86_XMM2 = 36,
+  PERF_REG_X86_XMM3 = 38,
+  PERF_REG_X86_XMM4 = 40,
+  PERF_REG_X86_XMM5 = 42,
+  PERF_REG_X86_XMM6 = 44,
+  PERF_REG_X86_XMM7 = 46,
+  PERF_REG_X86_XMM8 = 48,
+  PERF_REG_X86_XMM9 = 50,
+  PERF_REG_X86_XMM10 = 52,
+  PERF_REG_X86_XMM11 = 54,
+  PERF_REG_X86_XMM12 = 56,
+  PERF_REG_X86_XMM13 = 58,
+  PERF_REG_X86_XMM14 = 60,
+  PERF_REG_X86_XMM15 = 62,
+  PERF_REG_X86_XMM_MAX = PERF_REG_X86_XMM15 + 2,
+};
+#define PERF_REG_EXTENDED_MASK (~((1ULL << PERF_REG_X86_XMM0) - 1))
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/poll.h b/x86_64-linux-musl/include/asm-x86/asm/poll.h
new file mode 100644
index 0000000..d7e8adc
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/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-generic/poll.h>
diff --git a/x86_64-linux-musl/include/asm-x86/asm/posix_types.h b/x86_64-linux-musl/include/asm-x86/asm/posix_types.h
new file mode 100644
index 0000000..67ed19b
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/posix_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!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifdef __i386__
+#include <asm/posix_types_32.h>
+#elif defined(__ILP32__)
+#include <asm/posix_types_x32.h>
+#else
+#include <asm/posix_types_64.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/posix_types_32.h b/x86_64-linux-musl/include/asm-x86/asm/posix_types_32.h
new file mode 100644
index 0000000..c339b4f
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/posix_types_32.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 _ASM_X86_POSIX_TYPES_32_H
+#define _ASM_X86_POSIX_TYPES_32_H
+typedef unsigned short __kernel_mode_t;
+#define __kernel_mode_t __kernel_mode_t
+typedef unsigned short __kernel_ipc_pid_t;
+#define __kernel_ipc_pid_t __kernel_ipc_pid_t
+typedef unsigned short __kernel_uid_t;
+typedef unsigned short __kernel_gid_t;
+#define __kernel_uid_t __kernel_uid_t
+typedef unsigned short __kernel_old_dev_t;
+#define __kernel_old_dev_t __kernel_old_dev_t
+#include <asm-generic/posix_types.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/posix_types_64.h b/x86_64-linux-musl/include/asm-x86/asm/posix_types_64.h
new file mode 100644
index 0000000..23cdec1
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/posix_types_64.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 _ASM_X86_POSIX_TYPES_64_H
+#define _ASM_X86_POSIX_TYPES_64_H
+typedef unsigned short __kernel_old_uid_t;
+typedef unsigned short __kernel_old_gid_t;
+#define __kernel_old_uid_t __kernel_old_uid_t
+typedef unsigned long __kernel_old_dev_t;
+#define __kernel_old_dev_t __kernel_old_dev_t
+#include <asm-generic/posix_types.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/posix_types_x32.h b/x86_64-linux-musl/include/asm-x86/asm/posix_types_x32.h
new file mode 100644
index 0000000..96cf8b9
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/posix_types_x32.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 _ASM_X86_POSIX_TYPES_X32_H
+#define _ASM_X86_POSIX_TYPES_X32_H
+typedef long long __kernel_long_t;
+typedef unsigned long long __kernel_ulong_t;
+#define __kernel_long_t __kernel_long_t
+#include <asm/posix_types_64.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/prctl.h b/x86_64-linux-musl/include/asm-x86/asm/prctl.h
new file mode 100644
index 0000000..d8014b1
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/prctl.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 _ASM_X86_PRCTL_H
+#define _ASM_X86_PRCTL_H
+#define ARCH_SET_GS 0x1001
+#define ARCH_SET_FS 0x1002
+#define ARCH_GET_FS 0x1003
+#define ARCH_GET_GS 0x1004
+#define ARCH_GET_CPUID 0x1011
+#define ARCH_SET_CPUID 0x1012
+#define ARCH_GET_XCOMP_SUPP 0x1021
+#define ARCH_GET_XCOMP_PERM 0x1022
+#define ARCH_REQ_XCOMP_PERM 0x1023
+#define ARCH_MAP_VDSO_X32 0x2001
+#define ARCH_MAP_VDSO_32 0x2002
+#define ARCH_MAP_VDSO_64 0x2003
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/processor-flags.h b/x86_64-linux-musl/include/asm-x86/asm/processor-flags.h
new file mode 100644
index 0000000..85f9d7e
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/processor-flags.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_ASM_X86_PROCESSOR_FLAGS_H
+#define _UAPI_ASM_X86_PROCESSOR_FLAGS_H
+#include <linux/const.h>
+#define X86_EFLAGS_CF_BIT 0
+#define X86_EFLAGS_CF _BITUL(X86_EFLAGS_CF_BIT)
+#define X86_EFLAGS_FIXED_BIT 1
+#define X86_EFLAGS_FIXED _BITUL(X86_EFLAGS_FIXED_BIT)
+#define X86_EFLAGS_PF_BIT 2
+#define X86_EFLAGS_PF _BITUL(X86_EFLAGS_PF_BIT)
+#define X86_EFLAGS_AF_BIT 4
+#define X86_EFLAGS_AF _BITUL(X86_EFLAGS_AF_BIT)
+#define X86_EFLAGS_ZF_BIT 6
+#define X86_EFLAGS_ZF _BITUL(X86_EFLAGS_ZF_BIT)
+#define X86_EFLAGS_SF_BIT 7
+#define X86_EFLAGS_SF _BITUL(X86_EFLAGS_SF_BIT)
+#define X86_EFLAGS_TF_BIT 8
+#define X86_EFLAGS_TF _BITUL(X86_EFLAGS_TF_BIT)
+#define X86_EFLAGS_IF_BIT 9
+#define X86_EFLAGS_IF _BITUL(X86_EFLAGS_IF_BIT)
+#define X86_EFLAGS_DF_BIT 10
+#define X86_EFLAGS_DF _BITUL(X86_EFLAGS_DF_BIT)
+#define X86_EFLAGS_OF_BIT 11
+#define X86_EFLAGS_OF _BITUL(X86_EFLAGS_OF_BIT)
+#define X86_EFLAGS_IOPL_BIT 12
+#define X86_EFLAGS_IOPL (_AC(3, UL) << X86_EFLAGS_IOPL_BIT)
+#define X86_EFLAGS_NT_BIT 14
+#define X86_EFLAGS_NT _BITUL(X86_EFLAGS_NT_BIT)
+#define X86_EFLAGS_RF_BIT 16
+#define X86_EFLAGS_RF _BITUL(X86_EFLAGS_RF_BIT)
+#define X86_EFLAGS_VM_BIT 17
+#define X86_EFLAGS_VM _BITUL(X86_EFLAGS_VM_BIT)
+#define X86_EFLAGS_AC_BIT 18
+#define X86_EFLAGS_AC _BITUL(X86_EFLAGS_AC_BIT)
+#define X86_EFLAGS_VIF_BIT 19
+#define X86_EFLAGS_VIF _BITUL(X86_EFLAGS_VIF_BIT)
+#define X86_EFLAGS_VIP_BIT 20
+#define X86_EFLAGS_VIP _BITUL(X86_EFLAGS_VIP_BIT)
+#define X86_EFLAGS_ID_BIT 21
+#define X86_EFLAGS_ID _BITUL(X86_EFLAGS_ID_BIT)
+#define X86_CR0_PE_BIT 0
+#define X86_CR0_PE _BITUL(X86_CR0_PE_BIT)
+#define X86_CR0_MP_BIT 1
+#define X86_CR0_MP _BITUL(X86_CR0_MP_BIT)
+#define X86_CR0_EM_BIT 2
+#define X86_CR0_EM _BITUL(X86_CR0_EM_BIT)
+#define X86_CR0_TS_BIT 3
+#define X86_CR0_TS _BITUL(X86_CR0_TS_BIT)
+#define X86_CR0_ET_BIT 4
+#define X86_CR0_ET _BITUL(X86_CR0_ET_BIT)
+#define X86_CR0_NE_BIT 5
+#define X86_CR0_NE _BITUL(X86_CR0_NE_BIT)
+#define X86_CR0_WP_BIT 16
+#define X86_CR0_WP _BITUL(X86_CR0_WP_BIT)
+#define X86_CR0_AM_BIT 18
+#define X86_CR0_AM _BITUL(X86_CR0_AM_BIT)
+#define X86_CR0_NW_BIT 29
+#define X86_CR0_NW _BITUL(X86_CR0_NW_BIT)
+#define X86_CR0_CD_BIT 30
+#define X86_CR0_CD _BITUL(X86_CR0_CD_BIT)
+#define X86_CR0_PG_BIT 31
+#define X86_CR0_PG _BITUL(X86_CR0_PG_BIT)
+#define X86_CR3_PWT_BIT 3
+#define X86_CR3_PWT _BITUL(X86_CR3_PWT_BIT)
+#define X86_CR3_PCD_BIT 4
+#define X86_CR3_PCD _BITUL(X86_CR3_PCD_BIT)
+#define X86_CR3_PCID_BITS 12
+#define X86_CR3_PCID_MASK (_AC((1UL << X86_CR3_PCID_BITS) - 1, UL))
+#define X86_CR3_PCID_NOFLUSH_BIT 63
+#define X86_CR3_PCID_NOFLUSH _BITULL(X86_CR3_PCID_NOFLUSH_BIT)
+#define X86_CR4_VME_BIT 0
+#define X86_CR4_VME _BITUL(X86_CR4_VME_BIT)
+#define X86_CR4_PVI_BIT 1
+#define X86_CR4_PVI _BITUL(X86_CR4_PVI_BIT)
+#define X86_CR4_TSD_BIT 2
+#define X86_CR4_TSD _BITUL(X86_CR4_TSD_BIT)
+#define X86_CR4_DE_BIT 3
+#define X86_CR4_DE _BITUL(X86_CR4_DE_BIT)
+#define X86_CR4_PSE_BIT 4
+#define X86_CR4_PSE _BITUL(X86_CR4_PSE_BIT)
+#define X86_CR4_PAE_BIT 5
+#define X86_CR4_PAE _BITUL(X86_CR4_PAE_BIT)
+#define X86_CR4_MCE_BIT 6
+#define X86_CR4_MCE _BITUL(X86_CR4_MCE_BIT)
+#define X86_CR4_PGE_BIT 7
+#define X86_CR4_PGE _BITUL(X86_CR4_PGE_BIT)
+#define X86_CR4_PCE_BIT 8
+#define X86_CR4_PCE _BITUL(X86_CR4_PCE_BIT)
+#define X86_CR4_OSFXSR_BIT 9
+#define X86_CR4_OSFXSR _BITUL(X86_CR4_OSFXSR_BIT)
+#define X86_CR4_OSXMMEXCPT_BIT 10
+#define X86_CR4_OSXMMEXCPT _BITUL(X86_CR4_OSXMMEXCPT_BIT)
+#define X86_CR4_UMIP_BIT 11
+#define X86_CR4_UMIP _BITUL(X86_CR4_UMIP_BIT)
+#define X86_CR4_LA57_BIT 12
+#define X86_CR4_LA57 _BITUL(X86_CR4_LA57_BIT)
+#define X86_CR4_VMXE_BIT 13
+#define X86_CR4_VMXE _BITUL(X86_CR4_VMXE_BIT)
+#define X86_CR4_SMXE_BIT 14
+#define X86_CR4_SMXE _BITUL(X86_CR4_SMXE_BIT)
+#define X86_CR4_FSGSBASE_BIT 16
+#define X86_CR4_FSGSBASE _BITUL(X86_CR4_FSGSBASE_BIT)
+#define X86_CR4_PCIDE_BIT 17
+#define X86_CR4_PCIDE _BITUL(X86_CR4_PCIDE_BIT)
+#define X86_CR4_OSXSAVE_BIT 18
+#define X86_CR4_OSXSAVE _BITUL(X86_CR4_OSXSAVE_BIT)
+#define X86_CR4_SMEP_BIT 20
+#define X86_CR4_SMEP _BITUL(X86_CR4_SMEP_BIT)
+#define X86_CR4_SMAP_BIT 21
+#define X86_CR4_SMAP _BITUL(X86_CR4_SMAP_BIT)
+#define X86_CR4_PKE_BIT 22
+#define X86_CR4_PKE _BITUL(X86_CR4_PKE_BIT)
+#define X86_CR8_TPR _AC(0x0000000f, UL)
+#define CX86_PCR0 0x20
+#define CX86_GCR 0xb8
+#define CX86_CCR0 0xc0
+#define CX86_CCR1 0xc1
+#define CX86_CCR2 0xc2
+#define CX86_CCR3 0xc3
+#define CX86_CCR4 0xe8
+#define CX86_CCR5 0xe9
+#define CX86_CCR6 0xea
+#define CX86_CCR7 0xeb
+#define CX86_PCR1 0xf0
+#define CX86_DIR0 0xfe
+#define CX86_DIR1 0xff
+#define CX86_ARR_BASE 0xc4
+#define CX86_RCR_BASE 0xdc
+#define CR0_STATE (X86_CR0_PE | X86_CR0_MP | X86_CR0_ET | X86_CR0_NE | X86_CR0_WP | X86_CR0_AM | X86_CR0_PG)
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/ptrace-abi.h b/x86_64-linux-musl/include/asm-x86/asm/ptrace-abi.h
new file mode 100644
index 0000000..e501d9f
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/ptrace-abi.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 _ASM_X86_PTRACE_ABI_H
+#define _ASM_X86_PTRACE_ABI_H
+#ifdef __i386__
+#define EBX 0
+#define ECX 1
+#define EDX 2
+#define ESI 3
+#define EDI 4
+#define EBP 5
+#define EAX 6
+#define DS 7
+#define ES 8
+#define FS 9
+#define GS 10
+#define ORIG_EAX 11
+#define EIP 12
+#define CS 13
+#define EFL 14
+#define UESP 15
+#define SS 16
+#define FRAME_SIZE 17
+#else
+#if defined(__ASSEMBLY__) || defined(__FRAME_OFFSETS)
+#define R15 0
+#define R14 8
+#define R13 16
+#define R12 24
+#define RBP 32
+#define RBX 40
+#define R11 48
+#define R10 56
+#define R9 64
+#define R8 72
+#define RAX 80
+#define RCX 88
+#define RDX 96
+#define RSI 104
+#define RDI 112
+#define ORIG_RAX 120
+#define RIP 128
+#define CS 136
+#define EFLAGS 144
+#define RSP 152
+#define SS 160
+#endif
+#define FRAME_SIZE 168
+#endif
+#define PTRACE_GETREGS 12
+#define PTRACE_SETREGS 13
+#define PTRACE_GETFPREGS 14
+#define PTRACE_SETFPREGS 15
+#define PTRACE_GETFPXREGS 18
+#define PTRACE_SETFPXREGS 19
+#define PTRACE_OLDSETOPTIONS 21
+#define PTRACE_GET_THREAD_AREA 25
+#define PTRACE_SET_THREAD_AREA 26
+#ifdef __x86_64__
+#define PTRACE_ARCH_PRCTL 30
+#endif
+#define PTRACE_SYSEMU 31
+#define PTRACE_SYSEMU_SINGLESTEP 32
+#define PTRACE_SINGLEBLOCK 33
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/ptrace.h b/x86_64-linux-musl/include/asm-x86/asm/ptrace.h
new file mode 100644
index 0000000..3f4404a
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/ptrace.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_ASM_X86_PTRACE_H
+#define _UAPI_ASM_X86_PTRACE_H
+#include <linux/compiler.h>
+#include <asm/ptrace-abi.h>
+#include <asm/processor-flags.h>
+#ifndef __ASSEMBLY__
+#ifdef __i386__
+struct pt_regs {
+  long ebx;
+  long ecx;
+  long edx;
+  long esi;
+  long edi;
+  long ebp;
+  long eax;
+  int xds;
+  int xes;
+  int xfs;
+  int xgs;
+  long orig_eax;
+  long eip;
+  int xcs;
+  long eflags;
+  long esp;
+  int xss;
+};
+#else
+struct pt_regs {
+  unsigned long r15;
+  unsigned long r14;
+  unsigned long r13;
+  unsigned long r12;
+  unsigned long rbp;
+  unsigned long rbx;
+  unsigned long r11;
+  unsigned long r10;
+  unsigned long r9;
+  unsigned long r8;
+  unsigned long rax;
+  unsigned long rcx;
+  unsigned long rdx;
+  unsigned long rsi;
+  unsigned long rdi;
+  unsigned long orig_rax;
+  unsigned long rip;
+  unsigned long cs;
+  unsigned long eflags;
+  unsigned long rsp;
+  unsigned long ss;
+};
+#endif
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/resource.h b/x86_64-linux-musl/include/asm-x86/asm/resource.h
new file mode 100644
index 0000000..371adb5
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/resource.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-generic/resource.h>
diff --git a/x86_64-linux-musl/include/asm-x86/asm/sembuf.h b/x86_64-linux-musl/include/asm-x86/asm/sembuf.h
new file mode 100644
index 0000000..c633425
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/sembuf.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 _ASM_X86_SEMBUF_H
+#define _ASM_X86_SEMBUF_H
+#include <asm/ipcbuf.h>
+struct semid64_ds {
+  struct ipc64_perm sem_perm;
+#ifdef __i386__
+  unsigned long sem_otime;
+  unsigned long sem_otime_high;
+  unsigned long sem_ctime;
+  unsigned long sem_ctime_high;
+#else
+  __kernel_long_t sem_otime;
+  __kernel_ulong_t __unused1;
+  __kernel_long_t sem_ctime;
+  __kernel_ulong_t __unused2;
+#endif
+  __kernel_ulong_t sem_nsems;
+  __kernel_ulong_t __unused3;
+  __kernel_ulong_t __unused4;
+};
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/setup.h b/x86_64-linux-musl/include/asm-x86/asm/setup.h
new file mode 100644
index 0000000..878419c
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/setup.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/x86_64-linux-musl/include/asm-x86/asm/sgx.h b/x86_64-linux-musl/include/asm-x86/asm/sgx.h
new file mode 100644
index 0000000..1874b78
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/sgx.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_ASM_X86_SGX_H
+#define _UAPI_ASM_X86_SGX_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+enum sgx_page_flags {
+  SGX_PAGE_MEASURE = 0x01,
+};
+#define SGX_MAGIC 0xA4
+#define SGX_IOC_ENCLAVE_CREATE _IOW(SGX_MAGIC, 0x00, struct sgx_enclave_create)
+#define SGX_IOC_ENCLAVE_ADD_PAGES _IOWR(SGX_MAGIC, 0x01, struct sgx_enclave_add_pages)
+#define SGX_IOC_ENCLAVE_INIT _IOW(SGX_MAGIC, 0x02, struct sgx_enclave_init)
+#define SGX_IOC_ENCLAVE_PROVISION _IOW(SGX_MAGIC, 0x03, struct sgx_enclave_provision)
+#define SGX_IOC_VEPC_REMOVE_ALL _IO(SGX_MAGIC, 0x04)
+struct sgx_enclave_create {
+  __u64 src;
+};
+struct sgx_enclave_add_pages {
+  __u64 src;
+  __u64 offset;
+  __u64 length;
+  __u64 secinfo;
+  __u64 flags;
+  __u64 count;
+};
+struct sgx_enclave_init {
+  __u64 sigstruct;
+};
+struct sgx_enclave_provision {
+  __u64 fd;
+};
+struct sgx_enclave_run;
+typedef int(* sgx_enclave_user_handler_t) (long rdi, long rsi, long rdx, long rsp, long r8, long r9, struct sgx_enclave_run * run);
+struct sgx_enclave_run {
+  __u64 tcs;
+  __u32 function;
+  __u16 exception_vector;
+  __u16 exception_error_code;
+  __u64 exception_addr;
+  __u64 user_handler;
+  __u64 user_data;
+  __u8 reserved[216];
+};
+typedef int(* vdso_sgx_enter_enclave_t) (unsigned long rdi, unsigned long rsi, unsigned long rdx, unsigned int function, unsigned long r8, unsigned long r9, struct sgx_enclave_run * run);
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/shmbuf.h b/x86_64-linux-musl/include/asm-x86/asm/shmbuf.h
new file mode 100644
index 0000000..03e195e
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/shmbuf.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 __ASM_X86_SHMBUF_H
+#define __ASM_X86_SHMBUF_H
+#if !defined(__x86_64__) || !defined(__ILP32__)
+#include <asm-generic/shmbuf.h>
+#else
+struct shmid64_ds {
+  struct ipc64_perm shm_perm;
+  size_t shm_segsz;
+  __kernel_long_t shm_atime;
+  __kernel_long_t shm_dtime;
+  __kernel_long_t shm_ctime;
+  __kernel_pid_t shm_cpid;
+  __kernel_pid_t shm_lpid;
+  __kernel_ulong_t shm_nattch;
+  __kernel_ulong_t __unused4;
+  __kernel_ulong_t __unused5;
+};
+struct shminfo64 {
+  __kernel_ulong_t shmmax;
+  __kernel_ulong_t shmmin;
+  __kernel_ulong_t shmmni;
+  __kernel_ulong_t shmseg;
+  __kernel_ulong_t shmall;
+  __kernel_ulong_t __unused1;
+  __kernel_ulong_t __unused2;
+  __kernel_ulong_t __unused3;
+  __kernel_ulong_t __unused4;
+};
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/sigcontext.h b/x86_64-linux-musl/include/asm-x86/asm/sigcontext.h
new file mode 100644
index 0000000..7d5b4d4
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/sigcontext.h
@@ -0,0 +1,225 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_X86_SIGCONTEXT_H
+#define _UAPI_ASM_X86_SIGCONTEXT_H
+#include <linux/compiler.h>
+#include <linux/types.h>
+#define FP_XSTATE_MAGIC1 0x46505853U
+#define FP_XSTATE_MAGIC2 0x46505845U
+#define FP_XSTATE_MAGIC2_SIZE sizeof(FP_XSTATE_MAGIC2)
+struct _fpx_sw_bytes {
+  __u32 magic1;
+  __u32 extended_size;
+  __u64 xfeatures;
+  __u32 xstate_size;
+  __u32 padding[7];
+};
+struct _fpreg {
+  __u16 significand[4];
+  __u16 exponent;
+};
+struct _fpxreg {
+  __u16 significand[4];
+  __u16 exponent;
+  __u16 padding[3];
+};
+struct _xmmreg {
+  __u32 element[4];
+};
+#define X86_FXSR_MAGIC 0x0000
+struct _fpstate_32 {
+  __u32 cw;
+  __u32 sw;
+  __u32 tag;
+  __u32 ipoff;
+  __u32 cssel;
+  __u32 dataoff;
+  __u32 datasel;
+  struct _fpreg _st[8];
+  __u16 status;
+  __u16 magic;
+  __u32 _fxsr_env[6];
+  __u32 mxcsr;
+  __u32 reserved;
+  struct _fpxreg _fxsr_st[8];
+  struct _xmmreg _xmm[8];
+  union {
+    __u32 padding1[44];
+    __u32 padding[44];
+  };
+  union {
+    __u32 padding2[12];
+    struct _fpx_sw_bytes sw_reserved;
+  };
+};
+struct _fpstate_64 {
+  __u16 cwd;
+  __u16 swd;
+  __u16 twd;
+  __u16 fop;
+  __u64 rip;
+  __u64 rdp;
+  __u32 mxcsr;
+  __u32 mxcsr_mask;
+  __u32 st_space[32];
+  __u32 xmm_space[64];
+  __u32 reserved2[12];
+  union {
+    __u32 reserved3[12];
+    struct _fpx_sw_bytes sw_reserved;
+  };
+};
+#ifdef __i386__
+#define _fpstate _fpstate_32
+#else
+#define _fpstate _fpstate_64
+#endif
+struct _header {
+  __u64 xfeatures;
+  __u64 reserved1[2];
+  __u64 reserved2[5];
+};
+struct _ymmh_state {
+  __u32 ymmh_space[64];
+};
+struct _xstate {
+  struct _fpstate fpstate;
+  struct _header xstate_hdr;
+  struct _ymmh_state ymmh;
+};
+struct sigcontext_32 {
+  __u16 gs, __gsh;
+  __u16 fs, __fsh;
+  __u16 es, __esh;
+  __u16 ds, __dsh;
+  __u32 di;
+  __u32 si;
+  __u32 bp;
+  __u32 sp;
+  __u32 bx;
+  __u32 dx;
+  __u32 cx;
+  __u32 ax;
+  __u32 trapno;
+  __u32 err;
+  __u32 ip;
+  __u16 cs, __csh;
+  __u32 flags;
+  __u32 sp_at_signal;
+  __u16 ss, __ssh;
+  __u32 fpstate;
+  __u32 oldmask;
+  __u32 cr2;
+};
+struct sigcontext_64 {
+  __u64 r8;
+  __u64 r9;
+  __u64 r10;
+  __u64 r11;
+  __u64 r12;
+  __u64 r13;
+  __u64 r14;
+  __u64 r15;
+  __u64 di;
+  __u64 si;
+  __u64 bp;
+  __u64 bx;
+  __u64 dx;
+  __u64 ax;
+  __u64 cx;
+  __u64 sp;
+  __u64 ip;
+  __u64 flags;
+  __u16 cs;
+  __u16 gs;
+  __u16 fs;
+  __u16 ss;
+  __u64 err;
+  __u64 trapno;
+  __u64 oldmask;
+  __u64 cr2;
+  __u64 fpstate;
+  __u64 reserved1[8];
+};
+#define _fpstate_ia32 _fpstate_32
+#define sigcontext_ia32 sigcontext_32
+#ifdef __i386__
+struct sigcontext {
+  __u16 gs, __gsh;
+  __u16 fs, __fsh;
+  __u16 es, __esh;
+  __u16 ds, __dsh;
+  __u32 edi;
+  __u32 esi;
+  __u32 ebp;
+  __u32 esp;
+  __u32 ebx;
+  __u32 edx;
+  __u32 ecx;
+  __u32 eax;
+  __u32 trapno;
+  __u32 err;
+  __u32 eip;
+  __u16 cs, __csh;
+  __u32 eflags;
+  __u32 esp_at_signal;
+  __u16 ss, __ssh;
+  struct _fpstate __user * fpstate;
+  __u32 oldmask;
+  __u32 cr2;
+};
+#else
+struct sigcontext {
+  __u64 r8;
+  __u64 r9;
+  __u64 r10;
+  __u64 r11;
+  __u64 r12;
+  __u64 r13;
+  __u64 r14;
+  __u64 r15;
+  __u64 rdi;
+  __u64 rsi;
+  __u64 rbp;
+  __u64 rbx;
+  __u64 rdx;
+  __u64 rax;
+  __u64 rcx;
+  __u64 rsp;
+  __u64 rip;
+  __u64 eflags;
+  __u16 cs;
+  __u16 gs;
+  __u16 fs;
+  union {
+    __u16 ss;
+    __u16 __pad0;
+  };
+  __u64 err;
+  __u64 trapno;
+  __u64 oldmask;
+  __u64 cr2;
+  struct _fpstate __user * fpstate;
+#ifdef __ILP32__
+  __u32 __fpstate_pad;
+#endif
+  __u64 reserved1[8];
+};
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/sigcontext32.h b/x86_64-linux-musl/include/asm-x86/asm/sigcontext32.h
new file mode 100644
index 0000000..639467e
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/sigcontext32.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 _ASM_X86_SIGCONTEXT32_H
+#define _ASM_X86_SIGCONTEXT32_H
+#include <asm/sigcontext.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/siginfo.h b/x86_64-linux-musl/include/asm-x86/asm/siginfo.h
new file mode 100644
index 0000000..0de5283
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/siginfo.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 _ASM_X86_SIGINFO_H
+#define _ASM_X86_SIGINFO_H
+#ifdef __x86_64__
+#ifdef __ILP32__
+typedef long long __kernel_si_clock_t __attribute__((aligned(4)));
+#define __ARCH_SI_CLOCK_T __kernel_si_clock_t
+#define __ARCH_SI_ATTRIBUTES __attribute__((aligned(8)))
+#endif
+#endif
+#include <asm-generic/siginfo.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/signal.h b/x86_64-linux-musl/include/asm-x86/asm/signal.h
new file mode 100644
index 0000000..8226da8
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/signal.h
@@ -0,0 +1,96 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_X86_SIGNAL_H
+#define _UAPI_ASM_X86_SIGNAL_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#include <linux/time.h>
+#include <linux/compiler.h>
+struct siginfo;
+#define _KERNEL_NSIG 32
+typedef unsigned long sigset_t;
+#endif
+#define SIGHUP 1
+#define SIGINT 2
+#define SIGQUIT 3
+#define SIGILL 4
+#define SIGTRAP 5
+#define SIGABRT 6
+#define SIGIOT 6
+#define SIGBUS 7
+#define SIGFPE 8
+#define SIGKILL 9
+#define SIGUSR1 10
+#define SIGSEGV 11
+#define SIGUSR2 12
+#define SIGPIPE 13
+#define SIGALRM 14
+#define SIGTERM 15
+#define SIGSTKFLT 16
+#define SIGCHLD 17
+#define SIGCONT 18
+#define SIGSTOP 19
+#define SIGTSTP 20
+#define SIGTTIN 21
+#define SIGTTOU 22
+#define SIGURG 23
+#define SIGXCPU 24
+#define SIGXFSZ 25
+#define SIGVTALRM 26
+#define SIGPROF 27
+#define SIGWINCH 28
+#define SIGIO 29
+#define SIGPOLL SIGIO
+#define SIGPWR 30
+#define SIGSYS 31
+#define SIGUNUSED 31
+#define __SIGRTMIN 32
+#define __SIGRTMAX _KERNEL__NSIG
+#define SA_RESTORER 0x04000000
+#define MINSIGSTKSZ 2048
+#define SIGSTKSZ 8192
+#include <asm-generic/signal-defs.h>
+#ifndef __ASSEMBLY__
+#ifdef __i386__
+struct sigaction {
+  union {
+    __sighandler_t _sa_handler;
+    void(* _sa_sigaction) (int, struct siginfo *, void *);
+  } _u;
+  sigset_t sa_mask;
+  unsigned long sa_flags;
+  void(* sa_restorer) (void);
+};
+#define sa_handler _u._sa_handler
+#define sa_sigaction _u._sa_sigaction
+#else
+struct sigaction {
+  __sighandler_t sa_handler;
+  unsigned long sa_flags;
+  __sigrestore_t sa_restorer;
+  sigset_t sa_mask;
+};
+#endif
+typedef struct sigaltstack {
+  void __user * ss_sp;
+  int ss_flags;
+  size_t ss_size;
+} stack_t;
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/socket.h b/x86_64-linux-musl/include/asm-x86/asm/socket.h
new file mode 100644
index 0000000..50a9874
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/socket.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-generic/socket.h>
diff --git a/x86_64-linux-musl/include/asm-x86/asm/sockios.h b/x86_64-linux-musl/include/asm-x86/asm/sockios.h
new file mode 100644
index 0000000..710db92
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/sockios.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-generic/sockios.h>
diff --git a/x86_64-linux-musl/include/asm-x86/asm/stat.h b/x86_64-linux-musl/include/asm-x86/asm/stat.h
new file mode 100644
index 0000000..9b8c37e
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/stat.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 _ASM_X86_STAT_H
+#define _ASM_X86_STAT_H
+#include <asm/posix_types.h>
+#define STAT_HAVE_NSEC 1
+#ifdef __i386__
+struct stat {
+  unsigned long st_dev;
+  unsigned long st_ino;
+  unsigned short st_mode;
+  unsigned short st_nlink;
+  unsigned short st_uid;
+  unsigned short st_gid;
+  unsigned long st_rdev;
+  unsigned long st_size;
+  unsigned long st_blksize;
+  unsigned long st_blocks;
+  unsigned long st_atime;
+  unsigned long st_atime_nsec;
+  unsigned long st_mtime;
+  unsigned long st_mtime_nsec;
+  unsigned long st_ctime;
+  unsigned long st_ctime_nsec;
+  unsigned long __unused4;
+  unsigned long __unused5;
+};
+#define INIT_STRUCT_STAT_PADDING(st) do { st.__unused4 = 0; st.__unused5 = 0; \
+} while(0)
+#define STAT64_HAS_BROKEN_ST_INO 1
+struct stat64 {
+  unsigned long long st_dev;
+  unsigned char __pad0[4];
+  unsigned long __st_ino;
+  unsigned int st_mode;
+  unsigned int st_nlink;
+  unsigned long st_uid;
+  unsigned long st_gid;
+  unsigned long long st_rdev;
+  unsigned char __pad3[4];
+  long long st_size;
+  unsigned long st_blksize;
+  unsigned long long st_blocks;
+  unsigned long st_atime;
+  unsigned long st_atime_nsec;
+  unsigned long st_mtime;
+  unsigned int st_mtime_nsec;
+  unsigned long st_ctime;
+  unsigned long st_ctime_nsec;
+  unsigned long long st_ino;
+};
+#define INIT_STRUCT_STAT64_PADDING(st) do { memset(& st.__pad0, 0, sizeof(st.__pad0)); memset(& st.__pad3, 0, sizeof(st.__pad3)); \
+} while(0)
+#else
+struct stat {
+  __kernel_ulong_t st_dev;
+  __kernel_ulong_t st_ino;
+  __kernel_ulong_t st_nlink;
+  unsigned int st_mode;
+  unsigned int st_uid;
+  unsigned int st_gid;
+  unsigned int __pad0;
+  __kernel_ulong_t st_rdev;
+  __kernel_long_t st_size;
+  __kernel_long_t st_blksize;
+  __kernel_long_t st_blocks;
+  __kernel_ulong_t st_atime;
+  __kernel_ulong_t st_atime_nsec;
+  __kernel_ulong_t st_mtime;
+  __kernel_ulong_t st_mtime_nsec;
+  __kernel_ulong_t st_ctime;
+  __kernel_ulong_t st_ctime_nsec;
+  __kernel_long_t __linux_unused[3];
+};
+#define INIT_STRUCT_STAT_PADDING(st) do { st.__pad0 = 0; st.__linux_unused[0] = 0; st.__linux_unused[1] = 0; st.__linux_unused[2] = 0; \
+} while(0)
+#endif
+struct __old_kernel_stat {
+  unsigned short st_dev;
+  unsigned short st_ino;
+  unsigned short st_mode;
+  unsigned short st_nlink;
+  unsigned short st_uid;
+  unsigned short st_gid;
+  unsigned short st_rdev;
+#ifdef __i386__
+  unsigned long st_size;
+  unsigned long st_atime;
+  unsigned long st_mtime;
+  unsigned long st_ctime;
+#else
+  unsigned int st_size;
+  unsigned int st_atime;
+  unsigned int st_mtime;
+  unsigned int st_ctime;
+#endif
+};
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/statfs.h b/x86_64-linux-musl/include/asm-x86/asm/statfs.h
new file mode 100644
index 0000000..3ac754c
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/statfs.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 _ASM_X86_STATFS_H
+#define _ASM_X86_STATFS_H
+#define ARCH_PACK_COMPAT_STATFS64 __attribute__((packed, aligned(4)))
+#include <asm-generic/statfs.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/svm.h b/x86_64-linux-musl/include/asm-x86/asm/svm.h
new file mode 100644
index 0000000..d051481
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/svm.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__SVM_H
+#define _UAPI__SVM_H
+#define SVM_EXIT_READ_CR0 0x000
+#define SVM_EXIT_READ_CR2 0x002
+#define SVM_EXIT_READ_CR3 0x003
+#define SVM_EXIT_READ_CR4 0x004
+#define SVM_EXIT_READ_CR8 0x008
+#define SVM_EXIT_WRITE_CR0 0x010
+#define SVM_EXIT_WRITE_CR2 0x012
+#define SVM_EXIT_WRITE_CR3 0x013
+#define SVM_EXIT_WRITE_CR4 0x014
+#define SVM_EXIT_WRITE_CR8 0x018
+#define SVM_EXIT_READ_DR0 0x020
+#define SVM_EXIT_READ_DR1 0x021
+#define SVM_EXIT_READ_DR2 0x022
+#define SVM_EXIT_READ_DR3 0x023
+#define SVM_EXIT_READ_DR4 0x024
+#define SVM_EXIT_READ_DR5 0x025
+#define SVM_EXIT_READ_DR6 0x026
+#define SVM_EXIT_READ_DR7 0x027
+#define SVM_EXIT_WRITE_DR0 0x030
+#define SVM_EXIT_WRITE_DR1 0x031
+#define SVM_EXIT_WRITE_DR2 0x032
+#define SVM_EXIT_WRITE_DR3 0x033
+#define SVM_EXIT_WRITE_DR4 0x034
+#define SVM_EXIT_WRITE_DR5 0x035
+#define SVM_EXIT_WRITE_DR6 0x036
+#define SVM_EXIT_WRITE_DR7 0x037
+#define SVM_EXIT_EXCP_BASE 0x040
+#define SVM_EXIT_LAST_EXCP 0x05f
+#define SVM_EXIT_INTR 0x060
+#define SVM_EXIT_NMI 0x061
+#define SVM_EXIT_SMI 0x062
+#define SVM_EXIT_INIT 0x063
+#define SVM_EXIT_VINTR 0x064
+#define SVM_EXIT_CR0_SEL_WRITE 0x065
+#define SVM_EXIT_IDTR_READ 0x066
+#define SVM_EXIT_GDTR_READ 0x067
+#define SVM_EXIT_LDTR_READ 0x068
+#define SVM_EXIT_TR_READ 0x069
+#define SVM_EXIT_IDTR_WRITE 0x06a
+#define SVM_EXIT_GDTR_WRITE 0x06b
+#define SVM_EXIT_LDTR_WRITE 0x06c
+#define SVM_EXIT_TR_WRITE 0x06d
+#define SVM_EXIT_RDTSC 0x06e
+#define SVM_EXIT_RDPMC 0x06f
+#define SVM_EXIT_PUSHF 0x070
+#define SVM_EXIT_POPF 0x071
+#define SVM_EXIT_CPUID 0x072
+#define SVM_EXIT_RSM 0x073
+#define SVM_EXIT_IRET 0x074
+#define SVM_EXIT_SWINT 0x075
+#define SVM_EXIT_INVD 0x076
+#define SVM_EXIT_PAUSE 0x077
+#define SVM_EXIT_HLT 0x078
+#define SVM_EXIT_INVLPG 0x079
+#define SVM_EXIT_INVLPGA 0x07a
+#define SVM_EXIT_IOIO 0x07b
+#define SVM_EXIT_MSR 0x07c
+#define SVM_EXIT_TASK_SWITCH 0x07d
+#define SVM_EXIT_FERR_FREEZE 0x07e
+#define SVM_EXIT_SHUTDOWN 0x07f
+#define SVM_EXIT_VMRUN 0x080
+#define SVM_EXIT_VMMCALL 0x081
+#define SVM_EXIT_VMLOAD 0x082
+#define SVM_EXIT_VMSAVE 0x083
+#define SVM_EXIT_STGI 0x084
+#define SVM_EXIT_CLGI 0x085
+#define SVM_EXIT_SKINIT 0x086
+#define SVM_EXIT_RDTSCP 0x087
+#define SVM_EXIT_ICEBP 0x088
+#define SVM_EXIT_WBINVD 0x089
+#define SVM_EXIT_MONITOR 0x08a
+#define SVM_EXIT_MWAIT 0x08b
+#define SVM_EXIT_MWAIT_COND 0x08c
+#define SVM_EXIT_XSETBV 0x08d
+#define SVM_EXIT_RDPRU 0x08e
+#define SVM_EXIT_EFER_WRITE_TRAP 0x08f
+#define SVM_EXIT_CR0_WRITE_TRAP 0x090
+#define SVM_EXIT_CR1_WRITE_TRAP 0x091
+#define SVM_EXIT_CR2_WRITE_TRAP 0x092
+#define SVM_EXIT_CR3_WRITE_TRAP 0x093
+#define SVM_EXIT_CR4_WRITE_TRAP 0x094
+#define SVM_EXIT_CR5_WRITE_TRAP 0x095
+#define SVM_EXIT_CR6_WRITE_TRAP 0x096
+#define SVM_EXIT_CR7_WRITE_TRAP 0x097
+#define SVM_EXIT_CR8_WRITE_TRAP 0x098
+#define SVM_EXIT_CR9_WRITE_TRAP 0x099
+#define SVM_EXIT_CR10_WRITE_TRAP 0x09a
+#define SVM_EXIT_CR11_WRITE_TRAP 0x09b
+#define SVM_EXIT_CR12_WRITE_TRAP 0x09c
+#define SVM_EXIT_CR13_WRITE_TRAP 0x09d
+#define SVM_EXIT_CR14_WRITE_TRAP 0x09e
+#define SVM_EXIT_CR15_WRITE_TRAP 0x09f
+#define SVM_EXIT_INVPCID 0x0a2
+#define SVM_EXIT_NPF 0x400
+#define SVM_EXIT_AVIC_INCOMPLETE_IPI 0x401
+#define SVM_EXIT_AVIC_UNACCELERATED_ACCESS 0x402
+#define SVM_EXIT_VMGEXIT 0x403
+#define SVM_VMGEXIT_MMIO_READ 0x80000001
+#define SVM_VMGEXIT_MMIO_WRITE 0x80000002
+#define SVM_VMGEXIT_NMI_COMPLETE 0x80000003
+#define SVM_VMGEXIT_AP_HLT_LOOP 0x80000004
+#define SVM_VMGEXIT_AP_JUMP_TABLE 0x80000005
+#define SVM_VMGEXIT_SET_AP_JUMP_TABLE 0
+#define SVM_VMGEXIT_GET_AP_JUMP_TABLE 1
+#define SVM_VMGEXIT_UNSUPPORTED_EVENT 0x8000ffff
+#define SVM_EXIT_SW 0xf0000000
+#define SVM_EXIT_ERR - 1
+#define SVM_EXIT_REASONS { SVM_EXIT_READ_CR0, "read_cr0" }, { SVM_EXIT_READ_CR2, "read_cr2" }, { SVM_EXIT_READ_CR3, "read_cr3" }, { SVM_EXIT_READ_CR4, "read_cr4" }, { SVM_EXIT_READ_CR8, "read_cr8" }, { SVM_EXIT_WRITE_CR0, "write_cr0" }, { SVM_EXIT_WRITE_CR2, "write_cr2" }, { SVM_EXIT_WRITE_CR3, "write_cr3" }, { SVM_EXIT_WRITE_CR4, "write_cr4" }, { SVM_EXIT_WRITE_CR8, "write_cr8" }, { SVM_EXIT_READ_DR0, "read_dr0" }, { SVM_EXIT_READ_DR1, "read_dr1" }, { SVM_EXIT_READ_DR2, "read_dr2" }, { SVM_EXIT_READ_DR3, "read_dr3" }, { SVM_EXIT_READ_DR4, "read_dr4" }, { SVM_EXIT_READ_DR5, "read_dr5" }, { SVM_EXIT_READ_DR6, "read_dr6" }, { SVM_EXIT_READ_DR7, "read_dr7" }, { SVM_EXIT_WRITE_DR0, "write_dr0" }, { SVM_EXIT_WRITE_DR1, "write_dr1" }, { SVM_EXIT_WRITE_DR2, "write_dr2" }, { SVM_EXIT_WRITE_DR3, "write_dr3" }, { SVM_EXIT_WRITE_DR4, "write_dr4" }, { SVM_EXIT_WRITE_DR5, "write_dr5" }, { SVM_EXIT_WRITE_DR6, "write_dr6" }, { SVM_EXIT_WRITE_DR7, "write_dr7" }, { SVM_EXIT_EXCP_BASE + DE_VECTOR, "DE excp" }, { SVM_EXIT_EXCP_BASE + DB_VECTOR, "DB excp" }, { SVM_EXIT_EXCP_BASE + BP_VECTOR, "BP excp" }, { SVM_EXIT_EXCP_BASE + OF_VECTOR, "OF excp" }, { SVM_EXIT_EXCP_BASE + BR_VECTOR, "BR excp" }, { SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" }, { SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" }, { SVM_EXIT_EXCP_BASE + DF_VECTOR, "DF excp" }, { SVM_EXIT_EXCP_BASE + TS_VECTOR, "TS excp" }, { SVM_EXIT_EXCP_BASE + NP_VECTOR, "NP excp" }, { SVM_EXIT_EXCP_BASE + SS_VECTOR, "SS excp" }, { SVM_EXIT_EXCP_BASE + GP_VECTOR, "GP excp" }, { SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" }, { SVM_EXIT_EXCP_BASE + MF_VECTOR, "MF excp" }, { SVM_EXIT_EXCP_BASE + AC_VECTOR, "AC excp" }, { SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" }, { SVM_EXIT_EXCP_BASE + XM_VECTOR, "XF excp" }, { SVM_EXIT_INTR, "interrupt" }, { SVM_EXIT_NMI, "nmi" }, { SVM_EXIT_SMI, "smi" }, { SVM_EXIT_INIT, "init" }, { SVM_EXIT_VINTR, "vintr" }, { SVM_EXIT_CR0_SEL_WRITE, "cr0_sel_write" }, { SVM_EXIT_IDTR_READ, "read_idtr" }, { SVM_EXIT_GDTR_READ, "read_gdtr" }, { SVM_EXIT_LDTR_READ, "read_ldtr" }, { SVM_EXIT_TR_READ, "read_rt" }, { SVM_EXIT_IDTR_WRITE, "write_idtr" }, { SVM_EXIT_GDTR_WRITE, "write_gdtr" }, { SVM_EXIT_LDTR_WRITE, "write_ldtr" }, { SVM_EXIT_TR_WRITE, "write_rt" }, { SVM_EXIT_RDTSC, "rdtsc" }, { SVM_EXIT_RDPMC, "rdpmc" }, { SVM_EXIT_PUSHF, "pushf" }, { SVM_EXIT_POPF, "popf" }, { SVM_EXIT_CPUID, "cpuid" }, { SVM_EXIT_RSM, "rsm" }, { SVM_EXIT_IRET, "iret" }, { SVM_EXIT_SWINT, "swint" }, { SVM_EXIT_INVD, "invd" }, { SVM_EXIT_PAUSE, "pause" }, { SVM_EXIT_HLT, "hlt" }, { SVM_EXIT_INVLPG, "invlpg" }, { SVM_EXIT_INVLPGA, "invlpga" }, { SVM_EXIT_IOIO, "io" }, { SVM_EXIT_MSR, "msr" }, { SVM_EXIT_TASK_SWITCH, "task_switch" }, { SVM_EXIT_FERR_FREEZE, "ferr_freeze" }, { SVM_EXIT_SHUTDOWN, "shutdown" }, { SVM_EXIT_VMRUN, "vmrun" }, { SVM_EXIT_VMMCALL, "hypercall" }, { SVM_EXIT_VMLOAD, "vmload" }, { SVM_EXIT_VMSAVE, "vmsave" }, { SVM_EXIT_STGI, "stgi" }, { SVM_EXIT_CLGI, "clgi" }, { SVM_EXIT_SKINIT, "skinit" }, { SVM_EXIT_RDTSCP, "rdtscp" }, { SVM_EXIT_ICEBP, "icebp" }, { SVM_EXIT_WBINVD, "wbinvd" }, { SVM_EXIT_MONITOR, "monitor" }, { SVM_EXIT_MWAIT, "mwait" }, { SVM_EXIT_XSETBV, "xsetbv" }, { SVM_EXIT_EFER_WRITE_TRAP, "write_efer_trap" }, { SVM_EXIT_CR0_WRITE_TRAP, "write_cr0_trap" }, { SVM_EXIT_CR4_WRITE_TRAP, "write_cr4_trap" }, { SVM_EXIT_CR8_WRITE_TRAP, "write_cr8_trap" }, { SVM_EXIT_INVPCID, "invpcid" }, { SVM_EXIT_NPF, "npf" }, { SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, { SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" }, { SVM_EXIT_VMGEXIT, "vmgexit" }, { SVM_VMGEXIT_MMIO_READ, "vmgexit_mmio_read" }, { SVM_VMGEXIT_MMIO_WRITE, "vmgexit_mmio_write" }, { SVM_VMGEXIT_NMI_COMPLETE, "vmgexit_nmi_complete" }, { SVM_VMGEXIT_AP_HLT_LOOP, "vmgexit_ap_hlt_loop" }, { SVM_VMGEXIT_AP_JUMP_TABLE, "vmgexit_ap_jump_table" }, { SVM_EXIT_ERR, "invalid_guest_state" }
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/swab.h b/x86_64-linux-musl/include/asm-x86/asm/swab.h
new file mode 100644
index 0000000..24fd5e3
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/swab.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 _ASM_X86_SWAB_H
+#define _ASM_X86_SWAB_H
+#include <linux/types.h>
+#include <linux/compiler.h>
+#define __arch_swab32 __arch_swab32
+#ifdef __i386__
+#else
+#endif
+#define __arch_swab64 __arch_swab64
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/termbits.h b/x86_64-linux-musl/include/asm-x86/asm/termbits.h
new file mode 100644
index 0000000..42af6fe
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/termbits.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-generic/termbits.h>
diff --git a/x86_64-linux-musl/include/asm-x86/asm/termios.h b/x86_64-linux-musl/include/asm-x86/asm/termios.h
new file mode 100644
index 0000000..feca4c6
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/termios.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-generic/termios.h>
diff --git a/x86_64-linux-musl/include/asm-x86/asm/types.h b/x86_64-linux-musl/include/asm-x86/asm/types.h
new file mode 100644
index 0000000..8250f43
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/types.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-generic/types.h>
diff --git a/x86_64-linux-musl/include/asm-x86/asm/ucontext.h b/x86_64-linux-musl/include/asm-x86/asm/ucontext.h
new file mode 100644
index 0000000..1bb416f
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/ucontext.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 _ASM_X86_UCONTEXT_H
+#define _ASM_X86_UCONTEXT_H
+#define UC_FP_XSTATE 0x1
+#ifdef __x86_64__
+#define UC_SIGCONTEXT_SS 0x2
+#define UC_STRICT_RESTORE_SS 0x4
+#endif
+#include <asm-generic/ucontext.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/unistd.h b/x86_64-linux-musl/include/asm-x86/asm/unistd.h
new file mode 100644
index 0000000..8cab383
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/unistd.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_ASM_X86_UNISTD_H
+#define _UAPI_ASM_X86_UNISTD_H
+#define __X32_SYSCALL_BIT 0x40000000
+#ifdef __i386__
+#include <asm/unistd_32.h>
+#elif defined(__ILP32__)
+#include <asm/unistd_x32.h>
+#else
+#include <asm/unistd_64.h>
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/unistd_32.h b/x86_64-linux-musl/include/asm-x86/asm/unistd_32.h
new file mode 100644
index 0000000..3a353fe
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/unistd_32.h
@@ -0,0 +1,460 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_UNISTD_32_H
+#define _UAPI_ASM_UNISTD_32_H
+#define __NR_restart_syscall 0
+#define __NR_exit 1
+#define __NR_fork 2
+#define __NR_read 3
+#define __NR_write 4
+#define __NR_open 5
+#define __NR_close 6
+#define __NR_waitpid 7
+#define __NR_creat 8
+#define __NR_link 9
+#define __NR_unlink 10
+#define __NR_execve 11
+#define __NR_chdir 12
+#define __NR_time 13
+#define __NR_mknod 14
+#define __NR_chmod 15
+#define __NR_lchown 16
+#define __NR_break 17
+#define __NR_oldstat 18
+#define __NR_lseek 19
+#define __NR_getpid 20
+#define __NR_mount 21
+#define __NR_umount 22
+#define __NR_setuid 23
+#define __NR_getuid 24
+#define __NR_stime 25
+#define __NR_ptrace 26
+#define __NR_alarm 27
+#define __NR_oldfstat 28
+#define __NR_pause 29
+#define __NR_utime 30
+#define __NR_stty 31
+#define __NR_gtty 32
+#define __NR_access 33
+#define __NR_nice 34
+#define __NR_ftime 35
+#define __NR_sync 36
+#define __NR_kill 37
+#define __NR_rename 38
+#define __NR_mkdir 39
+#define __NR_rmdir 40
+#define __NR_dup 41
+#define __NR_pipe 42
+#define __NR_times 43
+#define __NR_prof 44
+#define __NR_brk 45
+#define __NR_setgid 46
+#define __NR_getgid 47
+#define __NR_signal 48
+#define __NR_geteuid 49
+#define __NR_getegid 50
+#define __NR_acct 51
+#define __NR_umount2 52
+#define __NR_lock 53
+#define __NR_ioctl 54
+#define __NR_fcntl 55
+#define __NR_mpx 56
+#define __NR_setpgid 57
+#define __NR_ulimit 58
+#define __NR_oldolduname 59
+#define __NR_umask 60
+#define __NR_chroot 61
+#define __NR_ustat 62
+#define __NR_dup2 63
+#define __NR_getppid 64
+#define __NR_getpgrp 65
+#define __NR_setsid 66
+#define __NR_sigaction 67
+#define __NR_sgetmask 68
+#define __NR_ssetmask 69
+#define __NR_setreuid 70
+#define __NR_setregid 71
+#define __NR_sigsuspend 72
+#define __NR_sigpending 73
+#define __NR_sethostname 74
+#define __NR_setrlimit 75
+#define __NR_getrlimit 76
+#define __NR_getrusage 77
+#define __NR_gettimeofday 78
+#define __NR_settimeofday 79
+#define __NR_getgroups 80
+#define __NR_setgroups 81
+#define __NR_select 82
+#define __NR_symlink 83
+#define __NR_oldlstat 84
+#define __NR_readlink 85
+#define __NR_uselib 86
+#define __NR_swapon 87
+#define __NR_reboot 88
+#define __NR_readdir 89
+#define __NR_mmap 90
+#define __NR_munmap 91
+#define __NR_truncate 92
+#define __NR_ftruncate 93
+#define __NR_fchmod 94
+#define __NR_fchown 95
+#define __NR_getpriority 96
+#define __NR_setpriority 97
+#define __NR_profil 98
+#define __NR_statfs 99
+#define __NR_fstatfs 100
+#define __NR_ioperm 101
+#define __NR_socketcall 102
+#define __NR_syslog 103
+#define __NR_setitimer 104
+#define __NR_getitimer 105
+#define __NR_stat 106
+#define __NR_lstat 107
+#define __NR_fstat 108
+#define __NR_olduname 109
+#define __NR_iopl 110
+#define __NR_vhangup 111
+#define __NR_idle 112
+#define __NR_vm86old 113
+#define __NR_wait4 114
+#define __NR_swapoff 115
+#define __NR_sysinfo 116
+#define __NR_ipc 117
+#define __NR_fsync 118
+#define __NR_sigreturn 119
+#define __NR_clone 120
+#define __NR_setdomainname 121
+#define __NR_uname 122
+#define __NR_modify_ldt 123
+#define __NR_adjtimex 124
+#define __NR_mprotect 125
+#define __NR_sigprocmask 126
+#define __NR_create_module 127
+#define __NR_init_module 128
+#define __NR_delete_module 129
+#define __NR_get_kernel_syms 130
+#define __NR_quotactl 131
+#define __NR_getpgid 132
+#define __NR_fchdir 133
+#define __NR_bdflush 134
+#define __NR_sysfs 135
+#define __NR_personality 136
+#define __NR_afs_syscall 137
+#define __NR_setfsuid 138
+#define __NR_setfsgid 139
+#define __NR__llseek 140
+#define __NR_getdents 141
+#define __NR__newselect 142
+#define __NR_flock 143
+#define __NR_msync 144
+#define __NR_readv 145
+#define __NR_writev 146
+#define __NR_getsid 147
+#define __NR_fdatasync 148
+#define __NR__sysctl 149
+#define __NR_mlock 150
+#define __NR_munlock 151
+#define __NR_mlockall 152
+#define __NR_munlockall 153
+#define __NR_sched_setparam 154
+#define __NR_sched_getparam 155
+#define __NR_sched_setscheduler 156
+#define __NR_sched_getscheduler 157
+#define __NR_sched_yield 158
+#define __NR_sched_get_priority_max 159
+#define __NR_sched_get_priority_min 160
+#define __NR_sched_rr_get_interval 161
+#define __NR_nanosleep 162
+#define __NR_mremap 163
+#define __NR_setresuid 164
+#define __NR_getresuid 165
+#define __NR_vm86 166
+#define __NR_query_module 167
+#define __NR_poll 168
+#define __NR_nfsservctl 169
+#define __NR_setresgid 170
+#define __NR_getresgid 171
+#define __NR_prctl 172
+#define __NR_rt_sigreturn 173
+#define __NR_rt_sigaction 174
+#define __NR_rt_sigprocmask 175
+#define __NR_rt_sigpending 176
+#define __NR_rt_sigtimedwait 177
+#define __NR_rt_sigqueueinfo 178
+#define __NR_rt_sigsuspend 179
+#define __NR_pread64 180
+#define __NR_pwrite64 181
+#define __NR_chown 182
+#define __NR_getcwd 183
+#define __NR_capget 184
+#define __NR_capset 185
+#define __NR_sigaltstack 186
+#define __NR_sendfile 187
+#define __NR_getpmsg 188
+#define __NR_putpmsg 189
+#define __NR_vfork 190
+#define __NR_ugetrlimit 191
+#define __NR_mmap2 192
+#define __NR_truncate64 193
+#define __NR_ftruncate64 194
+#define __NR_stat64 195
+#define __NR_lstat64 196
+#define __NR_fstat64 197
+#define __NR_lchown32 198
+#define __NR_getuid32 199
+#define __NR_getgid32 200
+#define __NR_geteuid32 201
+#define __NR_getegid32 202
+#define __NR_setreuid32 203
+#define __NR_setregid32 204
+#define __NR_getgroups32 205
+#define __NR_setgroups32 206
+#define __NR_fchown32 207
+#define __NR_setresuid32 208
+#define __NR_getresuid32 209
+#define __NR_setresgid32 210
+#define __NR_getresgid32 211
+#define __NR_chown32 212
+#define __NR_setuid32 213
+#define __NR_setgid32 214
+#define __NR_setfsuid32 215
+#define __NR_setfsgid32 216
+#define __NR_pivot_root 217
+#define __NR_mincore 218
+#define __NR_madvise 219
+#define __NR_getdents64 220
+#define __NR_fcntl64 221
+#define __NR_gettid 224
+#define __NR_readahead 225
+#define __NR_setxattr 226
+#define __NR_lsetxattr 227
+#define __NR_fsetxattr 228
+#define __NR_getxattr 229
+#define __NR_lgetxattr 230
+#define __NR_fgetxattr 231
+#define __NR_listxattr 232
+#define __NR_llistxattr 233
+#define __NR_flistxattr 234
+#define __NR_removexattr 235
+#define __NR_lremovexattr 236
+#define __NR_fremovexattr 237
+#define __NR_tkill 238
+#define __NR_sendfile64 239
+#define __NR_futex 240
+#define __NR_sched_setaffinity 241
+#define __NR_sched_getaffinity 242
+#define __NR_set_thread_area 243
+#define __NR_get_thread_area 244
+#define __NR_io_setup 245
+#define __NR_io_destroy 246
+#define __NR_io_getevents 247
+#define __NR_io_submit 248
+#define __NR_io_cancel 249
+#define __NR_fadvise64 250
+#define __NR_exit_group 252
+#define __NR_lookup_dcookie 253
+#define __NR_epoll_create 254
+#define __NR_epoll_ctl 255
+#define __NR_epoll_wait 256
+#define __NR_remap_file_pages 257
+#define __NR_set_tid_address 258
+#define __NR_timer_create 259
+#define __NR_timer_settime 260
+#define __NR_timer_gettime 261
+#define __NR_timer_getoverrun 262
+#define __NR_timer_delete 263
+#define __NR_clock_settime 264
+#define __NR_clock_gettime 265
+#define __NR_clock_getres 266
+#define __NR_clock_nanosleep 267
+#define __NR_statfs64 268
+#define __NR_fstatfs64 269
+#define __NR_tgkill 270
+#define __NR_utimes 271
+#define __NR_fadvise64_64 272
+#define __NR_vserver 273
+#define __NR_mbind 274
+#define __NR_get_mempolicy 275
+#define __NR_set_mempolicy 276
+#define __NR_mq_open 277
+#define __NR_mq_unlink 278
+#define __NR_mq_timedsend 279
+#define __NR_mq_timedreceive 280
+#define __NR_mq_notify 281
+#define __NR_mq_getsetattr 282
+#define __NR_kexec_load 283
+#define __NR_waitid 284
+#define __NR_add_key 286
+#define __NR_request_key 287
+#define __NR_keyctl 288
+#define __NR_ioprio_set 289
+#define __NR_ioprio_get 290
+#define __NR_inotify_init 291
+#define __NR_inotify_add_watch 292
+#define __NR_inotify_rm_watch 293
+#define __NR_migrate_pages 294
+#define __NR_openat 295
+#define __NR_mkdirat 296
+#define __NR_mknodat 297
+#define __NR_fchownat 298
+#define __NR_futimesat 299
+#define __NR_fstatat64 300
+#define __NR_unlinkat 301
+#define __NR_renameat 302
+#define __NR_linkat 303
+#define __NR_symlinkat 304
+#define __NR_readlinkat 305
+#define __NR_fchmodat 306
+#define __NR_faccessat 307
+#define __NR_pselect6 308
+#define __NR_ppoll 309
+#define __NR_unshare 310
+#define __NR_set_robust_list 311
+#define __NR_get_robust_list 312
+#define __NR_splice 313
+#define __NR_sync_file_range 314
+#define __NR_tee 315
+#define __NR_vmsplice 316
+#define __NR_move_pages 317
+#define __NR_getcpu 318
+#define __NR_epoll_pwait 319
+#define __NR_utimensat 320
+#define __NR_signalfd 321
+#define __NR_timerfd_create 322
+#define __NR_eventfd 323
+#define __NR_fallocate 324
+#define __NR_timerfd_settime 325
+#define __NR_timerfd_gettime 326
+#define __NR_signalfd4 327
+#define __NR_eventfd2 328
+#define __NR_epoll_create1 329
+#define __NR_dup3 330
+#define __NR_pipe2 331
+#define __NR_inotify_init1 332
+#define __NR_preadv 333
+#define __NR_pwritev 334
+#define __NR_rt_tgsigqueueinfo 335
+#define __NR_perf_event_open 336
+#define __NR_recvmmsg 337
+#define __NR_fanotify_init 338
+#define __NR_fanotify_mark 339
+#define __NR_prlimit64 340
+#define __NR_name_to_handle_at 341
+#define __NR_open_by_handle_at 342
+#define __NR_clock_adjtime 343
+#define __NR_syncfs 344
+#define __NR_sendmmsg 345
+#define __NR_setns 346
+#define __NR_process_vm_readv 347
+#define __NR_process_vm_writev 348
+#define __NR_kcmp 349
+#define __NR_finit_module 350
+#define __NR_sched_setattr 351
+#define __NR_sched_getattr 352
+#define __NR_renameat2 353
+#define __NR_seccomp 354
+#define __NR_getrandom 355
+#define __NR_memfd_create 356
+#define __NR_bpf 357
+#define __NR_execveat 358
+#define __NR_socket 359
+#define __NR_socketpair 360
+#define __NR_bind 361
+#define __NR_connect 362
+#define __NR_listen 363
+#define __NR_accept4 364
+#define __NR_getsockopt 365
+#define __NR_setsockopt 366
+#define __NR_getsockname 367
+#define __NR_getpeername 368
+#define __NR_sendto 369
+#define __NR_sendmsg 370
+#define __NR_recvfrom 371
+#define __NR_recvmsg 372
+#define __NR_shutdown 373
+#define __NR_userfaultfd 374
+#define __NR_membarrier 375
+#define __NR_mlock2 376
+#define __NR_copy_file_range 377
+#define __NR_preadv2 378
+#define __NR_pwritev2 379
+#define __NR_pkey_mprotect 380
+#define __NR_pkey_alloc 381
+#define __NR_pkey_free 382
+#define __NR_statx 383
+#define __NR_arch_prctl 384
+#define __NR_io_pgetevents 385
+#define __NR_rseq 386
+#define __NR_semget 393
+#define __NR_semctl 394
+#define __NR_shmget 395
+#define __NR_shmctl 396
+#define __NR_shmat 397
+#define __NR_shmdt 398
+#define __NR_msgget 399
+#define __NR_msgsnd 400
+#define __NR_msgrcv 401
+#define __NR_msgctl 402
+#define __NR_clock_gettime64 403
+#define __NR_clock_settime64 404
+#define __NR_clock_adjtime64 405
+#define __NR_clock_getres_time64 406
+#define __NR_clock_nanosleep_time64 407
+#define __NR_timer_gettime64 408
+#define __NR_timer_settime64 409
+#define __NR_timerfd_gettime64 410
+#define __NR_timerfd_settime64 411
+#define __NR_utimensat_time64 412
+#define __NR_pselect6_time64 413
+#define __NR_ppoll_time64 414
+#define __NR_io_pgetevents_time64 416
+#define __NR_recvmmsg_time64 417
+#define __NR_mq_timedsend_time64 418
+#define __NR_mq_timedreceive_time64 419
+#define __NR_semtimedop_time64 420
+#define __NR_rt_sigtimedwait_time64 421
+#define __NR_futex_time64 422
+#define __NR_sched_rr_get_interval_time64 423
+#define __NR_pidfd_send_signal 424
+#define __NR_io_uring_setup 425
+#define __NR_io_uring_enter 426
+#define __NR_io_uring_register 427
+#define __NR_open_tree 428
+#define __NR_move_mount 429
+#define __NR_fsopen 430
+#define __NR_fsconfig 431
+#define __NR_fsmount 432
+#define __NR_fspick 433
+#define __NR_pidfd_open 434
+#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
+#define __NR_process_madvise 440
+#define __NR_epoll_pwait2 441
+#define __NR_mount_setattr 442
+#define __NR_quotactl_fd 443
+#define __NR_landlock_create_ruleset 444
+#define __NR_landlock_add_rule 445
+#define __NR_landlock_restrict_self 446
+#define __NR_memfd_secret 447
+#define __NR_process_mrelease 448
+#define __NR_futex_waitv 449
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/unistd_64.h b/x86_64-linux-musl/include/asm-x86/asm/unistd_64.h
new file mode 100644
index 0000000..5fa4d2c
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/unistd_64.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_ASM_UNISTD_64_H
+#define _UAPI_ASM_UNISTD_64_H
+#define __NR_read 0
+#define __NR_write 1
+#define __NR_open 2
+#define __NR_close 3
+#define __NR_stat 4
+#define __NR_fstat 5
+#define __NR_lstat 6
+#define __NR_poll 7
+#define __NR_lseek 8
+#define __NR_mmap 9
+#define __NR_mprotect 10
+#define __NR_munmap 11
+#define __NR_brk 12
+#define __NR_rt_sigaction 13
+#define __NR_rt_sigprocmask 14
+#define __NR_rt_sigreturn 15
+#define __NR_ioctl 16
+#define __NR_pread64 17
+#define __NR_pwrite64 18
+#define __NR_readv 19
+#define __NR_writev 20
+#define __NR_access 21
+#define __NR_pipe 22
+#define __NR_select 23
+#define __NR_sched_yield 24
+#define __NR_mremap 25
+#define __NR_msync 26
+#define __NR_mincore 27
+#define __NR_madvise 28
+#define __NR_shmget 29
+#define __NR_shmat 30
+#define __NR_shmctl 31
+#define __NR_dup 32
+#define __NR_dup2 33
+#define __NR_pause 34
+#define __NR_nanosleep 35
+#define __NR_getitimer 36
+#define __NR_alarm 37
+#define __NR_setitimer 38
+#define __NR_getpid 39
+#define __NR_sendfile 40
+#define __NR_socket 41
+#define __NR_connect 42
+#define __NR_accept 43
+#define __NR_sendto 44
+#define __NR_recvfrom 45
+#define __NR_sendmsg 46
+#define __NR_recvmsg 47
+#define __NR_shutdown 48
+#define __NR_bind 49
+#define __NR_listen 50
+#define __NR_getsockname 51
+#define __NR_getpeername 52
+#define __NR_socketpair 53
+#define __NR_setsockopt 54
+#define __NR_getsockopt 55
+#define __NR_clone 56
+#define __NR_fork 57
+#define __NR_vfork 58
+#define __NR_execve 59
+#define __NR_exit 60
+#define __NR_wait4 61
+#define __NR_kill 62
+#define __NR_uname 63
+#define __NR_semget 64
+#define __NR_semop 65
+#define __NR_semctl 66
+#define __NR_shmdt 67
+#define __NR_msgget 68
+#define __NR_msgsnd 69
+#define __NR_msgrcv 70
+#define __NR_msgctl 71
+#define __NR_fcntl 72
+#define __NR_flock 73
+#define __NR_fsync 74
+#define __NR_fdatasync 75
+#define __NR_truncate 76
+#define __NR_ftruncate 77
+#define __NR_getdents 78
+#define __NR_getcwd 79
+#define __NR_chdir 80
+#define __NR_fchdir 81
+#define __NR_rename 82
+#define __NR_mkdir 83
+#define __NR_rmdir 84
+#define __NR_creat 85
+#define __NR_link 86
+#define __NR_unlink 87
+#define __NR_symlink 88
+#define __NR_readlink 89
+#define __NR_chmod 90
+#define __NR_fchmod 91
+#define __NR_chown 92
+#define __NR_fchown 93
+#define __NR_lchown 94
+#define __NR_umask 95
+#define __NR_gettimeofday 96
+#define __NR_getrlimit 97
+#define __NR_getrusage 98
+#define __NR_sysinfo 99
+#define __NR_times 100
+#define __NR_ptrace 101
+#define __NR_getuid 102
+#define __NR_syslog 103
+#define __NR_getgid 104
+#define __NR_setuid 105
+#define __NR_setgid 106
+#define __NR_geteuid 107
+#define __NR_getegid 108
+#define __NR_setpgid 109
+#define __NR_getppid 110
+#define __NR_getpgrp 111
+#define __NR_setsid 112
+#define __NR_setreuid 113
+#define __NR_setregid 114
+#define __NR_getgroups 115
+#define __NR_setgroups 116
+#define __NR_setresuid 117
+#define __NR_getresuid 118
+#define __NR_setresgid 119
+#define __NR_getresgid 120
+#define __NR_getpgid 121
+#define __NR_setfsuid 122
+#define __NR_setfsgid 123
+#define __NR_getsid 124
+#define __NR_capget 125
+#define __NR_capset 126
+#define __NR_rt_sigpending 127
+#define __NR_rt_sigtimedwait 128
+#define __NR_rt_sigqueueinfo 129
+#define __NR_rt_sigsuspend 130
+#define __NR_sigaltstack 131
+#define __NR_utime 132
+#define __NR_mknod 133
+#define __NR_uselib 134
+#define __NR_personality 135
+#define __NR_ustat 136
+#define __NR_statfs 137
+#define __NR_fstatfs 138
+#define __NR_sysfs 139
+#define __NR_getpriority 140
+#define __NR_setpriority 141
+#define __NR_sched_setparam 142
+#define __NR_sched_getparam 143
+#define __NR_sched_setscheduler 144
+#define __NR_sched_getscheduler 145
+#define __NR_sched_get_priority_max 146
+#define __NR_sched_get_priority_min 147
+#define __NR_sched_rr_get_interval 148
+#define __NR_mlock 149
+#define __NR_munlock 150
+#define __NR_mlockall 151
+#define __NR_munlockall 152
+#define __NR_vhangup 153
+#define __NR_modify_ldt 154
+#define __NR_pivot_root 155
+#define __NR__sysctl 156
+#define __NR_prctl 157
+#define __NR_arch_prctl 158
+#define __NR_adjtimex 159
+#define __NR_setrlimit 160
+#define __NR_chroot 161
+#define __NR_sync 162
+#define __NR_acct 163
+#define __NR_settimeofday 164
+#define __NR_mount 165
+#define __NR_umount2 166
+#define __NR_swapon 167
+#define __NR_swapoff 168
+#define __NR_reboot 169
+#define __NR_sethostname 170
+#define __NR_setdomainname 171
+#define __NR_iopl 172
+#define __NR_ioperm 173
+#define __NR_create_module 174
+#define __NR_init_module 175
+#define __NR_delete_module 176
+#define __NR_get_kernel_syms 177
+#define __NR_query_module 178
+#define __NR_quotactl 179
+#define __NR_nfsservctl 180
+#define __NR_getpmsg 181
+#define __NR_putpmsg 182
+#define __NR_afs_syscall 183
+#define __NR_tuxcall 184
+#define __NR_security 185
+#define __NR_gettid 186
+#define __NR_readahead 187
+#define __NR_setxattr 188
+#define __NR_lsetxattr 189
+#define __NR_fsetxattr 190
+#define __NR_getxattr 191
+#define __NR_lgetxattr 192
+#define __NR_fgetxattr 193
+#define __NR_listxattr 194
+#define __NR_llistxattr 195
+#define __NR_flistxattr 196
+#define __NR_removexattr 197
+#define __NR_lremovexattr 198
+#define __NR_fremovexattr 199
+#define __NR_tkill 200
+#define __NR_time 201
+#define __NR_futex 202
+#define __NR_sched_setaffinity 203
+#define __NR_sched_getaffinity 204
+#define __NR_set_thread_area 205
+#define __NR_io_setup 206
+#define __NR_io_destroy 207
+#define __NR_io_getevents 208
+#define __NR_io_submit 209
+#define __NR_io_cancel 210
+#define __NR_get_thread_area 211
+#define __NR_lookup_dcookie 212
+#define __NR_epoll_create 213
+#define __NR_epoll_ctl_old 214
+#define __NR_epoll_wait_old 215
+#define __NR_remap_file_pages 216
+#define __NR_getdents64 217
+#define __NR_set_tid_address 218
+#define __NR_restart_syscall 219
+#define __NR_semtimedop 220
+#define __NR_fadvise64 221
+#define __NR_timer_create 222
+#define __NR_timer_settime 223
+#define __NR_timer_gettime 224
+#define __NR_timer_getoverrun 225
+#define __NR_timer_delete 226
+#define __NR_clock_settime 227
+#define __NR_clock_gettime 228
+#define __NR_clock_getres 229
+#define __NR_clock_nanosleep 230
+#define __NR_exit_group 231
+#define __NR_epoll_wait 232
+#define __NR_epoll_ctl 233
+#define __NR_tgkill 234
+#define __NR_utimes 235
+#define __NR_vserver 236
+#define __NR_mbind 237
+#define __NR_set_mempolicy 238
+#define __NR_get_mempolicy 239
+#define __NR_mq_open 240
+#define __NR_mq_unlink 241
+#define __NR_mq_timedsend 242
+#define __NR_mq_timedreceive 243
+#define __NR_mq_notify 244
+#define __NR_mq_getsetattr 245
+#define __NR_kexec_load 246
+#define __NR_waitid 247
+#define __NR_add_key 248
+#define __NR_request_key 249
+#define __NR_keyctl 250
+#define __NR_ioprio_set 251
+#define __NR_ioprio_get 252
+#define __NR_inotify_init 253
+#define __NR_inotify_add_watch 254
+#define __NR_inotify_rm_watch 255
+#define __NR_migrate_pages 256
+#define __NR_openat 257
+#define __NR_mkdirat 258
+#define __NR_mknodat 259
+#define __NR_fchownat 260
+#define __NR_futimesat 261
+#define __NR_newfstatat 262
+#define __NR_unlinkat 263
+#define __NR_renameat 264
+#define __NR_linkat 265
+#define __NR_symlinkat 266
+#define __NR_readlinkat 267
+#define __NR_fchmodat 268
+#define __NR_faccessat 269
+#define __NR_pselect6 270
+#define __NR_ppoll 271
+#define __NR_unshare 272
+#define __NR_set_robust_list 273
+#define __NR_get_robust_list 274
+#define __NR_splice 275
+#define __NR_tee 276
+#define __NR_sync_file_range 277
+#define __NR_vmsplice 278
+#define __NR_move_pages 279
+#define __NR_utimensat 280
+#define __NR_epoll_pwait 281
+#define __NR_signalfd 282
+#define __NR_timerfd_create 283
+#define __NR_eventfd 284
+#define __NR_fallocate 285
+#define __NR_timerfd_settime 286
+#define __NR_timerfd_gettime 287
+#define __NR_accept4 288
+#define __NR_signalfd4 289
+#define __NR_eventfd2 290
+#define __NR_epoll_create1 291
+#define __NR_dup3 292
+#define __NR_pipe2 293
+#define __NR_inotify_init1 294
+#define __NR_preadv 295
+#define __NR_pwritev 296
+#define __NR_rt_tgsigqueueinfo 297
+#define __NR_perf_event_open 298
+#define __NR_recvmmsg 299
+#define __NR_fanotify_init 300
+#define __NR_fanotify_mark 301
+#define __NR_prlimit64 302
+#define __NR_name_to_handle_at 303
+#define __NR_open_by_handle_at 304
+#define __NR_clock_adjtime 305
+#define __NR_syncfs 306
+#define __NR_sendmmsg 307
+#define __NR_setns 308
+#define __NR_getcpu 309
+#define __NR_process_vm_readv 310
+#define __NR_process_vm_writev 311
+#define __NR_kcmp 312
+#define __NR_finit_module 313
+#define __NR_sched_setattr 314
+#define __NR_sched_getattr 315
+#define __NR_renameat2 316
+#define __NR_seccomp 317
+#define __NR_getrandom 318
+#define __NR_memfd_create 319
+#define __NR_kexec_file_load 320
+#define __NR_bpf 321
+#define __NR_execveat 322
+#define __NR_userfaultfd 323
+#define __NR_membarrier 324
+#define __NR_mlock2 325
+#define __NR_copy_file_range 326
+#define __NR_preadv2 327
+#define __NR_pwritev2 328
+#define __NR_pkey_mprotect 329
+#define __NR_pkey_alloc 330
+#define __NR_pkey_free 331
+#define __NR_statx 332
+#define __NR_io_pgetevents 333
+#define __NR_rseq 334
+#define __NR_pidfd_send_signal 424
+#define __NR_io_uring_setup 425
+#define __NR_io_uring_enter 426
+#define __NR_io_uring_register 427
+#define __NR_open_tree 428
+#define __NR_move_mount 429
+#define __NR_fsopen 430
+#define __NR_fsconfig 431
+#define __NR_fsmount 432
+#define __NR_fspick 433
+#define __NR_pidfd_open 434
+#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
+#define __NR_process_madvise 440
+#define __NR_epoll_pwait2 441
+#define __NR_mount_setattr 442
+#define __NR_quotactl_fd 443
+#define __NR_landlock_create_ruleset 444
+#define __NR_landlock_add_rule 445
+#define __NR_landlock_restrict_self 446
+#define __NR_memfd_secret 447
+#define __NR_process_mrelease 448
+#define __NR_futex_waitv 449
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/unistd_x32.h b/x86_64-linux-musl/include/asm-x86/asm/unistd_x32.h
new file mode 100644
index 0000000..b7abf12
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/unistd_x32.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_ASM_UNISTD_X32_H
+#define _UAPI_ASM_UNISTD_X32_H
+#define __NR_read (__X32_SYSCALL_BIT + 0)
+#define __NR_write (__X32_SYSCALL_BIT + 1)
+#define __NR_open (__X32_SYSCALL_BIT + 2)
+#define __NR_close (__X32_SYSCALL_BIT + 3)
+#define __NR_stat (__X32_SYSCALL_BIT + 4)
+#define __NR_fstat (__X32_SYSCALL_BIT + 5)
+#define __NR_lstat (__X32_SYSCALL_BIT + 6)
+#define __NR_poll (__X32_SYSCALL_BIT + 7)
+#define __NR_lseek (__X32_SYSCALL_BIT + 8)
+#define __NR_mmap (__X32_SYSCALL_BIT + 9)
+#define __NR_mprotect (__X32_SYSCALL_BIT + 10)
+#define __NR_munmap (__X32_SYSCALL_BIT + 11)
+#define __NR_brk (__X32_SYSCALL_BIT + 12)
+#define __NR_rt_sigprocmask (__X32_SYSCALL_BIT + 14)
+#define __NR_pread64 (__X32_SYSCALL_BIT + 17)
+#define __NR_pwrite64 (__X32_SYSCALL_BIT + 18)
+#define __NR_access (__X32_SYSCALL_BIT + 21)
+#define __NR_pipe (__X32_SYSCALL_BIT + 22)
+#define __NR_select (__X32_SYSCALL_BIT + 23)
+#define __NR_sched_yield (__X32_SYSCALL_BIT + 24)
+#define __NR_mremap (__X32_SYSCALL_BIT + 25)
+#define __NR_msync (__X32_SYSCALL_BIT + 26)
+#define __NR_mincore (__X32_SYSCALL_BIT + 27)
+#define __NR_madvise (__X32_SYSCALL_BIT + 28)
+#define __NR_shmget (__X32_SYSCALL_BIT + 29)
+#define __NR_shmat (__X32_SYSCALL_BIT + 30)
+#define __NR_shmctl (__X32_SYSCALL_BIT + 31)
+#define __NR_dup (__X32_SYSCALL_BIT + 32)
+#define __NR_dup2 (__X32_SYSCALL_BIT + 33)
+#define __NR_pause (__X32_SYSCALL_BIT + 34)
+#define __NR_nanosleep (__X32_SYSCALL_BIT + 35)
+#define __NR_getitimer (__X32_SYSCALL_BIT + 36)
+#define __NR_alarm (__X32_SYSCALL_BIT + 37)
+#define __NR_setitimer (__X32_SYSCALL_BIT + 38)
+#define __NR_getpid (__X32_SYSCALL_BIT + 39)
+#define __NR_sendfile (__X32_SYSCALL_BIT + 40)
+#define __NR_socket (__X32_SYSCALL_BIT + 41)
+#define __NR_connect (__X32_SYSCALL_BIT + 42)
+#define __NR_accept (__X32_SYSCALL_BIT + 43)
+#define __NR_sendto (__X32_SYSCALL_BIT + 44)
+#define __NR_shutdown (__X32_SYSCALL_BIT + 48)
+#define __NR_bind (__X32_SYSCALL_BIT + 49)
+#define __NR_listen (__X32_SYSCALL_BIT + 50)
+#define __NR_getsockname (__X32_SYSCALL_BIT + 51)
+#define __NR_getpeername (__X32_SYSCALL_BIT + 52)
+#define __NR_socketpair (__X32_SYSCALL_BIT + 53)
+#define __NR_clone (__X32_SYSCALL_BIT + 56)
+#define __NR_fork (__X32_SYSCALL_BIT + 57)
+#define __NR_vfork (__X32_SYSCALL_BIT + 58)
+#define __NR_exit (__X32_SYSCALL_BIT + 60)
+#define __NR_wait4 (__X32_SYSCALL_BIT + 61)
+#define __NR_kill (__X32_SYSCALL_BIT + 62)
+#define __NR_uname (__X32_SYSCALL_BIT + 63)
+#define __NR_semget (__X32_SYSCALL_BIT + 64)
+#define __NR_semop (__X32_SYSCALL_BIT + 65)
+#define __NR_semctl (__X32_SYSCALL_BIT + 66)
+#define __NR_shmdt (__X32_SYSCALL_BIT + 67)
+#define __NR_msgget (__X32_SYSCALL_BIT + 68)
+#define __NR_msgsnd (__X32_SYSCALL_BIT + 69)
+#define __NR_msgrcv (__X32_SYSCALL_BIT + 70)
+#define __NR_msgctl (__X32_SYSCALL_BIT + 71)
+#define __NR_fcntl (__X32_SYSCALL_BIT + 72)
+#define __NR_flock (__X32_SYSCALL_BIT + 73)
+#define __NR_fsync (__X32_SYSCALL_BIT + 74)
+#define __NR_fdatasync (__X32_SYSCALL_BIT + 75)
+#define __NR_truncate (__X32_SYSCALL_BIT + 76)
+#define __NR_ftruncate (__X32_SYSCALL_BIT + 77)
+#define __NR_getdents (__X32_SYSCALL_BIT + 78)
+#define __NR_getcwd (__X32_SYSCALL_BIT + 79)
+#define __NR_chdir (__X32_SYSCALL_BIT + 80)
+#define __NR_fchdir (__X32_SYSCALL_BIT + 81)
+#define __NR_rename (__X32_SYSCALL_BIT + 82)
+#define __NR_mkdir (__X32_SYSCALL_BIT + 83)
+#define __NR_rmdir (__X32_SYSCALL_BIT + 84)
+#define __NR_creat (__X32_SYSCALL_BIT + 85)
+#define __NR_link (__X32_SYSCALL_BIT + 86)
+#define __NR_unlink (__X32_SYSCALL_BIT + 87)
+#define __NR_symlink (__X32_SYSCALL_BIT + 88)
+#define __NR_readlink (__X32_SYSCALL_BIT + 89)
+#define __NR_chmod (__X32_SYSCALL_BIT + 90)
+#define __NR_fchmod (__X32_SYSCALL_BIT + 91)
+#define __NR_chown (__X32_SYSCALL_BIT + 92)
+#define __NR_fchown (__X32_SYSCALL_BIT + 93)
+#define __NR_lchown (__X32_SYSCALL_BIT + 94)
+#define __NR_umask (__X32_SYSCALL_BIT + 95)
+#define __NR_gettimeofday (__X32_SYSCALL_BIT + 96)
+#define __NR_getrlimit (__X32_SYSCALL_BIT + 97)
+#define __NR_getrusage (__X32_SYSCALL_BIT + 98)
+#define __NR_sysinfo (__X32_SYSCALL_BIT + 99)
+#define __NR_times (__X32_SYSCALL_BIT + 100)
+#define __NR_getuid (__X32_SYSCALL_BIT + 102)
+#define __NR_syslog (__X32_SYSCALL_BIT + 103)
+#define __NR_getgid (__X32_SYSCALL_BIT + 104)
+#define __NR_setuid (__X32_SYSCALL_BIT + 105)
+#define __NR_setgid (__X32_SYSCALL_BIT + 106)
+#define __NR_geteuid (__X32_SYSCALL_BIT + 107)
+#define __NR_getegid (__X32_SYSCALL_BIT + 108)
+#define __NR_setpgid (__X32_SYSCALL_BIT + 109)
+#define __NR_getppid (__X32_SYSCALL_BIT + 110)
+#define __NR_getpgrp (__X32_SYSCALL_BIT + 111)
+#define __NR_setsid (__X32_SYSCALL_BIT + 112)
+#define __NR_setreuid (__X32_SYSCALL_BIT + 113)
+#define __NR_setregid (__X32_SYSCALL_BIT + 114)
+#define __NR_getgroups (__X32_SYSCALL_BIT + 115)
+#define __NR_setgroups (__X32_SYSCALL_BIT + 116)
+#define __NR_setresuid (__X32_SYSCALL_BIT + 117)
+#define __NR_getresuid (__X32_SYSCALL_BIT + 118)
+#define __NR_setresgid (__X32_SYSCALL_BIT + 119)
+#define __NR_getresgid (__X32_SYSCALL_BIT + 120)
+#define __NR_getpgid (__X32_SYSCALL_BIT + 121)
+#define __NR_setfsuid (__X32_SYSCALL_BIT + 122)
+#define __NR_setfsgid (__X32_SYSCALL_BIT + 123)
+#define __NR_getsid (__X32_SYSCALL_BIT + 124)
+#define __NR_capget (__X32_SYSCALL_BIT + 125)
+#define __NR_capset (__X32_SYSCALL_BIT + 126)
+#define __NR_rt_sigsuspend (__X32_SYSCALL_BIT + 130)
+#define __NR_utime (__X32_SYSCALL_BIT + 132)
+#define __NR_mknod (__X32_SYSCALL_BIT + 133)
+#define __NR_personality (__X32_SYSCALL_BIT + 135)
+#define __NR_ustat (__X32_SYSCALL_BIT + 136)
+#define __NR_statfs (__X32_SYSCALL_BIT + 137)
+#define __NR_fstatfs (__X32_SYSCALL_BIT + 138)
+#define __NR_sysfs (__X32_SYSCALL_BIT + 139)
+#define __NR_getpriority (__X32_SYSCALL_BIT + 140)
+#define __NR_setpriority (__X32_SYSCALL_BIT + 141)
+#define __NR_sched_setparam (__X32_SYSCALL_BIT + 142)
+#define __NR_sched_getparam (__X32_SYSCALL_BIT + 143)
+#define __NR_sched_setscheduler (__X32_SYSCALL_BIT + 144)
+#define __NR_sched_getscheduler (__X32_SYSCALL_BIT + 145)
+#define __NR_sched_get_priority_max (__X32_SYSCALL_BIT + 146)
+#define __NR_sched_get_priority_min (__X32_SYSCALL_BIT + 147)
+#define __NR_sched_rr_get_interval (__X32_SYSCALL_BIT + 148)
+#define __NR_mlock (__X32_SYSCALL_BIT + 149)
+#define __NR_munlock (__X32_SYSCALL_BIT + 150)
+#define __NR_mlockall (__X32_SYSCALL_BIT + 151)
+#define __NR_munlockall (__X32_SYSCALL_BIT + 152)
+#define __NR_vhangup (__X32_SYSCALL_BIT + 153)
+#define __NR_modify_ldt (__X32_SYSCALL_BIT + 154)
+#define __NR_pivot_root (__X32_SYSCALL_BIT + 155)
+#define __NR_prctl (__X32_SYSCALL_BIT + 157)
+#define __NR_arch_prctl (__X32_SYSCALL_BIT + 158)
+#define __NR_adjtimex (__X32_SYSCALL_BIT + 159)
+#define __NR_setrlimit (__X32_SYSCALL_BIT + 160)
+#define __NR_chroot (__X32_SYSCALL_BIT + 161)
+#define __NR_sync (__X32_SYSCALL_BIT + 162)
+#define __NR_acct (__X32_SYSCALL_BIT + 163)
+#define __NR_settimeofday (__X32_SYSCALL_BIT + 164)
+#define __NR_mount (__X32_SYSCALL_BIT + 165)
+#define __NR_umount2 (__X32_SYSCALL_BIT + 166)
+#define __NR_swapon (__X32_SYSCALL_BIT + 167)
+#define __NR_swapoff (__X32_SYSCALL_BIT + 168)
+#define __NR_reboot (__X32_SYSCALL_BIT + 169)
+#define __NR_sethostname (__X32_SYSCALL_BIT + 170)
+#define __NR_setdomainname (__X32_SYSCALL_BIT + 171)
+#define __NR_iopl (__X32_SYSCALL_BIT + 172)
+#define __NR_ioperm (__X32_SYSCALL_BIT + 173)
+#define __NR_init_module (__X32_SYSCALL_BIT + 175)
+#define __NR_delete_module (__X32_SYSCALL_BIT + 176)
+#define __NR_quotactl (__X32_SYSCALL_BIT + 179)
+#define __NR_getpmsg (__X32_SYSCALL_BIT + 181)
+#define __NR_putpmsg (__X32_SYSCALL_BIT + 182)
+#define __NR_afs_syscall (__X32_SYSCALL_BIT + 183)
+#define __NR_tuxcall (__X32_SYSCALL_BIT + 184)
+#define __NR_security (__X32_SYSCALL_BIT + 185)
+#define __NR_gettid (__X32_SYSCALL_BIT + 186)
+#define __NR_readahead (__X32_SYSCALL_BIT + 187)
+#define __NR_setxattr (__X32_SYSCALL_BIT + 188)
+#define __NR_lsetxattr (__X32_SYSCALL_BIT + 189)
+#define __NR_fsetxattr (__X32_SYSCALL_BIT + 190)
+#define __NR_getxattr (__X32_SYSCALL_BIT + 191)
+#define __NR_lgetxattr (__X32_SYSCALL_BIT + 192)
+#define __NR_fgetxattr (__X32_SYSCALL_BIT + 193)
+#define __NR_listxattr (__X32_SYSCALL_BIT + 194)
+#define __NR_llistxattr (__X32_SYSCALL_BIT + 195)
+#define __NR_flistxattr (__X32_SYSCALL_BIT + 196)
+#define __NR_removexattr (__X32_SYSCALL_BIT + 197)
+#define __NR_lremovexattr (__X32_SYSCALL_BIT + 198)
+#define __NR_fremovexattr (__X32_SYSCALL_BIT + 199)
+#define __NR_tkill (__X32_SYSCALL_BIT + 200)
+#define __NR_time (__X32_SYSCALL_BIT + 201)
+#define __NR_futex (__X32_SYSCALL_BIT + 202)
+#define __NR_sched_setaffinity (__X32_SYSCALL_BIT + 203)
+#define __NR_sched_getaffinity (__X32_SYSCALL_BIT + 204)
+#define __NR_io_destroy (__X32_SYSCALL_BIT + 207)
+#define __NR_io_getevents (__X32_SYSCALL_BIT + 208)
+#define __NR_io_cancel (__X32_SYSCALL_BIT + 210)
+#define __NR_lookup_dcookie (__X32_SYSCALL_BIT + 212)
+#define __NR_epoll_create (__X32_SYSCALL_BIT + 213)
+#define __NR_remap_file_pages (__X32_SYSCALL_BIT + 216)
+#define __NR_getdents64 (__X32_SYSCALL_BIT + 217)
+#define __NR_set_tid_address (__X32_SYSCALL_BIT + 218)
+#define __NR_restart_syscall (__X32_SYSCALL_BIT + 219)
+#define __NR_semtimedop (__X32_SYSCALL_BIT + 220)
+#define __NR_fadvise64 (__X32_SYSCALL_BIT + 221)
+#define __NR_timer_settime (__X32_SYSCALL_BIT + 223)
+#define __NR_timer_gettime (__X32_SYSCALL_BIT + 224)
+#define __NR_timer_getoverrun (__X32_SYSCALL_BIT + 225)
+#define __NR_timer_delete (__X32_SYSCALL_BIT + 226)
+#define __NR_clock_settime (__X32_SYSCALL_BIT + 227)
+#define __NR_clock_gettime (__X32_SYSCALL_BIT + 228)
+#define __NR_clock_getres (__X32_SYSCALL_BIT + 229)
+#define __NR_clock_nanosleep (__X32_SYSCALL_BIT + 230)
+#define __NR_exit_group (__X32_SYSCALL_BIT + 231)
+#define __NR_epoll_wait (__X32_SYSCALL_BIT + 232)
+#define __NR_epoll_ctl (__X32_SYSCALL_BIT + 233)
+#define __NR_tgkill (__X32_SYSCALL_BIT + 234)
+#define __NR_utimes (__X32_SYSCALL_BIT + 235)
+#define __NR_mbind (__X32_SYSCALL_BIT + 237)
+#define __NR_set_mempolicy (__X32_SYSCALL_BIT + 238)
+#define __NR_get_mempolicy (__X32_SYSCALL_BIT + 239)
+#define __NR_mq_open (__X32_SYSCALL_BIT + 240)
+#define __NR_mq_unlink (__X32_SYSCALL_BIT + 241)
+#define __NR_mq_timedsend (__X32_SYSCALL_BIT + 242)
+#define __NR_mq_timedreceive (__X32_SYSCALL_BIT + 243)
+#define __NR_mq_getsetattr (__X32_SYSCALL_BIT + 245)
+#define __NR_add_key (__X32_SYSCALL_BIT + 248)
+#define __NR_request_key (__X32_SYSCALL_BIT + 249)
+#define __NR_keyctl (__X32_SYSCALL_BIT + 250)
+#define __NR_ioprio_set (__X32_SYSCALL_BIT + 251)
+#define __NR_ioprio_get (__X32_SYSCALL_BIT + 252)
+#define __NR_inotify_init (__X32_SYSCALL_BIT + 253)
+#define __NR_inotify_add_watch (__X32_SYSCALL_BIT + 254)
+#define __NR_inotify_rm_watch (__X32_SYSCALL_BIT + 255)
+#define __NR_migrate_pages (__X32_SYSCALL_BIT + 256)
+#define __NR_openat (__X32_SYSCALL_BIT + 257)
+#define __NR_mkdirat (__X32_SYSCALL_BIT + 258)
+#define __NR_mknodat (__X32_SYSCALL_BIT + 259)
+#define __NR_fchownat (__X32_SYSCALL_BIT + 260)
+#define __NR_futimesat (__X32_SYSCALL_BIT + 261)
+#define __NR_newfstatat (__X32_SYSCALL_BIT + 262)
+#define __NR_unlinkat (__X32_SYSCALL_BIT + 263)
+#define __NR_renameat (__X32_SYSCALL_BIT + 264)
+#define __NR_linkat (__X32_SYSCALL_BIT + 265)
+#define __NR_symlinkat (__X32_SYSCALL_BIT + 266)
+#define __NR_readlinkat (__X32_SYSCALL_BIT + 267)
+#define __NR_fchmodat (__X32_SYSCALL_BIT + 268)
+#define __NR_faccessat (__X32_SYSCALL_BIT + 269)
+#define __NR_pselect6 (__X32_SYSCALL_BIT + 270)
+#define __NR_ppoll (__X32_SYSCALL_BIT + 271)
+#define __NR_unshare (__X32_SYSCALL_BIT + 272)
+#define __NR_splice (__X32_SYSCALL_BIT + 275)
+#define __NR_tee (__X32_SYSCALL_BIT + 276)
+#define __NR_sync_file_range (__X32_SYSCALL_BIT + 277)
+#define __NR_utimensat (__X32_SYSCALL_BIT + 280)
+#define __NR_epoll_pwait (__X32_SYSCALL_BIT + 281)
+#define __NR_signalfd (__X32_SYSCALL_BIT + 282)
+#define __NR_timerfd_create (__X32_SYSCALL_BIT + 283)
+#define __NR_eventfd (__X32_SYSCALL_BIT + 284)
+#define __NR_fallocate (__X32_SYSCALL_BIT + 285)
+#define __NR_timerfd_settime (__X32_SYSCALL_BIT + 286)
+#define __NR_timerfd_gettime (__X32_SYSCALL_BIT + 287)
+#define __NR_accept4 (__X32_SYSCALL_BIT + 288)
+#define __NR_signalfd4 (__X32_SYSCALL_BIT + 289)
+#define __NR_eventfd2 (__X32_SYSCALL_BIT + 290)
+#define __NR_epoll_create1 (__X32_SYSCALL_BIT + 291)
+#define __NR_dup3 (__X32_SYSCALL_BIT + 292)
+#define __NR_pipe2 (__X32_SYSCALL_BIT + 293)
+#define __NR_inotify_init1 (__X32_SYSCALL_BIT + 294)
+#define __NR_perf_event_open (__X32_SYSCALL_BIT + 298)
+#define __NR_fanotify_init (__X32_SYSCALL_BIT + 300)
+#define __NR_fanotify_mark (__X32_SYSCALL_BIT + 301)
+#define __NR_prlimit64 (__X32_SYSCALL_BIT + 302)
+#define __NR_name_to_handle_at (__X32_SYSCALL_BIT + 303)
+#define __NR_open_by_handle_at (__X32_SYSCALL_BIT + 304)
+#define __NR_clock_adjtime (__X32_SYSCALL_BIT + 305)
+#define __NR_syncfs (__X32_SYSCALL_BIT + 306)
+#define __NR_setns (__X32_SYSCALL_BIT + 308)
+#define __NR_getcpu (__X32_SYSCALL_BIT + 309)
+#define __NR_kcmp (__X32_SYSCALL_BIT + 312)
+#define __NR_finit_module (__X32_SYSCALL_BIT + 313)
+#define __NR_sched_setattr (__X32_SYSCALL_BIT + 314)
+#define __NR_sched_getattr (__X32_SYSCALL_BIT + 315)
+#define __NR_renameat2 (__X32_SYSCALL_BIT + 316)
+#define __NR_seccomp (__X32_SYSCALL_BIT + 317)
+#define __NR_getrandom (__X32_SYSCALL_BIT + 318)
+#define __NR_memfd_create (__X32_SYSCALL_BIT + 319)
+#define __NR_kexec_file_load (__X32_SYSCALL_BIT + 320)
+#define __NR_bpf (__X32_SYSCALL_BIT + 321)
+#define __NR_userfaultfd (__X32_SYSCALL_BIT + 323)
+#define __NR_membarrier (__X32_SYSCALL_BIT + 324)
+#define __NR_mlock2 (__X32_SYSCALL_BIT + 325)
+#define __NR_copy_file_range (__X32_SYSCALL_BIT + 326)
+#define __NR_pkey_mprotect (__X32_SYSCALL_BIT + 329)
+#define __NR_pkey_alloc (__X32_SYSCALL_BIT + 330)
+#define __NR_pkey_free (__X32_SYSCALL_BIT + 331)
+#define __NR_statx (__X32_SYSCALL_BIT + 332)
+#define __NR_io_pgetevents (__X32_SYSCALL_BIT + 333)
+#define __NR_rseq (__X32_SYSCALL_BIT + 334)
+#define __NR_pidfd_send_signal (__X32_SYSCALL_BIT + 424)
+#define __NR_io_uring_setup (__X32_SYSCALL_BIT + 425)
+#define __NR_io_uring_enter (__X32_SYSCALL_BIT + 426)
+#define __NR_io_uring_register (__X32_SYSCALL_BIT + 427)
+#define __NR_open_tree (__X32_SYSCALL_BIT + 428)
+#define __NR_move_mount (__X32_SYSCALL_BIT + 429)
+#define __NR_fsopen (__X32_SYSCALL_BIT + 430)
+#define __NR_fsconfig (__X32_SYSCALL_BIT + 431)
+#define __NR_fsmount (__X32_SYSCALL_BIT + 432)
+#define __NR_fspick (__X32_SYSCALL_BIT + 433)
+#define __NR_pidfd_open (__X32_SYSCALL_BIT + 434)
+#define __NR_clone3 (__X32_SYSCALL_BIT + 435)
+#define __NR_close_range (__X32_SYSCALL_BIT + 436)
+#define __NR_openat2 (__X32_SYSCALL_BIT + 437)
+#define __NR_pidfd_getfd (__X32_SYSCALL_BIT + 438)
+#define __NR_faccessat2 (__X32_SYSCALL_BIT + 439)
+#define __NR_process_madvise (__X32_SYSCALL_BIT + 440)
+#define __NR_epoll_pwait2 (__X32_SYSCALL_BIT + 441)
+#define __NR_mount_setattr (__X32_SYSCALL_BIT + 442)
+#define __NR_quotactl_fd (__X32_SYSCALL_BIT + 443)
+#define __NR_landlock_create_ruleset (__X32_SYSCALL_BIT + 444)
+#define __NR_landlock_add_rule (__X32_SYSCALL_BIT + 445)
+#define __NR_landlock_restrict_self (__X32_SYSCALL_BIT + 446)
+#define __NR_memfd_secret (__X32_SYSCALL_BIT + 447)
+#define __NR_process_mrelease (__X32_SYSCALL_BIT + 448)
+#define __NR_futex_waitv (__X32_SYSCALL_BIT + 449)
+#define __NR_rt_sigaction (__X32_SYSCALL_BIT + 512)
+#define __NR_rt_sigreturn (__X32_SYSCALL_BIT + 513)
+#define __NR_ioctl (__X32_SYSCALL_BIT + 514)
+#define __NR_readv (__X32_SYSCALL_BIT + 515)
+#define __NR_writev (__X32_SYSCALL_BIT + 516)
+#define __NR_recvfrom (__X32_SYSCALL_BIT + 517)
+#define __NR_sendmsg (__X32_SYSCALL_BIT + 518)
+#define __NR_recvmsg (__X32_SYSCALL_BIT + 519)
+#define __NR_execve (__X32_SYSCALL_BIT + 520)
+#define __NR_ptrace (__X32_SYSCALL_BIT + 521)
+#define __NR_rt_sigpending (__X32_SYSCALL_BIT + 522)
+#define __NR_rt_sigtimedwait (__X32_SYSCALL_BIT + 523)
+#define __NR_rt_sigqueueinfo (__X32_SYSCALL_BIT + 524)
+#define __NR_sigaltstack (__X32_SYSCALL_BIT + 525)
+#define __NR_timer_create (__X32_SYSCALL_BIT + 526)
+#define __NR_mq_notify (__X32_SYSCALL_BIT + 527)
+#define __NR_kexec_load (__X32_SYSCALL_BIT + 528)
+#define __NR_waitid (__X32_SYSCALL_BIT + 529)
+#define __NR_set_robust_list (__X32_SYSCALL_BIT + 530)
+#define __NR_get_robust_list (__X32_SYSCALL_BIT + 531)
+#define __NR_vmsplice (__X32_SYSCALL_BIT + 532)
+#define __NR_move_pages (__X32_SYSCALL_BIT + 533)
+#define __NR_preadv (__X32_SYSCALL_BIT + 534)
+#define __NR_pwritev (__X32_SYSCALL_BIT + 535)
+#define __NR_rt_tgsigqueueinfo (__X32_SYSCALL_BIT + 536)
+#define __NR_recvmmsg (__X32_SYSCALL_BIT + 537)
+#define __NR_sendmmsg (__X32_SYSCALL_BIT + 538)
+#define __NR_process_vm_readv (__X32_SYSCALL_BIT + 539)
+#define __NR_process_vm_writev (__X32_SYSCALL_BIT + 540)
+#define __NR_setsockopt (__X32_SYSCALL_BIT + 541)
+#define __NR_getsockopt (__X32_SYSCALL_BIT + 542)
+#define __NR_io_setup (__X32_SYSCALL_BIT + 543)
+#define __NR_io_submit (__X32_SYSCALL_BIT + 544)
+#define __NR_execveat (__X32_SYSCALL_BIT + 545)
+#define __NR_preadv2 (__X32_SYSCALL_BIT + 546)
+#define __NR_pwritev2 (__X32_SYSCALL_BIT + 547)
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/vm86.h b/x86_64-linux-musl/include/asm-x86/asm/vm86.h
new file mode 100644
index 0000000..7193484
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/vm86.h
@@ -0,0 +1,96 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_X86_VM86_H
+#define _UAPI_ASM_X86_VM86_H
+#include <asm/processor-flags.h>
+#define BIOSSEG 0x0f000
+#define CPU_086 0
+#define CPU_186 1
+#define CPU_286 2
+#define CPU_386 3
+#define CPU_486 4
+#define CPU_586 5
+#define VM86_TYPE(retval) ((retval) & 0xff)
+#define VM86_ARG(retval) ((retval) >> 8)
+#define VM86_SIGNAL 0
+#define VM86_UNKNOWN 1
+#define VM86_INTx 2
+#define VM86_STI 3
+#define VM86_PICRETURN 4
+#define VM86_TRAP 6
+#define VM86_PLUS_INSTALL_CHECK 0
+#define VM86_ENTER 1
+#define VM86_ENTER_NO_BYPASS 2
+#define VM86_REQUEST_IRQ 3
+#define VM86_FREE_IRQ 4
+#define VM86_GET_IRQ_BITS 5
+#define VM86_GET_AND_RESET_IRQ 6
+struct vm86_regs {
+  long ebx;
+  long ecx;
+  long edx;
+  long esi;
+  long edi;
+  long ebp;
+  long eax;
+  long __null_ds;
+  long __null_es;
+  long __null_fs;
+  long __null_gs;
+  long orig_eax;
+  long eip;
+  unsigned short cs, __csh;
+  long eflags;
+  long esp;
+  unsigned short ss, __ssh;
+  unsigned short es, __esh;
+  unsigned short ds, __dsh;
+  unsigned short fs, __fsh;
+  unsigned short gs, __gsh;
+};
+struct revectored_struct {
+  unsigned long __map[8];
+};
+struct vm86_struct {
+  struct vm86_regs regs;
+  unsigned long flags;
+  unsigned long screen_bitmap;
+  unsigned long cpu_type;
+  struct revectored_struct int_revectored;
+  struct revectored_struct int21_revectored;
+};
+#define VM86_SCREEN_BITMAP 0x0001
+struct vm86plus_info_struct {
+  unsigned long force_return_for_pic : 1;
+  unsigned long vm86dbg_active : 1;
+  unsigned long vm86dbg_TFpendig : 1;
+  unsigned long unused : 28;
+  unsigned long is_vm86pus : 1;
+  unsigned char vm86dbg_intxxtab[32];
+};
+struct vm86plus_struct {
+  struct vm86_regs regs;
+  unsigned long flags;
+  unsigned long screen_bitmap;
+  unsigned long cpu_type;
+  struct revectored_struct int_revectored;
+  struct revectored_struct int21_revectored;
+  struct vm86plus_info_struct vm86plus;
+};
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/vmx.h b/x86_64-linux-musl/include/asm-x86/asm/vmx.h
new file mode 100644
index 0000000..6c07d4c
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/vmx.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 _UAPIVMX_H
+#define _UAPIVMX_H
+#define VMX_EXIT_REASONS_FAILED_VMENTRY 0x80000000
+#define VMX_EXIT_REASONS_SGX_ENCLAVE_MODE 0x08000000
+#define EXIT_REASON_EXCEPTION_NMI 0
+#define EXIT_REASON_EXTERNAL_INTERRUPT 1
+#define EXIT_REASON_TRIPLE_FAULT 2
+#define EXIT_REASON_INIT_SIGNAL 3
+#define EXIT_REASON_SIPI_SIGNAL 4
+#define EXIT_REASON_INTERRUPT_WINDOW 7
+#define EXIT_REASON_NMI_WINDOW 8
+#define EXIT_REASON_TASK_SWITCH 9
+#define EXIT_REASON_CPUID 10
+#define EXIT_REASON_HLT 12
+#define EXIT_REASON_INVD 13
+#define EXIT_REASON_INVLPG 14
+#define EXIT_REASON_RDPMC 15
+#define EXIT_REASON_RDTSC 16
+#define EXIT_REASON_VMCALL 18
+#define EXIT_REASON_VMCLEAR 19
+#define EXIT_REASON_VMLAUNCH 20
+#define EXIT_REASON_VMPTRLD 21
+#define EXIT_REASON_VMPTRST 22
+#define EXIT_REASON_VMREAD 23
+#define EXIT_REASON_VMRESUME 24
+#define EXIT_REASON_VMWRITE 25
+#define EXIT_REASON_VMOFF 26
+#define EXIT_REASON_VMON 27
+#define EXIT_REASON_CR_ACCESS 28
+#define EXIT_REASON_DR_ACCESS 29
+#define EXIT_REASON_IO_INSTRUCTION 30
+#define EXIT_REASON_MSR_READ 31
+#define EXIT_REASON_MSR_WRITE 32
+#define EXIT_REASON_INVALID_STATE 33
+#define EXIT_REASON_MSR_LOAD_FAIL 34
+#define EXIT_REASON_MWAIT_INSTRUCTION 36
+#define EXIT_REASON_MONITOR_TRAP_FLAG 37
+#define EXIT_REASON_MONITOR_INSTRUCTION 39
+#define EXIT_REASON_PAUSE_INSTRUCTION 40
+#define EXIT_REASON_MCE_DURING_VMENTRY 41
+#define EXIT_REASON_TPR_BELOW_THRESHOLD 43
+#define EXIT_REASON_APIC_ACCESS 44
+#define EXIT_REASON_EOI_INDUCED 45
+#define EXIT_REASON_GDTR_IDTR 46
+#define EXIT_REASON_LDTR_TR 47
+#define EXIT_REASON_EPT_VIOLATION 48
+#define EXIT_REASON_EPT_MISCONFIG 49
+#define EXIT_REASON_INVEPT 50
+#define EXIT_REASON_RDTSCP 51
+#define EXIT_REASON_PREEMPTION_TIMER 52
+#define EXIT_REASON_INVVPID 53
+#define EXIT_REASON_WBINVD 54
+#define EXIT_REASON_XSETBV 55
+#define EXIT_REASON_APIC_WRITE 56
+#define EXIT_REASON_RDRAND 57
+#define EXIT_REASON_INVPCID 58
+#define EXIT_REASON_VMFUNC 59
+#define EXIT_REASON_ENCLS 60
+#define EXIT_REASON_RDSEED 61
+#define EXIT_REASON_PML_FULL 62
+#define EXIT_REASON_XSAVES 63
+#define EXIT_REASON_XRSTORS 64
+#define EXIT_REASON_UMWAIT 67
+#define EXIT_REASON_TPAUSE 68
+#define EXIT_REASON_BUS_LOCK 74
+#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_INIT_SIGNAL, "INIT_SIGNAL" }, { EXIT_REASON_SIPI_SIGNAL, "SIPI_SIGNAL" }, { EXIT_REASON_INTERRUPT_WINDOW, "INTERRUPT_WINDOW" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVD, "INVD" }, { EXIT_REASON_INVLPG, "INVLPG" }, { EXIT_REASON_RDPMC, "RDPMC" }, { EXIT_REASON_RDTSC, "RDTSC" }, { EXIT_REASON_VMCALL, "VMCALL" }, { EXIT_REASON_VMCLEAR, "VMCLEAR" }, { EXIT_REASON_VMLAUNCH, "VMLAUNCH" }, { EXIT_REASON_VMPTRLD, "VMPTRLD" }, { EXIT_REASON_VMPTRST, "VMPTRST" }, { EXIT_REASON_VMREAD, "VMREAD" }, { EXIT_REASON_VMRESUME, "VMRESUME" }, { EXIT_REASON_VMWRITE, "VMWRITE" }, { EXIT_REASON_VMOFF, "VMOFF" }, { EXIT_REASON_VMON, "VMON" }, { EXIT_REASON_CR_ACCESS, "CR_ACCESS" }, { EXIT_REASON_DR_ACCESS, "DR_ACCESS" }, { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" }, { EXIT_REASON_MSR_READ, "MSR_READ" }, { EXIT_REASON_MSR_WRITE, "MSR_WRITE" }, { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" }, { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" }, { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" }, { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" }, { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" }, { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_RDTSCP, "RDTSCP" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_XSETBV, "XSETBV" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_RDRAND, "RDRAND" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_VMFUNC, "VMFUNC" }, { EXIT_REASON_ENCLS, "ENCLS" }, { EXIT_REASON_RDSEED, "RDSEED" }, { EXIT_REASON_PML_FULL, "PML_FULL" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }, { EXIT_REASON_UMWAIT, "UMWAIT" }, { EXIT_REASON_TPAUSE, "TPAUSE" }, { EXIT_REASON_BUS_LOCK, "BUS_LOCK" }
+#define VMX_EXIT_REASON_FLAGS { VMX_EXIT_REASONS_FAILED_VMENTRY, "FAILED_VMENTRY" }
+#define VMX_ABORT_SAVE_GUEST_MSR_FAIL 1
+#define VMX_ABORT_LOAD_HOST_PDPTE_FAIL 2
+#define VMX_ABORT_LOAD_HOST_MSR_FAIL 4
+#endif
diff --git a/x86_64-linux-musl/include/asm-x86/asm/vsyscall.h b/x86_64-linux-musl/include/asm-x86/asm/vsyscall.h
new file mode 100644
index 0000000..56abbbc
--- /dev/null
+++ b/x86_64-linux-musl/include/asm-x86/asm/vsyscall.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_ASM_X86_VSYSCALL_H
+#define _UAPI_ASM_X86_VSYSCALL_H
+enum vsyscall_num {
+  __NR_vgettimeofday,
+  __NR_vtime,
+  __NR_vgetcpu,
+};
+#define VSYSCALL_ADDR (- 10UL << 20)
+#endif
diff --git a/x86_64-linux-musl/include/asm/a.out.h b/x86_64-linux-musl/include/asm/a.out.h
new file mode 100644
index 0000000..3a1b845
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/a.out.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 _ASM_X86_A_OUT_H
+#define _ASM_X86_A_OUT_H
+struct exec {
+  unsigned int a_info;
+  unsigned a_text;
+  unsigned a_data;
+  unsigned a_bss;
+  unsigned a_syms;
+  unsigned a_entry;
+  unsigned a_trsize;
+  unsigned a_drsize;
+};
+#define N_TRSIZE(a) ((a).a_trsize)
+#define N_DRSIZE(a) ((a).a_drsize)
+#define N_SYMSIZE(a) ((a).a_syms)
+#endif
diff --git a/x86_64-linux-musl/include/asm/auxvec.h b/x86_64-linux-musl/include/asm/auxvec.h
new file mode 100644
index 0000000..dd86783
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/auxvec.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 _ASM_X86_AUXVEC_H
+#define _ASM_X86_AUXVEC_H
+#ifdef __i386__
+#define AT_SYSINFO 32
+#endif
+#define AT_SYSINFO_EHDR 33
+#define AT_VECTOR_SIZE_ARCH 3
+#endif
diff --git a/x86_64-linux-musl/include/asm/bitsperlong.h b/x86_64-linux-musl/include/asm/bitsperlong.h
new file mode 100644
index 0000000..7eca377
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/bitsperlong.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 __ASM_X86_BITSPERLONG_H
+#define __ASM_X86_BITSPERLONG_H
+#if defined(__x86_64__) && !defined(__ILP32__)
+#define __BITS_PER_LONG 64
+#else
+#define __BITS_PER_LONG 32
+#endif
+#include <asm-generic/bitsperlong.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm/boot.h b/x86_64-linux-musl/include/asm/boot.h
new file mode 100644
index 0000000..7cbb691
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/boot.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_ASM_X86_BOOT_H
+#define _UAPI_ASM_X86_BOOT_H
+#define NORMAL_VGA 0xffff
+#define EXTENDED_VGA 0xfffe
+#define ASK_VGA 0xfffd
+#endif
diff --git a/x86_64-linux-musl/include/asm/bootparam.h b/x86_64-linux-musl/include/asm/bootparam.h
new file mode 100644
index 0000000..7401135
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/bootparam.h
@@ -0,0 +1,195 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_X86_BOOTPARAM_H
+#define _ASM_X86_BOOTPARAM_H
+#define SETUP_NONE 0
+#define SETUP_E820_EXT 1
+#define SETUP_DTB 2
+#define SETUP_PCI 3
+#define SETUP_EFI 4
+#define SETUP_APPLE_PROPERTIES 5
+#define SETUP_JAILHOUSE 6
+#define SETUP_INDIRECT (1 << 31)
+#define SETUP_TYPE_MAX (SETUP_INDIRECT | SETUP_JAILHOUSE)
+#define RAMDISK_IMAGE_START_MASK 0x07FF
+#define RAMDISK_PROMPT_FLAG 0x8000
+#define RAMDISK_LOAD_FLAG 0x4000
+#define LOADED_HIGH (1 << 0)
+#define KASLR_FLAG (1 << 1)
+#define QUIET_FLAG (1 << 5)
+#define KEEP_SEGMENTS (1 << 6)
+#define CAN_USE_HEAP (1 << 7)
+#define XLF_KERNEL_64 (1 << 0)
+#define XLF_CAN_BE_LOADED_ABOVE_4G (1 << 1)
+#define XLF_EFI_HANDOVER_32 (1 << 2)
+#define XLF_EFI_HANDOVER_64 (1 << 3)
+#define XLF_EFI_KEXEC (1 << 4)
+#define XLF_5LEVEL (1 << 5)
+#define XLF_5LEVEL_ENABLED (1 << 6)
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#include <linux/screen_info.h>
+#include <linux/apm_bios.h>
+#include <linux/edd.h>
+#include <asm/ist.h>
+#include <video/edid.h>
+struct setup_data {
+  __u64 next;
+  __u32 type;
+  __u32 len;
+  __u8 data[0];
+};
+struct setup_indirect {
+  __u32 type;
+  __u32 reserved;
+  __u64 len;
+  __u64 addr;
+};
+struct setup_header {
+  __u8 setup_sects;
+  __u16 root_flags;
+  __u32 syssize;
+  __u16 ram_size;
+  __u16 vid_mode;
+  __u16 root_dev;
+  __u16 boot_flag;
+  __u16 jump;
+  __u32 header;
+  __u16 version;
+  __u32 realmode_swtch;
+  __u16 start_sys_seg;
+  __u16 kernel_version;
+  __u8 type_of_loader;
+  __u8 loadflags;
+  __u16 setup_move_size;
+  __u32 code32_start;
+  __u32 ramdisk_image;
+  __u32 ramdisk_size;
+  __u32 bootsect_kludge;
+  __u16 heap_end_ptr;
+  __u8 ext_loader_ver;
+  __u8 ext_loader_type;
+  __u32 cmd_line_ptr;
+  __u32 initrd_addr_max;
+  __u32 kernel_alignment;
+  __u8 relocatable_kernel;
+  __u8 min_alignment;
+  __u16 xloadflags;
+  __u32 cmdline_size;
+  __u32 hardware_subarch;
+  __u64 hardware_subarch_data;
+  __u32 payload_offset;
+  __u32 payload_length;
+  __u64 setup_data;
+  __u64 pref_address;
+  __u32 init_size;
+  __u32 handover_offset;
+  __u32 kernel_info_offset;
+} __attribute__((packed));
+struct sys_desc_table {
+  __u16 length;
+  __u8 table[14];
+};
+struct olpc_ofw_header {
+  __u32 ofw_magic;
+  __u32 ofw_version;
+  __u32 cif_handler;
+  __u32 irq_desc_table;
+} __attribute__((packed));
+struct efi_info {
+  __u32 efi_loader_signature;
+  __u32 efi_systab;
+  __u32 efi_memdesc_size;
+  __u32 efi_memdesc_version;
+  __u32 efi_memmap;
+  __u32 efi_memmap_size;
+  __u32 efi_systab_hi;
+  __u32 efi_memmap_hi;
+};
+#define E820_MAX_ENTRIES_ZEROPAGE 128
+struct boot_e820_entry {
+  __u64 addr;
+  __u64 size;
+  __u32 type;
+} __attribute__((packed));
+#define JAILHOUSE_SETUP_REQUIRED_VERSION 1
+struct jailhouse_setup_data {
+  struct {
+    __u16 version;
+    __u16 compatible_version;
+  } __attribute__((packed)) hdr;
+  struct {
+    __u16 pm_timer_address;
+    __u16 num_cpus;
+    __u64 pci_mmconfig_base;
+    __u32 tsc_khz;
+    __u32 apic_khz;
+    __u8 standard_ioapic;
+    __u8 cpu_ids[255];
+  } __attribute__((packed)) v1;
+  struct {
+    __u32 flags;
+  } __attribute__((packed)) v2;
+} __attribute__((packed));
+struct boot_params {
+  struct screen_info screen_info;
+  struct apm_bios_info apm_bios_info;
+  __u8 _pad2[4];
+  __u64 tboot_addr;
+  struct ist_info ist_info;
+  __u64 acpi_rsdp_addr;
+  __u8 _pad3[8];
+  __u8 hd0_info[16];
+  __u8 hd1_info[16];
+  struct sys_desc_table sys_desc_table;
+  struct olpc_ofw_header olpc_ofw_header;
+  __u32 ext_ramdisk_image;
+  __u32 ext_ramdisk_size;
+  __u32 ext_cmd_line_ptr;
+  __u8 _pad4[116];
+  struct edid_info edid_info;
+  struct efi_info efi_info;
+  __u32 alt_mem_k;
+  __u32 scratch;
+  __u8 e820_entries;
+  __u8 eddbuf_entries;
+  __u8 edd_mbr_sig_buf_entries;
+  __u8 kbd_status;
+  __u8 secure_boot;
+  __u8 _pad5[2];
+  __u8 sentinel;
+  __u8 _pad6[1];
+  struct setup_header hdr;
+  __u8 _pad7[0x290 - 0x1f1 - sizeof(struct setup_header)];
+  __u32 edd_mbr_sig_buffer[EDD_MBR_SIG_MAX];
+  struct boot_e820_entry e820_table[E820_MAX_ENTRIES_ZEROPAGE];
+  __u8 _pad8[48];
+  struct edd_info eddbuf[EDDMAXNR];
+  __u8 _pad9[276];
+} __attribute__((packed));
+enum x86_hardware_subarch {
+  X86_SUBARCH_PC = 0,
+  X86_SUBARCH_LGUEST,
+  X86_SUBARCH_XEN,
+  X86_SUBARCH_INTEL_MID,
+  X86_SUBARCH_CE4100,
+  X86_NR_SUBARCHS,
+};
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm/bpf_perf_event.h b/x86_64-linux-musl/include/asm/bpf_perf_event.h
new file mode 100644
index 0000000..fa7bc48
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/bpf_perf_event.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-generic/bpf_perf_event.h>
diff --git a/x86_64-linux-musl/include/asm/byteorder.h b/x86_64-linux-musl/include/asm/byteorder.h
new file mode 100644
index 0000000..db3ddff
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/byteorder.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 _ASM_X86_BYTEORDER_H
+#define _ASM_X86_BYTEORDER_H
+#include <linux/byteorder/little_endian.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm/debugreg.h b/x86_64-linux-musl/include/asm/debugreg.h
new file mode 100644
index 0000000..360f432
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/debugreg.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_ASM_X86_DEBUGREG_H
+#define _UAPI_ASM_X86_DEBUGREG_H
+#define DR_FIRSTADDR 0
+#define DR_LASTADDR 3
+#define DR_STATUS 6
+#define DR_CONTROL 7
+#define DR6_RESERVED (0xFFFF0FF0)
+#define DR_TRAP0 (0x1)
+#define DR_TRAP1 (0x2)
+#define DR_TRAP2 (0x4)
+#define DR_TRAP3 (0x8)
+#define DR_TRAP_BITS (DR_TRAP0 | DR_TRAP1 | DR_TRAP2 | DR_TRAP3)
+#define DR_BUS_LOCK (0x800)
+#define DR_STEP (0x4000)
+#define DR_SWITCH (0x8000)
+#define DR_CONTROL_SHIFT 16
+#define DR_CONTROL_SIZE 4
+#define DR_RW_EXECUTE (0x0)
+#define DR_RW_WRITE (0x1)
+#define DR_RW_READ (0x3)
+#define DR_LEN_1 (0x0)
+#define DR_LEN_2 (0x4)
+#define DR_LEN_4 (0xC)
+#define DR_LEN_8 (0x8)
+#define DR_LOCAL_ENABLE_SHIFT 0
+#define DR_GLOBAL_ENABLE_SHIFT 1
+#define DR_LOCAL_ENABLE (0x1)
+#define DR_GLOBAL_ENABLE (0x2)
+#define DR_ENABLE_SIZE 2
+#define DR_LOCAL_ENABLE_MASK (0x55)
+#define DR_GLOBAL_ENABLE_MASK (0xAA)
+#ifdef __i386__
+#define DR_CONTROL_RESERVED (0xFC00)
+#else
+#define DR_CONTROL_RESERVED (0xFFFFFFFF0000FC00UL)
+#endif
+#define DR_LOCAL_SLOWDOWN (0x100)
+#define DR_GLOBAL_SLOWDOWN (0x200)
+#endif
diff --git a/x86_64-linux-musl/include/asm/e820.h b/x86_64-linux-musl/include/asm/e820.h
new file mode 100644
index 0000000..8f00c5c
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/e820.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_ASM_X86_E820_H
+#define _UAPI_ASM_X86_E820_H
+#define E820MAP 0x2d0
+#define E820MAX 128
+#define E820_X_MAX E820MAX
+#define E820NR 0x1e8
+#define E820_RAM 1
+#define E820_RESERVED 2
+#define E820_ACPI 3
+#define E820_NVS 4
+#define E820_UNUSABLE 5
+#define E820_PMEM 7
+#define E820_PRAM 12
+#define E820_RESERVED_KERN 128
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+struct e820entry {
+  __u64 addr;
+  __u64 size;
+  __u32 type;
+} __attribute__((packed));
+struct e820map {
+  __u32 nr_map;
+  struct e820entry map[E820_X_MAX];
+};
+#define ISA_START_ADDRESS 0xa0000
+#define ISA_END_ADDRESS 0x100000
+#define BIOS_BEGIN 0x000a0000
+#define BIOS_END 0x00100000
+#define BIOS_ROM_BASE 0xffe00000
+#define BIOS_ROM_END 0xffffffff
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm/errno.h b/x86_64-linux-musl/include/asm/errno.h
new file mode 100644
index 0000000..392cd94
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/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-generic/errno.h>
diff --git a/x86_64-linux-musl/include/asm/fcntl.h b/x86_64-linux-musl/include/asm/fcntl.h
new file mode 100644
index 0000000..518d3a7
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/fcntl.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-generic/fcntl.h>
diff --git a/x86_64-linux-musl/include/asm/hw_breakpoint.h b/x86_64-linux-musl/include/asm/hw_breakpoint.h
new file mode 100644
index 0000000..878419c
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/hw_breakpoint.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/x86_64-linux-musl/include/asm/hwcap2.h b/x86_64-linux-musl/include/asm/hwcap2.h
new file mode 100644
index 0000000..9f715c9
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/hwcap2.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 _ASM_X86_HWCAP2_H
+#define _ASM_X86_HWCAP2_H
+#include <linux/const.h>
+#define HWCAP2_RING3MWAIT _BITUL(0)
+#define HWCAP2_FSGSBASE _BITUL(1)
+#endif
diff --git a/x86_64-linux-musl/include/asm/ioctl.h b/x86_64-linux-musl/include/asm/ioctl.h
new file mode 100644
index 0000000..7b7bd37
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/ioctl.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-generic/ioctl.h>
diff --git a/x86_64-linux-musl/include/asm/ioctls.h b/x86_64-linux-musl/include/asm/ioctls.h
new file mode 100644
index 0000000..0c66935
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/ioctls.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-generic/ioctls.h>
diff --git a/x86_64-linux-musl/include/asm/ipcbuf.h b/x86_64-linux-musl/include/asm/ipcbuf.h
new file mode 100644
index 0000000..0021f14
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/ipcbuf.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-generic/ipcbuf.h>
diff --git a/x86_64-linux-musl/include/asm/ist.h b/x86_64-linux-musl/include/asm/ist.h
new file mode 100644
index 0000000..9648952
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/ist.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_ASM_X86_IST_H
+#define _UAPI_ASM_X86_IST_H
+#include <linux/types.h>
+struct ist_info {
+  __u32 signature;
+  __u32 command;
+  __u32 event;
+  __u32 perf_level;
+};
+#endif
diff --git a/x86_64-linux-musl/include/asm/kvm.h b/x86_64-linux-musl/include/asm/kvm.h
new file mode 100644
index 0000000..fd0f5f8
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/kvm.h
@@ -0,0 +1,410 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_X86_KVM_H
+#define _ASM_X86_KVM_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define KVM_PIO_PAGE_OFFSET 1
+#define KVM_COALESCED_MMIO_PAGE_OFFSET 2
+#define KVM_DIRTY_LOG_PAGE_OFFSET 64
+#define DE_VECTOR 0
+#define DB_VECTOR 1
+#define BP_VECTOR 3
+#define OF_VECTOR 4
+#define BR_VECTOR 5
+#define UD_VECTOR 6
+#define NM_VECTOR 7
+#define DF_VECTOR 8
+#define TS_VECTOR 10
+#define NP_VECTOR 11
+#define SS_VECTOR 12
+#define GP_VECTOR 13
+#define PF_VECTOR 14
+#define MF_VECTOR 16
+#define AC_VECTOR 17
+#define MC_VECTOR 18
+#define XM_VECTOR 19
+#define VE_VECTOR 20
+#define __KVM_HAVE_PIT
+#define __KVM_HAVE_IOAPIC
+#define __KVM_HAVE_IRQ_LINE
+#define __KVM_HAVE_MSI
+#define __KVM_HAVE_USER_NMI
+#define __KVM_HAVE_GUEST_DEBUG
+#define __KVM_HAVE_MSIX
+#define __KVM_HAVE_MCE
+#define __KVM_HAVE_PIT_STATE2
+#define __KVM_HAVE_XEN_HVM
+#define __KVM_HAVE_VCPU_EVENTS
+#define __KVM_HAVE_DEBUGREGS
+#define __KVM_HAVE_XSAVE
+#define __KVM_HAVE_XCRS
+#define __KVM_HAVE_READONLY_MEM
+#define KVM_NR_INTERRUPTS 256
+struct kvm_memory_alias {
+  __u32 slot;
+  __u32 flags;
+  __u64 guest_phys_addr;
+  __u64 memory_size;
+  __u64 target_phys_addr;
+};
+struct kvm_pic_state {
+  __u8 last_irr;
+  __u8 irr;
+  __u8 imr;
+  __u8 isr;
+  __u8 priority_add;
+  __u8 irq_base;
+  __u8 read_reg_select;
+  __u8 poll;
+  __u8 special_mask;
+  __u8 init_state;
+  __u8 auto_eoi;
+  __u8 rotate_on_auto_eoi;
+  __u8 special_fully_nested_mode;
+  __u8 init4;
+  __u8 elcr;
+  __u8 elcr_mask;
+};
+#define KVM_IOAPIC_NUM_PINS 24
+struct kvm_ioapic_state {
+  __u64 base_address;
+  __u32 ioregsel;
+  __u32 id;
+  __u32 irr;
+  __u32 pad;
+  union {
+    __u64 bits;
+    struct {
+      __u8 vector;
+      __u8 delivery_mode : 3;
+      __u8 dest_mode : 1;
+      __u8 delivery_status : 1;
+      __u8 polarity : 1;
+      __u8 remote_irr : 1;
+      __u8 trig_mode : 1;
+      __u8 mask : 1;
+      __u8 reserve : 7;
+      __u8 reserved[4];
+      __u8 dest_id;
+    } fields;
+  } redirtbl[KVM_IOAPIC_NUM_PINS];
+};
+#define KVM_IRQCHIP_PIC_MASTER 0
+#define KVM_IRQCHIP_PIC_SLAVE 1
+#define KVM_IRQCHIP_IOAPIC 2
+#define KVM_NR_IRQCHIPS 3
+#define KVM_RUN_X86_SMM (1 << 0)
+#define KVM_RUN_X86_BUS_LOCK (1 << 1)
+struct kvm_regs {
+  __u64 rax, rbx, rcx, rdx;
+  __u64 rsi, rdi, rsp, rbp;
+  __u64 r8, r9, r10, r11;
+  __u64 r12, r13, r14, r15;
+  __u64 rip, rflags;
+};
+#define KVM_APIC_REG_SIZE 0x400
+struct kvm_lapic_state {
+  char regs[KVM_APIC_REG_SIZE];
+};
+struct kvm_segment {
+  __u64 base;
+  __u32 limit;
+  __u16 selector;
+  __u8 type;
+  __u8 present, dpl, db, s, l, g, avl;
+  __u8 unusable;
+  __u8 padding;
+};
+struct kvm_dtable {
+  __u64 base;
+  __u16 limit;
+  __u16 padding[3];
+};
+struct kvm_sregs {
+  struct kvm_segment cs, ds, es, fs, gs, ss;
+  struct kvm_segment tr, ldt;
+  struct kvm_dtable gdt, idt;
+  __u64 cr0, cr2, cr3, cr4, cr8;
+  __u64 efer;
+  __u64 apic_base;
+  __u64 interrupt_bitmap[(KVM_NR_INTERRUPTS + 63) / 64];
+};
+struct kvm_sregs2 {
+  struct kvm_segment cs, ds, es, fs, gs, ss;
+  struct kvm_segment tr, ldt;
+  struct kvm_dtable gdt, idt;
+  __u64 cr0, cr2, cr3, cr4, cr8;
+  __u64 efer;
+  __u64 apic_base;
+  __u64 flags;
+  __u64 pdptrs[4];
+};
+#define KVM_SREGS2_FLAGS_PDPTRS_VALID 1
+struct kvm_fpu {
+  __u8 fpr[8][16];
+  __u16 fcw;
+  __u16 fsw;
+  __u8 ftwx;
+  __u8 pad1;
+  __u16 last_opcode;
+  __u64 last_ip;
+  __u64 last_dp;
+  __u8 xmm[16][16];
+  __u32 mxcsr;
+  __u32 pad2;
+};
+struct kvm_msr_entry {
+  __u32 index;
+  __u32 reserved;
+  __u64 data;
+};
+struct kvm_msrs {
+  __u32 nmsrs;
+  __u32 pad;
+  struct kvm_msr_entry entries[0];
+};
+struct kvm_msr_list {
+  __u32 nmsrs;
+  __u32 indices[0];
+};
+#define KVM_MSR_FILTER_MAX_BITMAP_SIZE 0x600
+struct kvm_msr_filter_range {
+#define KVM_MSR_FILTER_READ (1 << 0)
+#define KVM_MSR_FILTER_WRITE (1 << 1)
+  __u32 flags;
+  __u32 nmsrs;
+  __u32 base;
+  __u8 * bitmap;
+};
+#define KVM_MSR_FILTER_MAX_RANGES 16
+struct kvm_msr_filter {
+#define KVM_MSR_FILTER_DEFAULT_ALLOW (0 << 0)
+#define KVM_MSR_FILTER_DEFAULT_DENY (1 << 0)
+  __u32 flags;
+  struct kvm_msr_filter_range ranges[KVM_MSR_FILTER_MAX_RANGES];
+};
+struct kvm_cpuid_entry {
+  __u32 function;
+  __u32 eax;
+  __u32 ebx;
+  __u32 ecx;
+  __u32 edx;
+  __u32 padding;
+};
+struct kvm_cpuid {
+  __u32 nent;
+  __u32 padding;
+  struct kvm_cpuid_entry entries[0];
+};
+struct kvm_cpuid_entry2 {
+  __u32 function;
+  __u32 index;
+  __u32 flags;
+  __u32 eax;
+  __u32 ebx;
+  __u32 ecx;
+  __u32 edx;
+  __u32 padding[3];
+};
+#define KVM_CPUID_FLAG_SIGNIFCANT_INDEX (1 << 0)
+#define KVM_CPUID_FLAG_STATEFUL_FUNC (1 << 1)
+#define KVM_CPUID_FLAG_STATE_READ_NEXT (1 << 2)
+struct kvm_cpuid2 {
+  __u32 nent;
+  __u32 padding;
+  struct kvm_cpuid_entry2 entries[0];
+};
+struct kvm_pit_channel_state {
+  __u32 count;
+  __u16 latched_count;
+  __u8 count_latched;
+  __u8 status_latched;
+  __u8 status;
+  __u8 read_state;
+  __u8 write_state;
+  __u8 write_latch;
+  __u8 rw_mode;
+  __u8 mode;
+  __u8 bcd;
+  __u8 gate;
+  __s64 count_load_time;
+};
+struct kvm_debug_exit_arch {
+  __u32 exception;
+  __u32 pad;
+  __u64 pc;
+  __u64 dr6;
+  __u64 dr7;
+};
+#define KVM_GUESTDBG_USE_SW_BP 0x00010000
+#define KVM_GUESTDBG_USE_HW_BP 0x00020000
+#define KVM_GUESTDBG_INJECT_DB 0x00040000
+#define KVM_GUESTDBG_INJECT_BP 0x00080000
+#define KVM_GUESTDBG_BLOCKIRQ 0x00100000
+struct kvm_guest_debug_arch {
+  __u64 debugreg[8];
+};
+struct kvm_pit_state {
+  struct kvm_pit_channel_state channels[3];
+};
+#define KVM_PIT_FLAGS_HPET_LEGACY 0x00000001
+struct kvm_pit_state2 {
+  struct kvm_pit_channel_state channels[3];
+  __u32 flags;
+  __u32 reserved[9];
+};
+struct kvm_reinject_control {
+  __u8 pit_reinject;
+  __u8 reserved[31];
+};
+#define KVM_VCPUEVENT_VALID_NMI_PENDING 0x00000001
+#define KVM_VCPUEVENT_VALID_SIPI_VECTOR 0x00000002
+#define KVM_VCPUEVENT_VALID_SHADOW 0x00000004
+#define KVM_VCPUEVENT_VALID_SMM 0x00000008
+#define KVM_VCPUEVENT_VALID_PAYLOAD 0x00000010
+#define KVM_X86_SHADOW_INT_MOV_SS 0x01
+#define KVM_X86_SHADOW_INT_STI 0x02
+struct kvm_vcpu_events {
+  struct {
+    __u8 injected;
+    __u8 nr;
+    __u8 has_error_code;
+    __u8 pending;
+    __u32 error_code;
+  } exception;
+  struct {
+    __u8 injected;
+    __u8 nr;
+    __u8 soft;
+    __u8 shadow;
+  } interrupt;
+  struct {
+    __u8 injected;
+    __u8 pending;
+    __u8 masked;
+    __u8 pad;
+  } nmi;
+  __u32 sipi_vector;
+  __u32 flags;
+  struct {
+    __u8 smm;
+    __u8 pending;
+    __u8 smm_inside_nmi;
+    __u8 latched_init;
+  } smi;
+  __u8 reserved[27];
+  __u8 exception_has_payload;
+  __u64 exception_payload;
+};
+struct kvm_debugregs {
+  __u64 db[4];
+  __u64 dr6;
+  __u64 dr7;
+  __u64 flags;
+  __u64 reserved[9];
+};
+struct kvm_xsave {
+  __u32 region[1024];
+};
+#define KVM_MAX_XCRS 16
+struct kvm_xcr {
+  __u32 xcr;
+  __u32 reserved;
+  __u64 value;
+};
+struct kvm_xcrs {
+  __u32 nr_xcrs;
+  __u32 flags;
+  struct kvm_xcr xcrs[KVM_MAX_XCRS];
+  __u64 padding[16];
+};
+#define KVM_SYNC_X86_REGS (1UL << 0)
+#define KVM_SYNC_X86_SREGS (1UL << 1)
+#define KVM_SYNC_X86_EVENTS (1UL << 2)
+#define KVM_SYNC_X86_VALID_FIELDS (KVM_SYNC_X86_REGS | KVM_SYNC_X86_SREGS | KVM_SYNC_X86_EVENTS)
+struct kvm_sync_regs {
+  struct kvm_regs regs;
+  struct kvm_sregs sregs;
+  struct kvm_vcpu_events events;
+};
+#define KVM_X86_QUIRK_LINT0_REENABLED (1 << 0)
+#define KVM_X86_QUIRK_CD_NW_CLEARED (1 << 1)
+#define KVM_X86_QUIRK_LAPIC_MMIO_HOLE (1 << 2)
+#define KVM_X86_QUIRK_OUT_7E_INC_RIP (1 << 3)
+#define KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT (1 << 4)
+#define KVM_STATE_NESTED_FORMAT_VMX 0
+#define KVM_STATE_NESTED_FORMAT_SVM 1
+#define KVM_STATE_NESTED_GUEST_MODE 0x00000001
+#define KVM_STATE_NESTED_RUN_PENDING 0x00000002
+#define KVM_STATE_NESTED_EVMCS 0x00000004
+#define KVM_STATE_NESTED_MTF_PENDING 0x00000008
+#define KVM_STATE_NESTED_GIF_SET 0x00000100
+#define KVM_STATE_NESTED_SMM_GUEST_MODE 0x00000001
+#define KVM_STATE_NESTED_SMM_VMXON 0x00000002
+#define KVM_STATE_NESTED_VMX_VMCS_SIZE 0x1000
+#define KVM_STATE_NESTED_SVM_VMCB_SIZE 0x1000
+#define KVM_STATE_VMX_PREEMPTION_TIMER_DEADLINE 0x00000001
+struct kvm_vmx_nested_state_data {
+  __u8 vmcs12[KVM_STATE_NESTED_VMX_VMCS_SIZE];
+  __u8 shadow_vmcs12[KVM_STATE_NESTED_VMX_VMCS_SIZE];
+};
+struct kvm_vmx_nested_state_hdr {
+  __u64 vmxon_pa;
+  __u64 vmcs12_pa;
+  struct {
+    __u16 flags;
+  } smm;
+  __u16 pad;
+  __u32 flags;
+  __u64 preemption_timer_deadline;
+};
+struct kvm_svm_nested_state_data {
+  __u8 vmcb12[KVM_STATE_NESTED_SVM_VMCB_SIZE];
+};
+struct kvm_svm_nested_state_hdr {
+  __u64 vmcb_pa;
+};
+struct kvm_nested_state {
+  __u16 flags;
+  __u16 format;
+  __u32 size;
+  union {
+    struct kvm_vmx_nested_state_hdr vmx;
+    struct kvm_svm_nested_state_hdr svm;
+    __u8 pad[120];
+  } hdr;
+  union {
+    struct kvm_vmx_nested_state_data vmx[0];
+    struct kvm_svm_nested_state_data svm[0];
+  } data;
+};
+struct kvm_pmu_event_filter {
+  __u32 action;
+  __u32 nevents;
+  __u32 fixed_counter_bitmap;
+  __u32 flags;
+  __u32 pad[4];
+  __u64 events[0];
+};
+#define KVM_PMU_EVENT_ALLOW 0
+#define KVM_PMU_EVENT_DENY 1
+#define KVM_VCPU_TSC_CTRL 0
+#define KVM_VCPU_TSC_OFFSET 0
+#endif
diff --git a/x86_64-linux-musl/include/asm/kvm_para.h b/x86_64-linux-musl/include/asm/kvm_para.h
new file mode 100644
index 0000000..dd72af0
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/kvm_para.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_ASM_X86_KVM_PARA_H
+#define _UAPI_ASM_X86_KVM_PARA_H
+#include <linux/types.h>
+#define KVM_CPUID_SIGNATURE 0x40000000
+#define KVM_SIGNATURE "KVMKVMKVM\0\0\0"
+#define KVM_CPUID_FEATURES 0x40000001
+#define KVM_FEATURE_CLOCKSOURCE 0
+#define KVM_FEATURE_NOP_IO_DELAY 1
+#define KVM_FEATURE_MMU_OP 2
+#define KVM_FEATURE_CLOCKSOURCE2 3
+#define KVM_FEATURE_ASYNC_PF 4
+#define KVM_FEATURE_STEAL_TIME 5
+#define KVM_FEATURE_PV_EOI 6
+#define KVM_FEATURE_PV_UNHALT 7
+#define KVM_FEATURE_PV_TLB_FLUSH 9
+#define KVM_FEATURE_ASYNC_PF_VMEXIT 10
+#define KVM_FEATURE_PV_SEND_IPI 11
+#define KVM_FEATURE_POLL_CONTROL 12
+#define KVM_FEATURE_PV_SCHED_YIELD 13
+#define KVM_FEATURE_ASYNC_PF_INT 14
+#define KVM_FEATURE_MSI_EXT_DEST_ID 15
+#define KVM_FEATURE_HC_MAP_GPA_RANGE 16
+#define KVM_FEATURE_MIGRATION_CONTROL 17
+#define KVM_HINTS_REALTIME 0
+#define KVM_FEATURE_CLOCKSOURCE_STABLE_BIT 24
+#define MSR_KVM_WALL_CLOCK 0x11
+#define MSR_KVM_SYSTEM_TIME 0x12
+#define KVM_MSR_ENABLED 1
+#define MSR_KVM_WALL_CLOCK_NEW 0x4b564d00
+#define MSR_KVM_SYSTEM_TIME_NEW 0x4b564d01
+#define MSR_KVM_ASYNC_PF_EN 0x4b564d02
+#define MSR_KVM_STEAL_TIME 0x4b564d03
+#define MSR_KVM_PV_EOI_EN 0x4b564d04
+#define MSR_KVM_POLL_CONTROL 0x4b564d05
+#define MSR_KVM_ASYNC_PF_INT 0x4b564d06
+#define MSR_KVM_ASYNC_PF_ACK 0x4b564d07
+#define MSR_KVM_MIGRATION_CONTROL 0x4b564d08
+struct kvm_steal_time {
+  __u64 steal;
+  __u32 version;
+  __u32 flags;
+  __u8 preempted;
+  __u8 u8_pad[3];
+  __u32 pad[11];
+};
+#define KVM_VCPU_PREEMPTED (1 << 0)
+#define KVM_VCPU_FLUSH_TLB (1 << 1)
+#define KVM_CLOCK_PAIRING_WALLCLOCK 0
+struct kvm_clock_pairing {
+  __s64 sec;
+  __s64 nsec;
+  __u64 tsc;
+  __u32 flags;
+  __u32 pad[9];
+};
+#define KVM_STEAL_ALIGNMENT_BITS 5
+#define KVM_STEAL_VALID_BITS ((- 1ULL << (KVM_STEAL_ALIGNMENT_BITS + 1)))
+#define KVM_STEAL_RESERVED_MASK (((1 << KVM_STEAL_ALIGNMENT_BITS) - 1) << 1)
+#define KVM_MAX_MMU_OP_BATCH 32
+#define KVM_ASYNC_PF_ENABLED (1 << 0)
+#define KVM_ASYNC_PF_SEND_ALWAYS (1 << 1)
+#define KVM_ASYNC_PF_DELIVERY_AS_PF_VMEXIT (1 << 2)
+#define KVM_ASYNC_PF_DELIVERY_AS_INT (1 << 3)
+#define KVM_ASYNC_PF_VEC_MASK GENMASK(7, 0)
+#define KVM_MIGRATION_READY (1 << 0)
+#define KVM_MAP_GPA_RANGE_PAGE_SZ_4K 0
+#define KVM_MAP_GPA_RANGE_PAGE_SZ_2M (1 << 0)
+#define KVM_MAP_GPA_RANGE_PAGE_SZ_1G (1 << 1)
+#define KVM_MAP_GPA_RANGE_ENC_STAT(n) (n << 4)
+#define KVM_MAP_GPA_RANGE_ENCRYPTED KVM_MAP_GPA_RANGE_ENC_STAT(1)
+#define KVM_MAP_GPA_RANGE_DECRYPTED KVM_MAP_GPA_RANGE_ENC_STAT(0)
+#define KVM_MMU_OP_WRITE_PTE 1
+#define KVM_MMU_OP_FLUSH_TLB 2
+#define KVM_MMU_OP_RELEASE_PT 3
+struct kvm_mmu_op_header {
+  __u32 op;
+  __u32 pad;
+};
+struct kvm_mmu_op_write_pte {
+  struct kvm_mmu_op_header header;
+  __u64 pte_phys;
+  __u64 pte_val;
+};
+struct kvm_mmu_op_flush_tlb {
+  struct kvm_mmu_op_header header;
+};
+struct kvm_mmu_op_release_pt {
+  struct kvm_mmu_op_header header;
+  __u64 pt_phys;
+};
+#define KVM_PV_REASON_PAGE_NOT_PRESENT 1
+#define KVM_PV_REASON_PAGE_READY 2
+struct kvm_vcpu_pv_apf_data {
+  __u32 flags;
+  __u32 token;
+  __u8 pad[56];
+  __u32 enabled;
+};
+#define KVM_PV_EOI_BIT 0
+#define KVM_PV_EOI_MASK (0x1 << KVM_PV_EOI_BIT)
+#define KVM_PV_EOI_ENABLED KVM_PV_EOI_MASK
+#define KVM_PV_EOI_DISABLED 0x0
+#endif
diff --git a/x86_64-linux-musl/include/asm/kvm_perf.h b/x86_64-linux-musl/include/asm/kvm_perf.h
new file mode 100644
index 0000000..c5c8f8e
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/kvm_perf.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 _ASM_X86_KVM_PERF_H
+#define _ASM_X86_KVM_PERF_H
+#include <asm/svm.h>
+#include <asm/vmx.h>
+#include <asm/kvm.h>
+#define DECODE_STR_LEN 20
+#define VCPU_ID "vcpu_id"
+#define KVM_ENTRY_TRACE "kvm:kvm_entry"
+#define KVM_EXIT_TRACE "kvm:kvm_exit"
+#define KVM_EXIT_REASON "exit_reason"
+#endif
diff --git a/x86_64-linux-musl/include/asm/ldt.h b/x86_64-linux-musl/include/asm/ldt.h
new file mode 100644
index 0000000..a98aedf
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/ldt.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 _ASM_X86_LDT_H
+#define _ASM_X86_LDT_H
+#define LDT_ENTRIES 8192
+#define LDT_ENTRY_SIZE 8
+#ifndef __ASSEMBLY__
+struct user_desc {
+  unsigned int entry_number;
+  unsigned int base_addr;
+  unsigned int limit;
+  unsigned int seg_32bit : 1;
+  unsigned int contents : 2;
+  unsigned int read_exec_only : 1;
+  unsigned int limit_in_pages : 1;
+  unsigned int seg_not_present : 1;
+  unsigned int useable : 1;
+#ifdef __x86_64__
+  unsigned int lm : 1;
+#endif
+};
+#define MODIFY_LDT_CONTENTS_DATA 0
+#define MODIFY_LDT_CONTENTS_STACK 1
+#define MODIFY_LDT_CONTENTS_CODE 2
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm/mce.h b/x86_64-linux-musl/include/asm/mce.h
new file mode 100644
index 0000000..359af57
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/mce.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 _UAPI_ASM_X86_MCE_H
+#define _UAPI_ASM_X86_MCE_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+struct mce {
+  __u64 status;
+  __u64 misc;
+  __u64 addr;
+  __u64 mcgstatus;
+  __u64 ip;
+  __u64 tsc;
+  __u64 time;
+  __u8 cpuvendor;
+  __u8 inject_flags;
+  __u8 severity;
+  __u8 pad;
+  __u32 cpuid;
+  __u8 cs;
+  __u8 bank;
+  __u8 cpu;
+  __u8 finished;
+  __u32 extcpu;
+  __u32 socketid;
+  __u32 apicid;
+  __u64 mcgcap;
+  __u64 synd;
+  __u64 ipid;
+  __u64 ppin;
+  __u32 microcode;
+  __u64 kflags;
+};
+#define MCE_GET_RECORD_LEN _IOR('M', 1, int)
+#define MCE_GET_LOG_LEN _IOR('M', 2, int)
+#define MCE_GETCLEAR_FLAGS _IOR('M', 3, int)
+#endif
diff --git a/x86_64-linux-musl/include/asm/mman.h b/x86_64-linux-musl/include/asm/mman.h
new file mode 100644
index 0000000..1061a6f
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/mman.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 _ASM_X86_MMAN_H
+#define _ASM_X86_MMAN_H
+#define MAP_32BIT 0x40
+#include <asm-generic/mman.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm/msgbuf.h b/x86_64-linux-musl/include/asm/msgbuf.h
new file mode 100644
index 0000000..b100b20
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/msgbuf.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 __ASM_X64_MSGBUF_H
+#define __ASM_X64_MSGBUF_H
+#if !defined(__x86_64__) || !defined(__ILP32__)
+#include <asm-generic/msgbuf.h>
+#else
+#include <asm/ipcbuf.h>
+struct msqid64_ds {
+  struct ipc64_perm msg_perm;
+  __kernel_long_t msg_stime;
+  __kernel_long_t msg_rtime;
+  __kernel_long_t msg_ctime;
+  __kernel_ulong_t msg_cbytes;
+  __kernel_ulong_t msg_qnum;
+  __kernel_ulong_t msg_qbytes;
+  __kernel_pid_t msg_lspid;
+  __kernel_pid_t msg_lrpid;
+  __kernel_ulong_t __unused4;
+  __kernel_ulong_t __unused5;
+};
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm/msr.h b/x86_64-linux-musl/include/asm/msr.h
new file mode 100644
index 0000000..c772838
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/msr.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_ASM_X86_MSR_H
+#define _UAPI_ASM_X86_MSR_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define X86_IOC_RDMSR_REGS _IOWR('c', 0xA0, __u32[8])
+#define X86_IOC_WRMSR_REGS _IOWR('c', 0xA1, __u32[8])
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm/mtrr.h b/x86_64-linux-musl/include/asm/mtrr.h
new file mode 100644
index 0000000..c709a70
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/mtrr.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_ASM_X86_MTRR_H
+#define _UAPI_ASM_X86_MTRR_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#include <linux/errno.h>
+#define MTRR_IOCTL_BASE 'M'
+#ifdef __i386__
+struct mtrr_sentry {
+  unsigned long base;
+  unsigned int size;
+  unsigned int type;
+};
+struct mtrr_gentry {
+  unsigned int regnum;
+  unsigned long base;
+  unsigned int size;
+  unsigned int type;
+};
+#else
+struct mtrr_sentry {
+  __u64 base;
+  __u32 size;
+  __u32 type;
+};
+struct mtrr_gentry {
+  __u64 base;
+  __u32 size;
+  __u32 regnum;
+  __u32 type;
+  __u32 _pad;
+};
+#endif
+struct mtrr_var_range {
+  __u32 base_lo;
+  __u32 base_hi;
+  __u32 mask_lo;
+  __u32 mask_hi;
+};
+typedef __u8 mtrr_type;
+#define MTRR_NUM_FIXED_RANGES 88
+#define MTRR_MAX_VAR_RANGES 256
+struct mtrr_state_type {
+  struct mtrr_var_range var_ranges[MTRR_MAX_VAR_RANGES];
+  mtrr_type fixed_ranges[MTRR_NUM_FIXED_RANGES];
+  unsigned char enabled;
+  unsigned char have_fixed;
+  mtrr_type def_type;
+};
+#define MTRRphysBase_MSR(reg) (0x200 + 2 * (reg))
+#define MTRRphysMask_MSR(reg) (0x200 + 2 * (reg) + 1)
+#define MTRRIOC_ADD_ENTRY _IOW(MTRR_IOCTL_BASE, 0, struct mtrr_sentry)
+#define MTRRIOC_SET_ENTRY _IOW(MTRR_IOCTL_BASE, 1, struct mtrr_sentry)
+#define MTRRIOC_DEL_ENTRY _IOW(MTRR_IOCTL_BASE, 2, struct mtrr_sentry)
+#define MTRRIOC_GET_ENTRY _IOWR(MTRR_IOCTL_BASE, 3, struct mtrr_gentry)
+#define MTRRIOC_KILL_ENTRY _IOW(MTRR_IOCTL_BASE, 4, struct mtrr_sentry)
+#define MTRRIOC_ADD_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 5, struct mtrr_sentry)
+#define MTRRIOC_SET_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 6, struct mtrr_sentry)
+#define MTRRIOC_DEL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 7, struct mtrr_sentry)
+#define MTRRIOC_GET_PAGE_ENTRY _IOWR(MTRR_IOCTL_BASE, 8, struct mtrr_gentry)
+#define MTRRIOC_KILL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 9, struct mtrr_sentry)
+#define MTRR_TYPE_UNCACHABLE 0
+#define MTRR_TYPE_WRCOMB 1
+#define MTRR_TYPE_WRTHROUGH 4
+#define MTRR_TYPE_WRPROT 5
+#define MTRR_TYPE_WRBACK 6
+#define MTRR_NUM_TYPES 7
+#define MTRR_TYPE_INVALID 0xff
+#endif
diff --git a/x86_64-linux-musl/include/asm/param.h b/x86_64-linux-musl/include/asm/param.h
new file mode 100644
index 0000000..5ccf935
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/param.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-generic/param.h>
diff --git a/x86_64-linux-musl/include/asm/perf_regs.h b/x86_64-linux-musl/include/asm/perf_regs.h
new file mode 100644
index 0000000..984b7ea
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/perf_regs.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 _ASM_X86_PERF_REGS_H
+#define _ASM_X86_PERF_REGS_H
+enum perf_event_x86_regs {
+  PERF_REG_X86_AX,
+  PERF_REG_X86_BX,
+  PERF_REG_X86_CX,
+  PERF_REG_X86_DX,
+  PERF_REG_X86_SI,
+  PERF_REG_X86_DI,
+  PERF_REG_X86_BP,
+  PERF_REG_X86_SP,
+  PERF_REG_X86_IP,
+  PERF_REG_X86_FLAGS,
+  PERF_REG_X86_CS,
+  PERF_REG_X86_SS,
+  PERF_REG_X86_DS,
+  PERF_REG_X86_ES,
+  PERF_REG_X86_FS,
+  PERF_REG_X86_GS,
+  PERF_REG_X86_R8,
+  PERF_REG_X86_R9,
+  PERF_REG_X86_R10,
+  PERF_REG_X86_R11,
+  PERF_REG_X86_R12,
+  PERF_REG_X86_R13,
+  PERF_REG_X86_R14,
+  PERF_REG_X86_R15,
+  PERF_REG_X86_32_MAX = PERF_REG_X86_GS + 1,
+  PERF_REG_X86_64_MAX = PERF_REG_X86_R15 + 1,
+  PERF_REG_X86_XMM0 = 32,
+  PERF_REG_X86_XMM1 = 34,
+  PERF_REG_X86_XMM2 = 36,
+  PERF_REG_X86_XMM3 = 38,
+  PERF_REG_X86_XMM4 = 40,
+  PERF_REG_X86_XMM5 = 42,
+  PERF_REG_X86_XMM6 = 44,
+  PERF_REG_X86_XMM7 = 46,
+  PERF_REG_X86_XMM8 = 48,
+  PERF_REG_X86_XMM9 = 50,
+  PERF_REG_X86_XMM10 = 52,
+  PERF_REG_X86_XMM11 = 54,
+  PERF_REG_X86_XMM12 = 56,
+  PERF_REG_X86_XMM13 = 58,
+  PERF_REG_X86_XMM14 = 60,
+  PERF_REG_X86_XMM15 = 62,
+  PERF_REG_X86_XMM_MAX = PERF_REG_X86_XMM15 + 2,
+};
+#define PERF_REG_EXTENDED_MASK (~((1ULL << PERF_REG_X86_XMM0) - 1))
+#endif
diff --git a/x86_64-linux-musl/include/asm/poll.h b/x86_64-linux-musl/include/asm/poll.h
new file mode 100644
index 0000000..d7e8adc
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/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-generic/poll.h>
diff --git a/x86_64-linux-musl/include/asm/posix_types.h b/x86_64-linux-musl/include/asm/posix_types.h
new file mode 100644
index 0000000..67ed19b
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/posix_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!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifdef __i386__
+#include <asm/posix_types_32.h>
+#elif defined(__ILP32__)
+#include <asm/posix_types_x32.h>
+#else
+#include <asm/posix_types_64.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm/posix_types_32.h b/x86_64-linux-musl/include/asm/posix_types_32.h
new file mode 100644
index 0000000..c339b4f
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/posix_types_32.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 _ASM_X86_POSIX_TYPES_32_H
+#define _ASM_X86_POSIX_TYPES_32_H
+typedef unsigned short __kernel_mode_t;
+#define __kernel_mode_t __kernel_mode_t
+typedef unsigned short __kernel_ipc_pid_t;
+#define __kernel_ipc_pid_t __kernel_ipc_pid_t
+typedef unsigned short __kernel_uid_t;
+typedef unsigned short __kernel_gid_t;
+#define __kernel_uid_t __kernel_uid_t
+typedef unsigned short __kernel_old_dev_t;
+#define __kernel_old_dev_t __kernel_old_dev_t
+#include <asm-generic/posix_types.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm/posix_types_64.h b/x86_64-linux-musl/include/asm/posix_types_64.h
new file mode 100644
index 0000000..23cdec1
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/posix_types_64.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 _ASM_X86_POSIX_TYPES_64_H
+#define _ASM_X86_POSIX_TYPES_64_H
+typedef unsigned short __kernel_old_uid_t;
+typedef unsigned short __kernel_old_gid_t;
+#define __kernel_old_uid_t __kernel_old_uid_t
+typedef unsigned long __kernel_old_dev_t;
+#define __kernel_old_dev_t __kernel_old_dev_t
+#include <asm-generic/posix_types.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm/posix_types_x32.h b/x86_64-linux-musl/include/asm/posix_types_x32.h
new file mode 100644
index 0000000..96cf8b9
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/posix_types_x32.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 _ASM_X86_POSIX_TYPES_X32_H
+#define _ASM_X86_POSIX_TYPES_X32_H
+typedef long long __kernel_long_t;
+typedef unsigned long long __kernel_ulong_t;
+#define __kernel_long_t __kernel_long_t
+#include <asm/posix_types_64.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm/prctl.h b/x86_64-linux-musl/include/asm/prctl.h
new file mode 100644
index 0000000..d8014b1
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/prctl.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 _ASM_X86_PRCTL_H
+#define _ASM_X86_PRCTL_H
+#define ARCH_SET_GS 0x1001
+#define ARCH_SET_FS 0x1002
+#define ARCH_GET_FS 0x1003
+#define ARCH_GET_GS 0x1004
+#define ARCH_GET_CPUID 0x1011
+#define ARCH_SET_CPUID 0x1012
+#define ARCH_GET_XCOMP_SUPP 0x1021
+#define ARCH_GET_XCOMP_PERM 0x1022
+#define ARCH_REQ_XCOMP_PERM 0x1023
+#define ARCH_MAP_VDSO_X32 0x2001
+#define ARCH_MAP_VDSO_32 0x2002
+#define ARCH_MAP_VDSO_64 0x2003
+#endif
diff --git a/x86_64-linux-musl/include/asm/processor-flags.h b/x86_64-linux-musl/include/asm/processor-flags.h
new file mode 100644
index 0000000..85f9d7e
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/processor-flags.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_ASM_X86_PROCESSOR_FLAGS_H
+#define _UAPI_ASM_X86_PROCESSOR_FLAGS_H
+#include <linux/const.h>
+#define X86_EFLAGS_CF_BIT 0
+#define X86_EFLAGS_CF _BITUL(X86_EFLAGS_CF_BIT)
+#define X86_EFLAGS_FIXED_BIT 1
+#define X86_EFLAGS_FIXED _BITUL(X86_EFLAGS_FIXED_BIT)
+#define X86_EFLAGS_PF_BIT 2
+#define X86_EFLAGS_PF _BITUL(X86_EFLAGS_PF_BIT)
+#define X86_EFLAGS_AF_BIT 4
+#define X86_EFLAGS_AF _BITUL(X86_EFLAGS_AF_BIT)
+#define X86_EFLAGS_ZF_BIT 6
+#define X86_EFLAGS_ZF _BITUL(X86_EFLAGS_ZF_BIT)
+#define X86_EFLAGS_SF_BIT 7
+#define X86_EFLAGS_SF _BITUL(X86_EFLAGS_SF_BIT)
+#define X86_EFLAGS_TF_BIT 8
+#define X86_EFLAGS_TF _BITUL(X86_EFLAGS_TF_BIT)
+#define X86_EFLAGS_IF_BIT 9
+#define X86_EFLAGS_IF _BITUL(X86_EFLAGS_IF_BIT)
+#define X86_EFLAGS_DF_BIT 10
+#define X86_EFLAGS_DF _BITUL(X86_EFLAGS_DF_BIT)
+#define X86_EFLAGS_OF_BIT 11
+#define X86_EFLAGS_OF _BITUL(X86_EFLAGS_OF_BIT)
+#define X86_EFLAGS_IOPL_BIT 12
+#define X86_EFLAGS_IOPL (_AC(3, UL) << X86_EFLAGS_IOPL_BIT)
+#define X86_EFLAGS_NT_BIT 14
+#define X86_EFLAGS_NT _BITUL(X86_EFLAGS_NT_BIT)
+#define X86_EFLAGS_RF_BIT 16
+#define X86_EFLAGS_RF _BITUL(X86_EFLAGS_RF_BIT)
+#define X86_EFLAGS_VM_BIT 17
+#define X86_EFLAGS_VM _BITUL(X86_EFLAGS_VM_BIT)
+#define X86_EFLAGS_AC_BIT 18
+#define X86_EFLAGS_AC _BITUL(X86_EFLAGS_AC_BIT)
+#define X86_EFLAGS_VIF_BIT 19
+#define X86_EFLAGS_VIF _BITUL(X86_EFLAGS_VIF_BIT)
+#define X86_EFLAGS_VIP_BIT 20
+#define X86_EFLAGS_VIP _BITUL(X86_EFLAGS_VIP_BIT)
+#define X86_EFLAGS_ID_BIT 21
+#define X86_EFLAGS_ID _BITUL(X86_EFLAGS_ID_BIT)
+#define X86_CR0_PE_BIT 0
+#define X86_CR0_PE _BITUL(X86_CR0_PE_BIT)
+#define X86_CR0_MP_BIT 1
+#define X86_CR0_MP _BITUL(X86_CR0_MP_BIT)
+#define X86_CR0_EM_BIT 2
+#define X86_CR0_EM _BITUL(X86_CR0_EM_BIT)
+#define X86_CR0_TS_BIT 3
+#define X86_CR0_TS _BITUL(X86_CR0_TS_BIT)
+#define X86_CR0_ET_BIT 4
+#define X86_CR0_ET _BITUL(X86_CR0_ET_BIT)
+#define X86_CR0_NE_BIT 5
+#define X86_CR0_NE _BITUL(X86_CR0_NE_BIT)
+#define X86_CR0_WP_BIT 16
+#define X86_CR0_WP _BITUL(X86_CR0_WP_BIT)
+#define X86_CR0_AM_BIT 18
+#define X86_CR0_AM _BITUL(X86_CR0_AM_BIT)
+#define X86_CR0_NW_BIT 29
+#define X86_CR0_NW _BITUL(X86_CR0_NW_BIT)
+#define X86_CR0_CD_BIT 30
+#define X86_CR0_CD _BITUL(X86_CR0_CD_BIT)
+#define X86_CR0_PG_BIT 31
+#define X86_CR0_PG _BITUL(X86_CR0_PG_BIT)
+#define X86_CR3_PWT_BIT 3
+#define X86_CR3_PWT _BITUL(X86_CR3_PWT_BIT)
+#define X86_CR3_PCD_BIT 4
+#define X86_CR3_PCD _BITUL(X86_CR3_PCD_BIT)
+#define X86_CR3_PCID_BITS 12
+#define X86_CR3_PCID_MASK (_AC((1UL << X86_CR3_PCID_BITS) - 1, UL))
+#define X86_CR3_PCID_NOFLUSH_BIT 63
+#define X86_CR3_PCID_NOFLUSH _BITULL(X86_CR3_PCID_NOFLUSH_BIT)
+#define X86_CR4_VME_BIT 0
+#define X86_CR4_VME _BITUL(X86_CR4_VME_BIT)
+#define X86_CR4_PVI_BIT 1
+#define X86_CR4_PVI _BITUL(X86_CR4_PVI_BIT)
+#define X86_CR4_TSD_BIT 2
+#define X86_CR4_TSD _BITUL(X86_CR4_TSD_BIT)
+#define X86_CR4_DE_BIT 3
+#define X86_CR4_DE _BITUL(X86_CR4_DE_BIT)
+#define X86_CR4_PSE_BIT 4
+#define X86_CR4_PSE _BITUL(X86_CR4_PSE_BIT)
+#define X86_CR4_PAE_BIT 5
+#define X86_CR4_PAE _BITUL(X86_CR4_PAE_BIT)
+#define X86_CR4_MCE_BIT 6
+#define X86_CR4_MCE _BITUL(X86_CR4_MCE_BIT)
+#define X86_CR4_PGE_BIT 7
+#define X86_CR4_PGE _BITUL(X86_CR4_PGE_BIT)
+#define X86_CR4_PCE_BIT 8
+#define X86_CR4_PCE _BITUL(X86_CR4_PCE_BIT)
+#define X86_CR4_OSFXSR_BIT 9
+#define X86_CR4_OSFXSR _BITUL(X86_CR4_OSFXSR_BIT)
+#define X86_CR4_OSXMMEXCPT_BIT 10
+#define X86_CR4_OSXMMEXCPT _BITUL(X86_CR4_OSXMMEXCPT_BIT)
+#define X86_CR4_UMIP_BIT 11
+#define X86_CR4_UMIP _BITUL(X86_CR4_UMIP_BIT)
+#define X86_CR4_LA57_BIT 12
+#define X86_CR4_LA57 _BITUL(X86_CR4_LA57_BIT)
+#define X86_CR4_VMXE_BIT 13
+#define X86_CR4_VMXE _BITUL(X86_CR4_VMXE_BIT)
+#define X86_CR4_SMXE_BIT 14
+#define X86_CR4_SMXE _BITUL(X86_CR4_SMXE_BIT)
+#define X86_CR4_FSGSBASE_BIT 16
+#define X86_CR4_FSGSBASE _BITUL(X86_CR4_FSGSBASE_BIT)
+#define X86_CR4_PCIDE_BIT 17
+#define X86_CR4_PCIDE _BITUL(X86_CR4_PCIDE_BIT)
+#define X86_CR4_OSXSAVE_BIT 18
+#define X86_CR4_OSXSAVE _BITUL(X86_CR4_OSXSAVE_BIT)
+#define X86_CR4_SMEP_BIT 20
+#define X86_CR4_SMEP _BITUL(X86_CR4_SMEP_BIT)
+#define X86_CR4_SMAP_BIT 21
+#define X86_CR4_SMAP _BITUL(X86_CR4_SMAP_BIT)
+#define X86_CR4_PKE_BIT 22
+#define X86_CR4_PKE _BITUL(X86_CR4_PKE_BIT)
+#define X86_CR8_TPR _AC(0x0000000f, UL)
+#define CX86_PCR0 0x20
+#define CX86_GCR 0xb8
+#define CX86_CCR0 0xc0
+#define CX86_CCR1 0xc1
+#define CX86_CCR2 0xc2
+#define CX86_CCR3 0xc3
+#define CX86_CCR4 0xe8
+#define CX86_CCR5 0xe9
+#define CX86_CCR6 0xea
+#define CX86_CCR7 0xeb
+#define CX86_PCR1 0xf0
+#define CX86_DIR0 0xfe
+#define CX86_DIR1 0xff
+#define CX86_ARR_BASE 0xc4
+#define CX86_RCR_BASE 0xdc
+#define CR0_STATE (X86_CR0_PE | X86_CR0_MP | X86_CR0_ET | X86_CR0_NE | X86_CR0_WP | X86_CR0_AM | X86_CR0_PG)
+#endif
diff --git a/x86_64-linux-musl/include/asm/ptrace-abi.h b/x86_64-linux-musl/include/asm/ptrace-abi.h
new file mode 100644
index 0000000..e501d9f
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/ptrace-abi.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 _ASM_X86_PTRACE_ABI_H
+#define _ASM_X86_PTRACE_ABI_H
+#ifdef __i386__
+#define EBX 0
+#define ECX 1
+#define EDX 2
+#define ESI 3
+#define EDI 4
+#define EBP 5
+#define EAX 6
+#define DS 7
+#define ES 8
+#define FS 9
+#define GS 10
+#define ORIG_EAX 11
+#define EIP 12
+#define CS 13
+#define EFL 14
+#define UESP 15
+#define SS 16
+#define FRAME_SIZE 17
+#else
+#if defined(__ASSEMBLY__) || defined(__FRAME_OFFSETS)
+#define R15 0
+#define R14 8
+#define R13 16
+#define R12 24
+#define RBP 32
+#define RBX 40
+#define R11 48
+#define R10 56
+#define R9 64
+#define R8 72
+#define RAX 80
+#define RCX 88
+#define RDX 96
+#define RSI 104
+#define RDI 112
+#define ORIG_RAX 120
+#define RIP 128
+#define CS 136
+#define EFLAGS 144
+#define RSP 152
+#define SS 160
+#endif
+#define FRAME_SIZE 168
+#endif
+#define PTRACE_GETREGS 12
+#define PTRACE_SETREGS 13
+#define PTRACE_GETFPREGS 14
+#define PTRACE_SETFPREGS 15
+#define PTRACE_GETFPXREGS 18
+#define PTRACE_SETFPXREGS 19
+#define PTRACE_OLDSETOPTIONS 21
+#define PTRACE_GET_THREAD_AREA 25
+#define PTRACE_SET_THREAD_AREA 26
+#ifdef __x86_64__
+#define PTRACE_ARCH_PRCTL 30
+#endif
+#define PTRACE_SYSEMU 31
+#define PTRACE_SYSEMU_SINGLESTEP 32
+#define PTRACE_SINGLEBLOCK 33
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm/ptrace.h b/x86_64-linux-musl/include/asm/ptrace.h
new file mode 100644
index 0000000..3f4404a
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/ptrace.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_ASM_X86_PTRACE_H
+#define _UAPI_ASM_X86_PTRACE_H
+#include <linux/compiler.h>
+#include <asm/ptrace-abi.h>
+#include <asm/processor-flags.h>
+#ifndef __ASSEMBLY__
+#ifdef __i386__
+struct pt_regs {
+  long ebx;
+  long ecx;
+  long edx;
+  long esi;
+  long edi;
+  long ebp;
+  long eax;
+  int xds;
+  int xes;
+  int xfs;
+  int xgs;
+  long orig_eax;
+  long eip;
+  int xcs;
+  long eflags;
+  long esp;
+  int xss;
+};
+#else
+struct pt_regs {
+  unsigned long r15;
+  unsigned long r14;
+  unsigned long r13;
+  unsigned long r12;
+  unsigned long rbp;
+  unsigned long rbx;
+  unsigned long r11;
+  unsigned long r10;
+  unsigned long r9;
+  unsigned long r8;
+  unsigned long rax;
+  unsigned long rcx;
+  unsigned long rdx;
+  unsigned long rsi;
+  unsigned long rdi;
+  unsigned long orig_rax;
+  unsigned long rip;
+  unsigned long cs;
+  unsigned long eflags;
+  unsigned long rsp;
+  unsigned long ss;
+};
+#endif
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm/resource.h b/x86_64-linux-musl/include/asm/resource.h
new file mode 100644
index 0000000..371adb5
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/resource.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-generic/resource.h>
diff --git a/x86_64-linux-musl/include/asm/sembuf.h b/x86_64-linux-musl/include/asm/sembuf.h
new file mode 100644
index 0000000..c633425
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/sembuf.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 _ASM_X86_SEMBUF_H
+#define _ASM_X86_SEMBUF_H
+#include <asm/ipcbuf.h>
+struct semid64_ds {
+  struct ipc64_perm sem_perm;
+#ifdef __i386__
+  unsigned long sem_otime;
+  unsigned long sem_otime_high;
+  unsigned long sem_ctime;
+  unsigned long sem_ctime_high;
+#else
+  __kernel_long_t sem_otime;
+  __kernel_ulong_t __unused1;
+  __kernel_long_t sem_ctime;
+  __kernel_ulong_t __unused2;
+#endif
+  __kernel_ulong_t sem_nsems;
+  __kernel_ulong_t __unused3;
+  __kernel_ulong_t __unused4;
+};
+#endif
diff --git a/x86_64-linux-musl/include/asm/setup.h b/x86_64-linux-musl/include/asm/setup.h
new file mode 100644
index 0000000..878419c
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/setup.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/x86_64-linux-musl/include/asm/sgx.h b/x86_64-linux-musl/include/asm/sgx.h
new file mode 100644
index 0000000..1874b78
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/sgx.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_ASM_X86_SGX_H
+#define _UAPI_ASM_X86_SGX_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+enum sgx_page_flags {
+  SGX_PAGE_MEASURE = 0x01,
+};
+#define SGX_MAGIC 0xA4
+#define SGX_IOC_ENCLAVE_CREATE _IOW(SGX_MAGIC, 0x00, struct sgx_enclave_create)
+#define SGX_IOC_ENCLAVE_ADD_PAGES _IOWR(SGX_MAGIC, 0x01, struct sgx_enclave_add_pages)
+#define SGX_IOC_ENCLAVE_INIT _IOW(SGX_MAGIC, 0x02, struct sgx_enclave_init)
+#define SGX_IOC_ENCLAVE_PROVISION _IOW(SGX_MAGIC, 0x03, struct sgx_enclave_provision)
+#define SGX_IOC_VEPC_REMOVE_ALL _IO(SGX_MAGIC, 0x04)
+struct sgx_enclave_create {
+  __u64 src;
+};
+struct sgx_enclave_add_pages {
+  __u64 src;
+  __u64 offset;
+  __u64 length;
+  __u64 secinfo;
+  __u64 flags;
+  __u64 count;
+};
+struct sgx_enclave_init {
+  __u64 sigstruct;
+};
+struct sgx_enclave_provision {
+  __u64 fd;
+};
+struct sgx_enclave_run;
+typedef int(* sgx_enclave_user_handler_t) (long rdi, long rsi, long rdx, long rsp, long r8, long r9, struct sgx_enclave_run * run);
+struct sgx_enclave_run {
+  __u64 tcs;
+  __u32 function;
+  __u16 exception_vector;
+  __u16 exception_error_code;
+  __u64 exception_addr;
+  __u64 user_handler;
+  __u64 user_data;
+  __u8 reserved[216];
+};
+typedef int(* vdso_sgx_enter_enclave_t) (unsigned long rdi, unsigned long rsi, unsigned long rdx, unsigned int function, unsigned long r8, unsigned long r9, struct sgx_enclave_run * run);
+#endif
diff --git a/x86_64-linux-musl/include/asm/shmbuf.h b/x86_64-linux-musl/include/asm/shmbuf.h
new file mode 100644
index 0000000..03e195e
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/shmbuf.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 __ASM_X86_SHMBUF_H
+#define __ASM_X86_SHMBUF_H
+#if !defined(__x86_64__) || !defined(__ILP32__)
+#include <asm-generic/shmbuf.h>
+#else
+struct shmid64_ds {
+  struct ipc64_perm shm_perm;
+  size_t shm_segsz;
+  __kernel_long_t shm_atime;
+  __kernel_long_t shm_dtime;
+  __kernel_long_t shm_ctime;
+  __kernel_pid_t shm_cpid;
+  __kernel_pid_t shm_lpid;
+  __kernel_ulong_t shm_nattch;
+  __kernel_ulong_t __unused4;
+  __kernel_ulong_t __unused5;
+};
+struct shminfo64 {
+  __kernel_ulong_t shmmax;
+  __kernel_ulong_t shmmin;
+  __kernel_ulong_t shmmni;
+  __kernel_ulong_t shmseg;
+  __kernel_ulong_t shmall;
+  __kernel_ulong_t __unused1;
+  __kernel_ulong_t __unused2;
+  __kernel_ulong_t __unused3;
+  __kernel_ulong_t __unused4;
+};
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm/sigcontext.h b/x86_64-linux-musl/include/asm/sigcontext.h
new file mode 100644
index 0000000..7d5b4d4
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/sigcontext.h
@@ -0,0 +1,225 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_X86_SIGCONTEXT_H
+#define _UAPI_ASM_X86_SIGCONTEXT_H
+#include <linux/compiler.h>
+#include <linux/types.h>
+#define FP_XSTATE_MAGIC1 0x46505853U
+#define FP_XSTATE_MAGIC2 0x46505845U
+#define FP_XSTATE_MAGIC2_SIZE sizeof(FP_XSTATE_MAGIC2)
+struct _fpx_sw_bytes {
+  __u32 magic1;
+  __u32 extended_size;
+  __u64 xfeatures;
+  __u32 xstate_size;
+  __u32 padding[7];
+};
+struct _fpreg {
+  __u16 significand[4];
+  __u16 exponent;
+};
+struct _fpxreg {
+  __u16 significand[4];
+  __u16 exponent;
+  __u16 padding[3];
+};
+struct _xmmreg {
+  __u32 element[4];
+};
+#define X86_FXSR_MAGIC 0x0000
+struct _fpstate_32 {
+  __u32 cw;
+  __u32 sw;
+  __u32 tag;
+  __u32 ipoff;
+  __u32 cssel;
+  __u32 dataoff;
+  __u32 datasel;
+  struct _fpreg _st[8];
+  __u16 status;
+  __u16 magic;
+  __u32 _fxsr_env[6];
+  __u32 mxcsr;
+  __u32 reserved;
+  struct _fpxreg _fxsr_st[8];
+  struct _xmmreg _xmm[8];
+  union {
+    __u32 padding1[44];
+    __u32 padding[44];
+  };
+  union {
+    __u32 padding2[12];
+    struct _fpx_sw_bytes sw_reserved;
+  };
+};
+struct _fpstate_64 {
+  __u16 cwd;
+  __u16 swd;
+  __u16 twd;
+  __u16 fop;
+  __u64 rip;
+  __u64 rdp;
+  __u32 mxcsr;
+  __u32 mxcsr_mask;
+  __u32 st_space[32];
+  __u32 xmm_space[64];
+  __u32 reserved2[12];
+  union {
+    __u32 reserved3[12];
+    struct _fpx_sw_bytes sw_reserved;
+  };
+};
+#ifdef __i386__
+#define _fpstate _fpstate_32
+#else
+#define _fpstate _fpstate_64
+#endif
+struct _header {
+  __u64 xfeatures;
+  __u64 reserved1[2];
+  __u64 reserved2[5];
+};
+struct _ymmh_state {
+  __u32 ymmh_space[64];
+};
+struct _xstate {
+  struct _fpstate fpstate;
+  struct _header xstate_hdr;
+  struct _ymmh_state ymmh;
+};
+struct sigcontext_32 {
+  __u16 gs, __gsh;
+  __u16 fs, __fsh;
+  __u16 es, __esh;
+  __u16 ds, __dsh;
+  __u32 di;
+  __u32 si;
+  __u32 bp;
+  __u32 sp;
+  __u32 bx;
+  __u32 dx;
+  __u32 cx;
+  __u32 ax;
+  __u32 trapno;
+  __u32 err;
+  __u32 ip;
+  __u16 cs, __csh;
+  __u32 flags;
+  __u32 sp_at_signal;
+  __u16 ss, __ssh;
+  __u32 fpstate;
+  __u32 oldmask;
+  __u32 cr2;
+};
+struct sigcontext_64 {
+  __u64 r8;
+  __u64 r9;
+  __u64 r10;
+  __u64 r11;
+  __u64 r12;
+  __u64 r13;
+  __u64 r14;
+  __u64 r15;
+  __u64 di;
+  __u64 si;
+  __u64 bp;
+  __u64 bx;
+  __u64 dx;
+  __u64 ax;
+  __u64 cx;
+  __u64 sp;
+  __u64 ip;
+  __u64 flags;
+  __u16 cs;
+  __u16 gs;
+  __u16 fs;
+  __u16 ss;
+  __u64 err;
+  __u64 trapno;
+  __u64 oldmask;
+  __u64 cr2;
+  __u64 fpstate;
+  __u64 reserved1[8];
+};
+#define _fpstate_ia32 _fpstate_32
+#define sigcontext_ia32 sigcontext_32
+#ifdef __i386__
+struct sigcontext {
+  __u16 gs, __gsh;
+  __u16 fs, __fsh;
+  __u16 es, __esh;
+  __u16 ds, __dsh;
+  __u32 edi;
+  __u32 esi;
+  __u32 ebp;
+  __u32 esp;
+  __u32 ebx;
+  __u32 edx;
+  __u32 ecx;
+  __u32 eax;
+  __u32 trapno;
+  __u32 err;
+  __u32 eip;
+  __u16 cs, __csh;
+  __u32 eflags;
+  __u32 esp_at_signal;
+  __u16 ss, __ssh;
+  struct _fpstate __user * fpstate;
+  __u32 oldmask;
+  __u32 cr2;
+};
+#else
+struct sigcontext {
+  __u64 r8;
+  __u64 r9;
+  __u64 r10;
+  __u64 r11;
+  __u64 r12;
+  __u64 r13;
+  __u64 r14;
+  __u64 r15;
+  __u64 rdi;
+  __u64 rsi;
+  __u64 rbp;
+  __u64 rbx;
+  __u64 rdx;
+  __u64 rax;
+  __u64 rcx;
+  __u64 rsp;
+  __u64 rip;
+  __u64 eflags;
+  __u16 cs;
+  __u16 gs;
+  __u16 fs;
+  union {
+    __u16 ss;
+    __u16 __pad0;
+  };
+  __u64 err;
+  __u64 trapno;
+  __u64 oldmask;
+  __u64 cr2;
+  struct _fpstate __user * fpstate;
+#ifdef __ILP32__
+  __u32 __fpstate_pad;
+#endif
+  __u64 reserved1[8];
+};
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm/sigcontext32.h b/x86_64-linux-musl/include/asm/sigcontext32.h
new file mode 100644
index 0000000..639467e
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/sigcontext32.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 _ASM_X86_SIGCONTEXT32_H
+#define _ASM_X86_SIGCONTEXT32_H
+#include <asm/sigcontext.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm/siginfo.h b/x86_64-linux-musl/include/asm/siginfo.h
new file mode 100644
index 0000000..0de5283
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/siginfo.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 _ASM_X86_SIGINFO_H
+#define _ASM_X86_SIGINFO_H
+#ifdef __x86_64__
+#ifdef __ILP32__
+typedef long long __kernel_si_clock_t __attribute__((aligned(4)));
+#define __ARCH_SI_CLOCK_T __kernel_si_clock_t
+#define __ARCH_SI_ATTRIBUTES __attribute__((aligned(8)))
+#endif
+#endif
+#include <asm-generic/siginfo.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm/signal.h b/x86_64-linux-musl/include/asm/signal.h
new file mode 100644
index 0000000..8226da8
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/signal.h
@@ -0,0 +1,96 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_X86_SIGNAL_H
+#define _UAPI_ASM_X86_SIGNAL_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#include <linux/time.h>
+#include <linux/compiler.h>
+struct siginfo;
+#define _KERNEL_NSIG 32
+typedef unsigned long sigset_t;
+#endif
+#define SIGHUP 1
+#define SIGINT 2
+#define SIGQUIT 3
+#define SIGILL 4
+#define SIGTRAP 5
+#define SIGABRT 6
+#define SIGIOT 6
+#define SIGBUS 7
+#define SIGFPE 8
+#define SIGKILL 9
+#define SIGUSR1 10
+#define SIGSEGV 11
+#define SIGUSR2 12
+#define SIGPIPE 13
+#define SIGALRM 14
+#define SIGTERM 15
+#define SIGSTKFLT 16
+#define SIGCHLD 17
+#define SIGCONT 18
+#define SIGSTOP 19
+#define SIGTSTP 20
+#define SIGTTIN 21
+#define SIGTTOU 22
+#define SIGURG 23
+#define SIGXCPU 24
+#define SIGXFSZ 25
+#define SIGVTALRM 26
+#define SIGPROF 27
+#define SIGWINCH 28
+#define SIGIO 29
+#define SIGPOLL SIGIO
+#define SIGPWR 30
+#define SIGSYS 31
+#define SIGUNUSED 31
+#define __SIGRTMIN 32
+#define __SIGRTMAX _KERNEL__NSIG
+#define SA_RESTORER 0x04000000
+#define MINSIGSTKSZ 2048
+#define SIGSTKSZ 8192
+#include <asm-generic/signal-defs.h>
+#ifndef __ASSEMBLY__
+#ifdef __i386__
+struct sigaction {
+  union {
+    __sighandler_t _sa_handler;
+    void(* _sa_sigaction) (int, struct siginfo *, void *);
+  } _u;
+  sigset_t sa_mask;
+  unsigned long sa_flags;
+  void(* sa_restorer) (void);
+};
+#define sa_handler _u._sa_handler
+#define sa_sigaction _u._sa_sigaction
+#else
+struct sigaction {
+  __sighandler_t sa_handler;
+  unsigned long sa_flags;
+  __sigrestore_t sa_restorer;
+  sigset_t sa_mask;
+};
+#endif
+typedef struct sigaltstack {
+  void __user * ss_sp;
+  int ss_flags;
+  size_t ss_size;
+} stack_t;
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm/socket.h b/x86_64-linux-musl/include/asm/socket.h
new file mode 100644
index 0000000..50a9874
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/socket.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-generic/socket.h>
diff --git a/x86_64-linux-musl/include/asm/sockios.h b/x86_64-linux-musl/include/asm/sockios.h
new file mode 100644
index 0000000..710db92
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/sockios.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-generic/sockios.h>
diff --git a/x86_64-linux-musl/include/asm/stat.h b/x86_64-linux-musl/include/asm/stat.h
new file mode 100644
index 0000000..9b8c37e
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/stat.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 _ASM_X86_STAT_H
+#define _ASM_X86_STAT_H
+#include <asm/posix_types.h>
+#define STAT_HAVE_NSEC 1
+#ifdef __i386__
+struct stat {
+  unsigned long st_dev;
+  unsigned long st_ino;
+  unsigned short st_mode;
+  unsigned short st_nlink;
+  unsigned short st_uid;
+  unsigned short st_gid;
+  unsigned long st_rdev;
+  unsigned long st_size;
+  unsigned long st_blksize;
+  unsigned long st_blocks;
+  unsigned long st_atime;
+  unsigned long st_atime_nsec;
+  unsigned long st_mtime;
+  unsigned long st_mtime_nsec;
+  unsigned long st_ctime;
+  unsigned long st_ctime_nsec;
+  unsigned long __unused4;
+  unsigned long __unused5;
+};
+#define INIT_STRUCT_STAT_PADDING(st) do { st.__unused4 = 0; st.__unused5 = 0; \
+} while(0)
+#define STAT64_HAS_BROKEN_ST_INO 1
+struct stat64 {
+  unsigned long long st_dev;
+  unsigned char __pad0[4];
+  unsigned long __st_ino;
+  unsigned int st_mode;
+  unsigned int st_nlink;
+  unsigned long st_uid;
+  unsigned long st_gid;
+  unsigned long long st_rdev;
+  unsigned char __pad3[4];
+  long long st_size;
+  unsigned long st_blksize;
+  unsigned long long st_blocks;
+  unsigned long st_atime;
+  unsigned long st_atime_nsec;
+  unsigned long st_mtime;
+  unsigned int st_mtime_nsec;
+  unsigned long st_ctime;
+  unsigned long st_ctime_nsec;
+  unsigned long long st_ino;
+};
+#define INIT_STRUCT_STAT64_PADDING(st) do { memset(& st.__pad0, 0, sizeof(st.__pad0)); memset(& st.__pad3, 0, sizeof(st.__pad3)); \
+} while(0)
+#else
+struct stat {
+  __kernel_ulong_t st_dev;
+  __kernel_ulong_t st_ino;
+  __kernel_ulong_t st_nlink;
+  unsigned int st_mode;
+  unsigned int st_uid;
+  unsigned int st_gid;
+  unsigned int __pad0;
+  __kernel_ulong_t st_rdev;
+  __kernel_long_t st_size;
+  __kernel_long_t st_blksize;
+  __kernel_long_t st_blocks;
+  __kernel_ulong_t st_atime;
+  __kernel_ulong_t st_atime_nsec;
+  __kernel_ulong_t st_mtime;
+  __kernel_ulong_t st_mtime_nsec;
+  __kernel_ulong_t st_ctime;
+  __kernel_ulong_t st_ctime_nsec;
+  __kernel_long_t __linux_unused[3];
+};
+#define INIT_STRUCT_STAT_PADDING(st) do { st.__pad0 = 0; st.__linux_unused[0] = 0; st.__linux_unused[1] = 0; st.__linux_unused[2] = 0; \
+} while(0)
+#endif
+struct __old_kernel_stat {
+  unsigned short st_dev;
+  unsigned short st_ino;
+  unsigned short st_mode;
+  unsigned short st_nlink;
+  unsigned short st_uid;
+  unsigned short st_gid;
+  unsigned short st_rdev;
+#ifdef __i386__
+  unsigned long st_size;
+  unsigned long st_atime;
+  unsigned long st_mtime;
+  unsigned long st_ctime;
+#else
+  unsigned int st_size;
+  unsigned int st_atime;
+  unsigned int st_mtime;
+  unsigned int st_ctime;
+#endif
+};
+#endif
diff --git a/x86_64-linux-musl/include/asm/statfs.h b/x86_64-linux-musl/include/asm/statfs.h
new file mode 100644
index 0000000..3ac754c
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/statfs.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 _ASM_X86_STATFS_H
+#define _ASM_X86_STATFS_H
+#define ARCH_PACK_COMPAT_STATFS64 __attribute__((packed, aligned(4)))
+#include <asm-generic/statfs.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm/svm.h b/x86_64-linux-musl/include/asm/svm.h
new file mode 100644
index 0000000..d051481
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/svm.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__SVM_H
+#define _UAPI__SVM_H
+#define SVM_EXIT_READ_CR0 0x000
+#define SVM_EXIT_READ_CR2 0x002
+#define SVM_EXIT_READ_CR3 0x003
+#define SVM_EXIT_READ_CR4 0x004
+#define SVM_EXIT_READ_CR8 0x008
+#define SVM_EXIT_WRITE_CR0 0x010
+#define SVM_EXIT_WRITE_CR2 0x012
+#define SVM_EXIT_WRITE_CR3 0x013
+#define SVM_EXIT_WRITE_CR4 0x014
+#define SVM_EXIT_WRITE_CR8 0x018
+#define SVM_EXIT_READ_DR0 0x020
+#define SVM_EXIT_READ_DR1 0x021
+#define SVM_EXIT_READ_DR2 0x022
+#define SVM_EXIT_READ_DR3 0x023
+#define SVM_EXIT_READ_DR4 0x024
+#define SVM_EXIT_READ_DR5 0x025
+#define SVM_EXIT_READ_DR6 0x026
+#define SVM_EXIT_READ_DR7 0x027
+#define SVM_EXIT_WRITE_DR0 0x030
+#define SVM_EXIT_WRITE_DR1 0x031
+#define SVM_EXIT_WRITE_DR2 0x032
+#define SVM_EXIT_WRITE_DR3 0x033
+#define SVM_EXIT_WRITE_DR4 0x034
+#define SVM_EXIT_WRITE_DR5 0x035
+#define SVM_EXIT_WRITE_DR6 0x036
+#define SVM_EXIT_WRITE_DR7 0x037
+#define SVM_EXIT_EXCP_BASE 0x040
+#define SVM_EXIT_LAST_EXCP 0x05f
+#define SVM_EXIT_INTR 0x060
+#define SVM_EXIT_NMI 0x061
+#define SVM_EXIT_SMI 0x062
+#define SVM_EXIT_INIT 0x063
+#define SVM_EXIT_VINTR 0x064
+#define SVM_EXIT_CR0_SEL_WRITE 0x065
+#define SVM_EXIT_IDTR_READ 0x066
+#define SVM_EXIT_GDTR_READ 0x067
+#define SVM_EXIT_LDTR_READ 0x068
+#define SVM_EXIT_TR_READ 0x069
+#define SVM_EXIT_IDTR_WRITE 0x06a
+#define SVM_EXIT_GDTR_WRITE 0x06b
+#define SVM_EXIT_LDTR_WRITE 0x06c
+#define SVM_EXIT_TR_WRITE 0x06d
+#define SVM_EXIT_RDTSC 0x06e
+#define SVM_EXIT_RDPMC 0x06f
+#define SVM_EXIT_PUSHF 0x070
+#define SVM_EXIT_POPF 0x071
+#define SVM_EXIT_CPUID 0x072
+#define SVM_EXIT_RSM 0x073
+#define SVM_EXIT_IRET 0x074
+#define SVM_EXIT_SWINT 0x075
+#define SVM_EXIT_INVD 0x076
+#define SVM_EXIT_PAUSE 0x077
+#define SVM_EXIT_HLT 0x078
+#define SVM_EXIT_INVLPG 0x079
+#define SVM_EXIT_INVLPGA 0x07a
+#define SVM_EXIT_IOIO 0x07b
+#define SVM_EXIT_MSR 0x07c
+#define SVM_EXIT_TASK_SWITCH 0x07d
+#define SVM_EXIT_FERR_FREEZE 0x07e
+#define SVM_EXIT_SHUTDOWN 0x07f
+#define SVM_EXIT_VMRUN 0x080
+#define SVM_EXIT_VMMCALL 0x081
+#define SVM_EXIT_VMLOAD 0x082
+#define SVM_EXIT_VMSAVE 0x083
+#define SVM_EXIT_STGI 0x084
+#define SVM_EXIT_CLGI 0x085
+#define SVM_EXIT_SKINIT 0x086
+#define SVM_EXIT_RDTSCP 0x087
+#define SVM_EXIT_ICEBP 0x088
+#define SVM_EXIT_WBINVD 0x089
+#define SVM_EXIT_MONITOR 0x08a
+#define SVM_EXIT_MWAIT 0x08b
+#define SVM_EXIT_MWAIT_COND 0x08c
+#define SVM_EXIT_XSETBV 0x08d
+#define SVM_EXIT_RDPRU 0x08e
+#define SVM_EXIT_EFER_WRITE_TRAP 0x08f
+#define SVM_EXIT_CR0_WRITE_TRAP 0x090
+#define SVM_EXIT_CR1_WRITE_TRAP 0x091
+#define SVM_EXIT_CR2_WRITE_TRAP 0x092
+#define SVM_EXIT_CR3_WRITE_TRAP 0x093
+#define SVM_EXIT_CR4_WRITE_TRAP 0x094
+#define SVM_EXIT_CR5_WRITE_TRAP 0x095
+#define SVM_EXIT_CR6_WRITE_TRAP 0x096
+#define SVM_EXIT_CR7_WRITE_TRAP 0x097
+#define SVM_EXIT_CR8_WRITE_TRAP 0x098
+#define SVM_EXIT_CR9_WRITE_TRAP 0x099
+#define SVM_EXIT_CR10_WRITE_TRAP 0x09a
+#define SVM_EXIT_CR11_WRITE_TRAP 0x09b
+#define SVM_EXIT_CR12_WRITE_TRAP 0x09c
+#define SVM_EXIT_CR13_WRITE_TRAP 0x09d
+#define SVM_EXIT_CR14_WRITE_TRAP 0x09e
+#define SVM_EXIT_CR15_WRITE_TRAP 0x09f
+#define SVM_EXIT_INVPCID 0x0a2
+#define SVM_EXIT_NPF 0x400
+#define SVM_EXIT_AVIC_INCOMPLETE_IPI 0x401
+#define SVM_EXIT_AVIC_UNACCELERATED_ACCESS 0x402
+#define SVM_EXIT_VMGEXIT 0x403
+#define SVM_VMGEXIT_MMIO_READ 0x80000001
+#define SVM_VMGEXIT_MMIO_WRITE 0x80000002
+#define SVM_VMGEXIT_NMI_COMPLETE 0x80000003
+#define SVM_VMGEXIT_AP_HLT_LOOP 0x80000004
+#define SVM_VMGEXIT_AP_JUMP_TABLE 0x80000005
+#define SVM_VMGEXIT_SET_AP_JUMP_TABLE 0
+#define SVM_VMGEXIT_GET_AP_JUMP_TABLE 1
+#define SVM_VMGEXIT_UNSUPPORTED_EVENT 0x8000ffff
+#define SVM_EXIT_SW 0xf0000000
+#define SVM_EXIT_ERR - 1
+#define SVM_EXIT_REASONS { SVM_EXIT_READ_CR0, "read_cr0" }, { SVM_EXIT_READ_CR2, "read_cr2" }, { SVM_EXIT_READ_CR3, "read_cr3" }, { SVM_EXIT_READ_CR4, "read_cr4" }, { SVM_EXIT_READ_CR8, "read_cr8" }, { SVM_EXIT_WRITE_CR0, "write_cr0" }, { SVM_EXIT_WRITE_CR2, "write_cr2" }, { SVM_EXIT_WRITE_CR3, "write_cr3" }, { SVM_EXIT_WRITE_CR4, "write_cr4" }, { SVM_EXIT_WRITE_CR8, "write_cr8" }, { SVM_EXIT_READ_DR0, "read_dr0" }, { SVM_EXIT_READ_DR1, "read_dr1" }, { SVM_EXIT_READ_DR2, "read_dr2" }, { SVM_EXIT_READ_DR3, "read_dr3" }, { SVM_EXIT_READ_DR4, "read_dr4" }, { SVM_EXIT_READ_DR5, "read_dr5" }, { SVM_EXIT_READ_DR6, "read_dr6" }, { SVM_EXIT_READ_DR7, "read_dr7" }, { SVM_EXIT_WRITE_DR0, "write_dr0" }, { SVM_EXIT_WRITE_DR1, "write_dr1" }, { SVM_EXIT_WRITE_DR2, "write_dr2" }, { SVM_EXIT_WRITE_DR3, "write_dr3" }, { SVM_EXIT_WRITE_DR4, "write_dr4" }, { SVM_EXIT_WRITE_DR5, "write_dr5" }, { SVM_EXIT_WRITE_DR6, "write_dr6" }, { SVM_EXIT_WRITE_DR7, "write_dr7" }, { SVM_EXIT_EXCP_BASE + DE_VECTOR, "DE excp" }, { SVM_EXIT_EXCP_BASE + DB_VECTOR, "DB excp" }, { SVM_EXIT_EXCP_BASE + BP_VECTOR, "BP excp" }, { SVM_EXIT_EXCP_BASE + OF_VECTOR, "OF excp" }, { SVM_EXIT_EXCP_BASE + BR_VECTOR, "BR excp" }, { SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" }, { SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" }, { SVM_EXIT_EXCP_BASE + DF_VECTOR, "DF excp" }, { SVM_EXIT_EXCP_BASE + TS_VECTOR, "TS excp" }, { SVM_EXIT_EXCP_BASE + NP_VECTOR, "NP excp" }, { SVM_EXIT_EXCP_BASE + SS_VECTOR, "SS excp" }, { SVM_EXIT_EXCP_BASE + GP_VECTOR, "GP excp" }, { SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" }, { SVM_EXIT_EXCP_BASE + MF_VECTOR, "MF excp" }, { SVM_EXIT_EXCP_BASE + AC_VECTOR, "AC excp" }, { SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" }, { SVM_EXIT_EXCP_BASE + XM_VECTOR, "XF excp" }, { SVM_EXIT_INTR, "interrupt" }, { SVM_EXIT_NMI, "nmi" }, { SVM_EXIT_SMI, "smi" }, { SVM_EXIT_INIT, "init" }, { SVM_EXIT_VINTR, "vintr" }, { SVM_EXIT_CR0_SEL_WRITE, "cr0_sel_write" }, { SVM_EXIT_IDTR_READ, "read_idtr" }, { SVM_EXIT_GDTR_READ, "read_gdtr" }, { SVM_EXIT_LDTR_READ, "read_ldtr" }, { SVM_EXIT_TR_READ, "read_rt" }, { SVM_EXIT_IDTR_WRITE, "write_idtr" }, { SVM_EXIT_GDTR_WRITE, "write_gdtr" }, { SVM_EXIT_LDTR_WRITE, "write_ldtr" }, { SVM_EXIT_TR_WRITE, "write_rt" }, { SVM_EXIT_RDTSC, "rdtsc" }, { SVM_EXIT_RDPMC, "rdpmc" }, { SVM_EXIT_PUSHF, "pushf" }, { SVM_EXIT_POPF, "popf" }, { SVM_EXIT_CPUID, "cpuid" }, { SVM_EXIT_RSM, "rsm" }, { SVM_EXIT_IRET, "iret" }, { SVM_EXIT_SWINT, "swint" }, { SVM_EXIT_INVD, "invd" }, { SVM_EXIT_PAUSE, "pause" }, { SVM_EXIT_HLT, "hlt" }, { SVM_EXIT_INVLPG, "invlpg" }, { SVM_EXIT_INVLPGA, "invlpga" }, { SVM_EXIT_IOIO, "io" }, { SVM_EXIT_MSR, "msr" }, { SVM_EXIT_TASK_SWITCH, "task_switch" }, { SVM_EXIT_FERR_FREEZE, "ferr_freeze" }, { SVM_EXIT_SHUTDOWN, "shutdown" }, { SVM_EXIT_VMRUN, "vmrun" }, { SVM_EXIT_VMMCALL, "hypercall" }, { SVM_EXIT_VMLOAD, "vmload" }, { SVM_EXIT_VMSAVE, "vmsave" }, { SVM_EXIT_STGI, "stgi" }, { SVM_EXIT_CLGI, "clgi" }, { SVM_EXIT_SKINIT, "skinit" }, { SVM_EXIT_RDTSCP, "rdtscp" }, { SVM_EXIT_ICEBP, "icebp" }, { SVM_EXIT_WBINVD, "wbinvd" }, { SVM_EXIT_MONITOR, "monitor" }, { SVM_EXIT_MWAIT, "mwait" }, { SVM_EXIT_XSETBV, "xsetbv" }, { SVM_EXIT_EFER_WRITE_TRAP, "write_efer_trap" }, { SVM_EXIT_CR0_WRITE_TRAP, "write_cr0_trap" }, { SVM_EXIT_CR4_WRITE_TRAP, "write_cr4_trap" }, { SVM_EXIT_CR8_WRITE_TRAP, "write_cr8_trap" }, { SVM_EXIT_INVPCID, "invpcid" }, { SVM_EXIT_NPF, "npf" }, { SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, { SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" }, { SVM_EXIT_VMGEXIT, "vmgexit" }, { SVM_VMGEXIT_MMIO_READ, "vmgexit_mmio_read" }, { SVM_VMGEXIT_MMIO_WRITE, "vmgexit_mmio_write" }, { SVM_VMGEXIT_NMI_COMPLETE, "vmgexit_nmi_complete" }, { SVM_VMGEXIT_AP_HLT_LOOP, "vmgexit_ap_hlt_loop" }, { SVM_VMGEXIT_AP_JUMP_TABLE, "vmgexit_ap_jump_table" }, { SVM_EXIT_ERR, "invalid_guest_state" }
+#endif
diff --git a/x86_64-linux-musl/include/asm/swab.h b/x86_64-linux-musl/include/asm/swab.h
new file mode 100644
index 0000000..24fd5e3
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/swab.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 _ASM_X86_SWAB_H
+#define _ASM_X86_SWAB_H
+#include <linux/types.h>
+#include <linux/compiler.h>
+#define __arch_swab32 __arch_swab32
+#ifdef __i386__
+#else
+#endif
+#define __arch_swab64 __arch_swab64
+#endif
diff --git a/x86_64-linux-musl/include/asm/termbits.h b/x86_64-linux-musl/include/asm/termbits.h
new file mode 100644
index 0000000..42af6fe
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/termbits.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-generic/termbits.h>
diff --git a/x86_64-linux-musl/include/asm/termios.h b/x86_64-linux-musl/include/asm/termios.h
new file mode 100644
index 0000000..feca4c6
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/termios.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-generic/termios.h>
diff --git a/x86_64-linux-musl/include/asm/types.h b/x86_64-linux-musl/include/asm/types.h
new file mode 100644
index 0000000..8250f43
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/types.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-generic/types.h>
diff --git a/x86_64-linux-musl/include/asm/ucontext.h b/x86_64-linux-musl/include/asm/ucontext.h
new file mode 100644
index 0000000..1bb416f
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/ucontext.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 _ASM_X86_UCONTEXT_H
+#define _ASM_X86_UCONTEXT_H
+#define UC_FP_XSTATE 0x1
+#ifdef __x86_64__
+#define UC_SIGCONTEXT_SS 0x2
+#define UC_STRICT_RESTORE_SS 0x4
+#endif
+#include <asm-generic/ucontext.h>
+#endif
diff --git a/x86_64-linux-musl/include/asm/unistd.h b/x86_64-linux-musl/include/asm/unistd.h
new file mode 100644
index 0000000..8cab383
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/unistd.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_ASM_X86_UNISTD_H
+#define _UAPI_ASM_X86_UNISTD_H
+#define __X32_SYSCALL_BIT 0x40000000
+#ifdef __i386__
+#include <asm/unistd_32.h>
+#elif defined(__ILP32__)
+#include <asm/unistd_x32.h>
+#else
+#include <asm/unistd_64.h>
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/asm/unistd_32.h b/x86_64-linux-musl/include/asm/unistd_32.h
new file mode 100644
index 0000000..3a353fe
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/unistd_32.h
@@ -0,0 +1,460 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_UNISTD_32_H
+#define _UAPI_ASM_UNISTD_32_H
+#define __NR_restart_syscall 0
+#define __NR_exit 1
+#define __NR_fork 2
+#define __NR_read 3
+#define __NR_write 4
+#define __NR_open 5
+#define __NR_close 6
+#define __NR_waitpid 7
+#define __NR_creat 8
+#define __NR_link 9
+#define __NR_unlink 10
+#define __NR_execve 11
+#define __NR_chdir 12
+#define __NR_time 13
+#define __NR_mknod 14
+#define __NR_chmod 15
+#define __NR_lchown 16
+#define __NR_break 17
+#define __NR_oldstat 18
+#define __NR_lseek 19
+#define __NR_getpid 20
+#define __NR_mount 21
+#define __NR_umount 22
+#define __NR_setuid 23
+#define __NR_getuid 24
+#define __NR_stime 25
+#define __NR_ptrace 26
+#define __NR_alarm 27
+#define __NR_oldfstat 28
+#define __NR_pause 29
+#define __NR_utime 30
+#define __NR_stty 31
+#define __NR_gtty 32
+#define __NR_access 33
+#define __NR_nice 34
+#define __NR_ftime 35
+#define __NR_sync 36
+#define __NR_kill 37
+#define __NR_rename 38
+#define __NR_mkdir 39
+#define __NR_rmdir 40
+#define __NR_dup 41
+#define __NR_pipe 42
+#define __NR_times 43
+#define __NR_prof 44
+#define __NR_brk 45
+#define __NR_setgid 46
+#define __NR_getgid 47
+#define __NR_signal 48
+#define __NR_geteuid 49
+#define __NR_getegid 50
+#define __NR_acct 51
+#define __NR_umount2 52
+#define __NR_lock 53
+#define __NR_ioctl 54
+#define __NR_fcntl 55
+#define __NR_mpx 56
+#define __NR_setpgid 57
+#define __NR_ulimit 58
+#define __NR_oldolduname 59
+#define __NR_umask 60
+#define __NR_chroot 61
+#define __NR_ustat 62
+#define __NR_dup2 63
+#define __NR_getppid 64
+#define __NR_getpgrp 65
+#define __NR_setsid 66
+#define __NR_sigaction 67
+#define __NR_sgetmask 68
+#define __NR_ssetmask 69
+#define __NR_setreuid 70
+#define __NR_setregid 71
+#define __NR_sigsuspend 72
+#define __NR_sigpending 73
+#define __NR_sethostname 74
+#define __NR_setrlimit 75
+#define __NR_getrlimit 76
+#define __NR_getrusage 77
+#define __NR_gettimeofday 78
+#define __NR_settimeofday 79
+#define __NR_getgroups 80
+#define __NR_setgroups 81
+#define __NR_select 82
+#define __NR_symlink 83
+#define __NR_oldlstat 84
+#define __NR_readlink 85
+#define __NR_uselib 86
+#define __NR_swapon 87
+#define __NR_reboot 88
+#define __NR_readdir 89
+#define __NR_mmap 90
+#define __NR_munmap 91
+#define __NR_truncate 92
+#define __NR_ftruncate 93
+#define __NR_fchmod 94
+#define __NR_fchown 95
+#define __NR_getpriority 96
+#define __NR_setpriority 97
+#define __NR_profil 98
+#define __NR_statfs 99
+#define __NR_fstatfs 100
+#define __NR_ioperm 101
+#define __NR_socketcall 102
+#define __NR_syslog 103
+#define __NR_setitimer 104
+#define __NR_getitimer 105
+#define __NR_stat 106
+#define __NR_lstat 107
+#define __NR_fstat 108
+#define __NR_olduname 109
+#define __NR_iopl 110
+#define __NR_vhangup 111
+#define __NR_idle 112
+#define __NR_vm86old 113
+#define __NR_wait4 114
+#define __NR_swapoff 115
+#define __NR_sysinfo 116
+#define __NR_ipc 117
+#define __NR_fsync 118
+#define __NR_sigreturn 119
+#define __NR_clone 120
+#define __NR_setdomainname 121
+#define __NR_uname 122
+#define __NR_modify_ldt 123
+#define __NR_adjtimex 124
+#define __NR_mprotect 125
+#define __NR_sigprocmask 126
+#define __NR_create_module 127
+#define __NR_init_module 128
+#define __NR_delete_module 129
+#define __NR_get_kernel_syms 130
+#define __NR_quotactl 131
+#define __NR_getpgid 132
+#define __NR_fchdir 133
+#define __NR_bdflush 134
+#define __NR_sysfs 135
+#define __NR_personality 136
+#define __NR_afs_syscall 137
+#define __NR_setfsuid 138
+#define __NR_setfsgid 139
+#define __NR__llseek 140
+#define __NR_getdents 141
+#define __NR__newselect 142
+#define __NR_flock 143
+#define __NR_msync 144
+#define __NR_readv 145
+#define __NR_writev 146
+#define __NR_getsid 147
+#define __NR_fdatasync 148
+#define __NR__sysctl 149
+#define __NR_mlock 150
+#define __NR_munlock 151
+#define __NR_mlockall 152
+#define __NR_munlockall 153
+#define __NR_sched_setparam 154
+#define __NR_sched_getparam 155
+#define __NR_sched_setscheduler 156
+#define __NR_sched_getscheduler 157
+#define __NR_sched_yield 158
+#define __NR_sched_get_priority_max 159
+#define __NR_sched_get_priority_min 160
+#define __NR_sched_rr_get_interval 161
+#define __NR_nanosleep 162
+#define __NR_mremap 163
+#define __NR_setresuid 164
+#define __NR_getresuid 165
+#define __NR_vm86 166
+#define __NR_query_module 167
+#define __NR_poll 168
+#define __NR_nfsservctl 169
+#define __NR_setresgid 170
+#define __NR_getresgid 171
+#define __NR_prctl 172
+#define __NR_rt_sigreturn 173
+#define __NR_rt_sigaction 174
+#define __NR_rt_sigprocmask 175
+#define __NR_rt_sigpending 176
+#define __NR_rt_sigtimedwait 177
+#define __NR_rt_sigqueueinfo 178
+#define __NR_rt_sigsuspend 179
+#define __NR_pread64 180
+#define __NR_pwrite64 181
+#define __NR_chown 182
+#define __NR_getcwd 183
+#define __NR_capget 184
+#define __NR_capset 185
+#define __NR_sigaltstack 186
+#define __NR_sendfile 187
+#define __NR_getpmsg 188
+#define __NR_putpmsg 189
+#define __NR_vfork 190
+#define __NR_ugetrlimit 191
+#define __NR_mmap2 192
+#define __NR_truncate64 193
+#define __NR_ftruncate64 194
+#define __NR_stat64 195
+#define __NR_lstat64 196
+#define __NR_fstat64 197
+#define __NR_lchown32 198
+#define __NR_getuid32 199
+#define __NR_getgid32 200
+#define __NR_geteuid32 201
+#define __NR_getegid32 202
+#define __NR_setreuid32 203
+#define __NR_setregid32 204
+#define __NR_getgroups32 205
+#define __NR_setgroups32 206
+#define __NR_fchown32 207
+#define __NR_setresuid32 208
+#define __NR_getresuid32 209
+#define __NR_setresgid32 210
+#define __NR_getresgid32 211
+#define __NR_chown32 212
+#define __NR_setuid32 213
+#define __NR_setgid32 214
+#define __NR_setfsuid32 215
+#define __NR_setfsgid32 216
+#define __NR_pivot_root 217
+#define __NR_mincore 218
+#define __NR_madvise 219
+#define __NR_getdents64 220
+#define __NR_fcntl64 221
+#define __NR_gettid 224
+#define __NR_readahead 225
+#define __NR_setxattr 226
+#define __NR_lsetxattr 227
+#define __NR_fsetxattr 228
+#define __NR_getxattr 229
+#define __NR_lgetxattr 230
+#define __NR_fgetxattr 231
+#define __NR_listxattr 232
+#define __NR_llistxattr 233
+#define __NR_flistxattr 234
+#define __NR_removexattr 235
+#define __NR_lremovexattr 236
+#define __NR_fremovexattr 237
+#define __NR_tkill 238
+#define __NR_sendfile64 239
+#define __NR_futex 240
+#define __NR_sched_setaffinity 241
+#define __NR_sched_getaffinity 242
+#define __NR_set_thread_area 243
+#define __NR_get_thread_area 244
+#define __NR_io_setup 245
+#define __NR_io_destroy 246
+#define __NR_io_getevents 247
+#define __NR_io_submit 248
+#define __NR_io_cancel 249
+#define __NR_fadvise64 250
+#define __NR_exit_group 252
+#define __NR_lookup_dcookie 253
+#define __NR_epoll_create 254
+#define __NR_epoll_ctl 255
+#define __NR_epoll_wait 256
+#define __NR_remap_file_pages 257
+#define __NR_set_tid_address 258
+#define __NR_timer_create 259
+#define __NR_timer_settime 260
+#define __NR_timer_gettime 261
+#define __NR_timer_getoverrun 262
+#define __NR_timer_delete 263
+#define __NR_clock_settime 264
+#define __NR_clock_gettime 265
+#define __NR_clock_getres 266
+#define __NR_clock_nanosleep 267
+#define __NR_statfs64 268
+#define __NR_fstatfs64 269
+#define __NR_tgkill 270
+#define __NR_utimes 271
+#define __NR_fadvise64_64 272
+#define __NR_vserver 273
+#define __NR_mbind 274
+#define __NR_get_mempolicy 275
+#define __NR_set_mempolicy 276
+#define __NR_mq_open 277
+#define __NR_mq_unlink 278
+#define __NR_mq_timedsend 279
+#define __NR_mq_timedreceive 280
+#define __NR_mq_notify 281
+#define __NR_mq_getsetattr 282
+#define __NR_kexec_load 283
+#define __NR_waitid 284
+#define __NR_add_key 286
+#define __NR_request_key 287
+#define __NR_keyctl 288
+#define __NR_ioprio_set 289
+#define __NR_ioprio_get 290
+#define __NR_inotify_init 291
+#define __NR_inotify_add_watch 292
+#define __NR_inotify_rm_watch 293
+#define __NR_migrate_pages 294
+#define __NR_openat 295
+#define __NR_mkdirat 296
+#define __NR_mknodat 297
+#define __NR_fchownat 298
+#define __NR_futimesat 299
+#define __NR_fstatat64 300
+#define __NR_unlinkat 301
+#define __NR_renameat 302
+#define __NR_linkat 303
+#define __NR_symlinkat 304
+#define __NR_readlinkat 305
+#define __NR_fchmodat 306
+#define __NR_faccessat 307
+#define __NR_pselect6 308
+#define __NR_ppoll 309
+#define __NR_unshare 310
+#define __NR_set_robust_list 311
+#define __NR_get_robust_list 312
+#define __NR_splice 313
+#define __NR_sync_file_range 314
+#define __NR_tee 315
+#define __NR_vmsplice 316
+#define __NR_move_pages 317
+#define __NR_getcpu 318
+#define __NR_epoll_pwait 319
+#define __NR_utimensat 320
+#define __NR_signalfd 321
+#define __NR_timerfd_create 322
+#define __NR_eventfd 323
+#define __NR_fallocate 324
+#define __NR_timerfd_settime 325
+#define __NR_timerfd_gettime 326
+#define __NR_signalfd4 327
+#define __NR_eventfd2 328
+#define __NR_epoll_create1 329
+#define __NR_dup3 330
+#define __NR_pipe2 331
+#define __NR_inotify_init1 332
+#define __NR_preadv 333
+#define __NR_pwritev 334
+#define __NR_rt_tgsigqueueinfo 335
+#define __NR_perf_event_open 336
+#define __NR_recvmmsg 337
+#define __NR_fanotify_init 338
+#define __NR_fanotify_mark 339
+#define __NR_prlimit64 340
+#define __NR_name_to_handle_at 341
+#define __NR_open_by_handle_at 342
+#define __NR_clock_adjtime 343
+#define __NR_syncfs 344
+#define __NR_sendmmsg 345
+#define __NR_setns 346
+#define __NR_process_vm_readv 347
+#define __NR_process_vm_writev 348
+#define __NR_kcmp 349
+#define __NR_finit_module 350
+#define __NR_sched_setattr 351
+#define __NR_sched_getattr 352
+#define __NR_renameat2 353
+#define __NR_seccomp 354
+#define __NR_getrandom 355
+#define __NR_memfd_create 356
+#define __NR_bpf 357
+#define __NR_execveat 358
+#define __NR_socket 359
+#define __NR_socketpair 360
+#define __NR_bind 361
+#define __NR_connect 362
+#define __NR_listen 363
+#define __NR_accept4 364
+#define __NR_getsockopt 365
+#define __NR_setsockopt 366
+#define __NR_getsockname 367
+#define __NR_getpeername 368
+#define __NR_sendto 369
+#define __NR_sendmsg 370
+#define __NR_recvfrom 371
+#define __NR_recvmsg 372
+#define __NR_shutdown 373
+#define __NR_userfaultfd 374
+#define __NR_membarrier 375
+#define __NR_mlock2 376
+#define __NR_copy_file_range 377
+#define __NR_preadv2 378
+#define __NR_pwritev2 379
+#define __NR_pkey_mprotect 380
+#define __NR_pkey_alloc 381
+#define __NR_pkey_free 382
+#define __NR_statx 383
+#define __NR_arch_prctl 384
+#define __NR_io_pgetevents 385
+#define __NR_rseq 386
+#define __NR_semget 393
+#define __NR_semctl 394
+#define __NR_shmget 395
+#define __NR_shmctl 396
+#define __NR_shmat 397
+#define __NR_shmdt 398
+#define __NR_msgget 399
+#define __NR_msgsnd 400
+#define __NR_msgrcv 401
+#define __NR_msgctl 402
+#define __NR_clock_gettime64 403
+#define __NR_clock_settime64 404
+#define __NR_clock_adjtime64 405
+#define __NR_clock_getres_time64 406
+#define __NR_clock_nanosleep_time64 407
+#define __NR_timer_gettime64 408
+#define __NR_timer_settime64 409
+#define __NR_timerfd_gettime64 410
+#define __NR_timerfd_settime64 411
+#define __NR_utimensat_time64 412
+#define __NR_pselect6_time64 413
+#define __NR_ppoll_time64 414
+#define __NR_io_pgetevents_time64 416
+#define __NR_recvmmsg_time64 417
+#define __NR_mq_timedsend_time64 418
+#define __NR_mq_timedreceive_time64 419
+#define __NR_semtimedop_time64 420
+#define __NR_rt_sigtimedwait_time64 421
+#define __NR_futex_time64 422
+#define __NR_sched_rr_get_interval_time64 423
+#define __NR_pidfd_send_signal 424
+#define __NR_io_uring_setup 425
+#define __NR_io_uring_enter 426
+#define __NR_io_uring_register 427
+#define __NR_open_tree 428
+#define __NR_move_mount 429
+#define __NR_fsopen 430
+#define __NR_fsconfig 431
+#define __NR_fsmount 432
+#define __NR_fspick 433
+#define __NR_pidfd_open 434
+#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
+#define __NR_process_madvise 440
+#define __NR_epoll_pwait2 441
+#define __NR_mount_setattr 442
+#define __NR_quotactl_fd 443
+#define __NR_landlock_create_ruleset 444
+#define __NR_landlock_add_rule 445
+#define __NR_landlock_restrict_self 446
+#define __NR_memfd_secret 447
+#define __NR_process_mrelease 448
+#define __NR_futex_waitv 449
+#endif
diff --git a/x86_64-linux-musl/include/asm/unistd_64.h b/x86_64-linux-musl/include/asm/unistd_64.h
new file mode 100644
index 0000000..5fa4d2c
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/unistd_64.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_ASM_UNISTD_64_H
+#define _UAPI_ASM_UNISTD_64_H
+#define __NR_read 0
+#define __NR_write 1
+#define __NR_open 2
+#define __NR_close 3
+#define __NR_stat 4
+#define __NR_fstat 5
+#define __NR_lstat 6
+#define __NR_poll 7
+#define __NR_lseek 8
+#define __NR_mmap 9
+#define __NR_mprotect 10
+#define __NR_munmap 11
+#define __NR_brk 12
+#define __NR_rt_sigaction 13
+#define __NR_rt_sigprocmask 14
+#define __NR_rt_sigreturn 15
+#define __NR_ioctl 16
+#define __NR_pread64 17
+#define __NR_pwrite64 18
+#define __NR_readv 19
+#define __NR_writev 20
+#define __NR_access 21
+#define __NR_pipe 22
+#define __NR_select 23
+#define __NR_sched_yield 24
+#define __NR_mremap 25
+#define __NR_msync 26
+#define __NR_mincore 27
+#define __NR_madvise 28
+#define __NR_shmget 29
+#define __NR_shmat 30
+#define __NR_shmctl 31
+#define __NR_dup 32
+#define __NR_dup2 33
+#define __NR_pause 34
+#define __NR_nanosleep 35
+#define __NR_getitimer 36
+#define __NR_alarm 37
+#define __NR_setitimer 38
+#define __NR_getpid 39
+#define __NR_sendfile 40
+#define __NR_socket 41
+#define __NR_connect 42
+#define __NR_accept 43
+#define __NR_sendto 44
+#define __NR_recvfrom 45
+#define __NR_sendmsg 46
+#define __NR_recvmsg 47
+#define __NR_shutdown 48
+#define __NR_bind 49
+#define __NR_listen 50
+#define __NR_getsockname 51
+#define __NR_getpeername 52
+#define __NR_socketpair 53
+#define __NR_setsockopt 54
+#define __NR_getsockopt 55
+#define __NR_clone 56
+#define __NR_fork 57
+#define __NR_vfork 58
+#define __NR_execve 59
+#define __NR_exit 60
+#define __NR_wait4 61
+#define __NR_kill 62
+#define __NR_uname 63
+#define __NR_semget 64
+#define __NR_semop 65
+#define __NR_semctl 66
+#define __NR_shmdt 67
+#define __NR_msgget 68
+#define __NR_msgsnd 69
+#define __NR_msgrcv 70
+#define __NR_msgctl 71
+#define __NR_fcntl 72
+#define __NR_flock 73
+#define __NR_fsync 74
+#define __NR_fdatasync 75
+#define __NR_truncate 76
+#define __NR_ftruncate 77
+#define __NR_getdents 78
+#define __NR_getcwd 79
+#define __NR_chdir 80
+#define __NR_fchdir 81
+#define __NR_rename 82
+#define __NR_mkdir 83
+#define __NR_rmdir 84
+#define __NR_creat 85
+#define __NR_link 86
+#define __NR_unlink 87
+#define __NR_symlink 88
+#define __NR_readlink 89
+#define __NR_chmod 90
+#define __NR_fchmod 91
+#define __NR_chown 92
+#define __NR_fchown 93
+#define __NR_lchown 94
+#define __NR_umask 95
+#define __NR_gettimeofday 96
+#define __NR_getrlimit 97
+#define __NR_getrusage 98
+#define __NR_sysinfo 99
+#define __NR_times 100
+#define __NR_ptrace 101
+#define __NR_getuid 102
+#define __NR_syslog 103
+#define __NR_getgid 104
+#define __NR_setuid 105
+#define __NR_setgid 106
+#define __NR_geteuid 107
+#define __NR_getegid 108
+#define __NR_setpgid 109
+#define __NR_getppid 110
+#define __NR_getpgrp 111
+#define __NR_setsid 112
+#define __NR_setreuid 113
+#define __NR_setregid 114
+#define __NR_getgroups 115
+#define __NR_setgroups 116
+#define __NR_setresuid 117
+#define __NR_getresuid 118
+#define __NR_setresgid 119
+#define __NR_getresgid 120
+#define __NR_getpgid 121
+#define __NR_setfsuid 122
+#define __NR_setfsgid 123
+#define __NR_getsid 124
+#define __NR_capget 125
+#define __NR_capset 126
+#define __NR_rt_sigpending 127
+#define __NR_rt_sigtimedwait 128
+#define __NR_rt_sigqueueinfo 129
+#define __NR_rt_sigsuspend 130
+#define __NR_sigaltstack 131
+#define __NR_utime 132
+#define __NR_mknod 133
+#define __NR_uselib 134
+#define __NR_personality 135
+#define __NR_ustat 136
+#define __NR_statfs 137
+#define __NR_fstatfs 138
+#define __NR_sysfs 139
+#define __NR_getpriority 140
+#define __NR_setpriority 141
+#define __NR_sched_setparam 142
+#define __NR_sched_getparam 143
+#define __NR_sched_setscheduler 144
+#define __NR_sched_getscheduler 145
+#define __NR_sched_get_priority_max 146
+#define __NR_sched_get_priority_min 147
+#define __NR_sched_rr_get_interval 148
+#define __NR_mlock 149
+#define __NR_munlock 150
+#define __NR_mlockall 151
+#define __NR_munlockall 152
+#define __NR_vhangup 153
+#define __NR_modify_ldt 154
+#define __NR_pivot_root 155
+#define __NR__sysctl 156
+#define __NR_prctl 157
+#define __NR_arch_prctl 158
+#define __NR_adjtimex 159
+#define __NR_setrlimit 160
+#define __NR_chroot 161
+#define __NR_sync 162
+#define __NR_acct 163
+#define __NR_settimeofday 164
+#define __NR_mount 165
+#define __NR_umount2 166
+#define __NR_swapon 167
+#define __NR_swapoff 168
+#define __NR_reboot 169
+#define __NR_sethostname 170
+#define __NR_setdomainname 171
+#define __NR_iopl 172
+#define __NR_ioperm 173
+#define __NR_create_module 174
+#define __NR_init_module 175
+#define __NR_delete_module 176
+#define __NR_get_kernel_syms 177
+#define __NR_query_module 178
+#define __NR_quotactl 179
+#define __NR_nfsservctl 180
+#define __NR_getpmsg 181
+#define __NR_putpmsg 182
+#define __NR_afs_syscall 183
+#define __NR_tuxcall 184
+#define __NR_security 185
+#define __NR_gettid 186
+#define __NR_readahead 187
+#define __NR_setxattr 188
+#define __NR_lsetxattr 189
+#define __NR_fsetxattr 190
+#define __NR_getxattr 191
+#define __NR_lgetxattr 192
+#define __NR_fgetxattr 193
+#define __NR_listxattr 194
+#define __NR_llistxattr 195
+#define __NR_flistxattr 196
+#define __NR_removexattr 197
+#define __NR_lremovexattr 198
+#define __NR_fremovexattr 199
+#define __NR_tkill 200
+#define __NR_time 201
+#define __NR_futex 202
+#define __NR_sched_setaffinity 203
+#define __NR_sched_getaffinity 204
+#define __NR_set_thread_area 205
+#define __NR_io_setup 206
+#define __NR_io_destroy 207
+#define __NR_io_getevents 208
+#define __NR_io_submit 209
+#define __NR_io_cancel 210
+#define __NR_get_thread_area 211
+#define __NR_lookup_dcookie 212
+#define __NR_epoll_create 213
+#define __NR_epoll_ctl_old 214
+#define __NR_epoll_wait_old 215
+#define __NR_remap_file_pages 216
+#define __NR_getdents64 217
+#define __NR_set_tid_address 218
+#define __NR_restart_syscall 219
+#define __NR_semtimedop 220
+#define __NR_fadvise64 221
+#define __NR_timer_create 222
+#define __NR_timer_settime 223
+#define __NR_timer_gettime 224
+#define __NR_timer_getoverrun 225
+#define __NR_timer_delete 226
+#define __NR_clock_settime 227
+#define __NR_clock_gettime 228
+#define __NR_clock_getres 229
+#define __NR_clock_nanosleep 230
+#define __NR_exit_group 231
+#define __NR_epoll_wait 232
+#define __NR_epoll_ctl 233
+#define __NR_tgkill 234
+#define __NR_utimes 235
+#define __NR_vserver 236
+#define __NR_mbind 237
+#define __NR_set_mempolicy 238
+#define __NR_get_mempolicy 239
+#define __NR_mq_open 240
+#define __NR_mq_unlink 241
+#define __NR_mq_timedsend 242
+#define __NR_mq_timedreceive 243
+#define __NR_mq_notify 244
+#define __NR_mq_getsetattr 245
+#define __NR_kexec_load 246
+#define __NR_waitid 247
+#define __NR_add_key 248
+#define __NR_request_key 249
+#define __NR_keyctl 250
+#define __NR_ioprio_set 251
+#define __NR_ioprio_get 252
+#define __NR_inotify_init 253
+#define __NR_inotify_add_watch 254
+#define __NR_inotify_rm_watch 255
+#define __NR_migrate_pages 256
+#define __NR_openat 257
+#define __NR_mkdirat 258
+#define __NR_mknodat 259
+#define __NR_fchownat 260
+#define __NR_futimesat 261
+#define __NR_newfstatat 262
+#define __NR_unlinkat 263
+#define __NR_renameat 264
+#define __NR_linkat 265
+#define __NR_symlinkat 266
+#define __NR_readlinkat 267
+#define __NR_fchmodat 268
+#define __NR_faccessat 269
+#define __NR_pselect6 270
+#define __NR_ppoll 271
+#define __NR_unshare 272
+#define __NR_set_robust_list 273
+#define __NR_get_robust_list 274
+#define __NR_splice 275
+#define __NR_tee 276
+#define __NR_sync_file_range 277
+#define __NR_vmsplice 278
+#define __NR_move_pages 279
+#define __NR_utimensat 280
+#define __NR_epoll_pwait 281
+#define __NR_signalfd 282
+#define __NR_timerfd_create 283
+#define __NR_eventfd 284
+#define __NR_fallocate 285
+#define __NR_timerfd_settime 286
+#define __NR_timerfd_gettime 287
+#define __NR_accept4 288
+#define __NR_signalfd4 289
+#define __NR_eventfd2 290
+#define __NR_epoll_create1 291
+#define __NR_dup3 292
+#define __NR_pipe2 293
+#define __NR_inotify_init1 294
+#define __NR_preadv 295
+#define __NR_pwritev 296
+#define __NR_rt_tgsigqueueinfo 297
+#define __NR_perf_event_open 298
+#define __NR_recvmmsg 299
+#define __NR_fanotify_init 300
+#define __NR_fanotify_mark 301
+#define __NR_prlimit64 302
+#define __NR_name_to_handle_at 303
+#define __NR_open_by_handle_at 304
+#define __NR_clock_adjtime 305
+#define __NR_syncfs 306
+#define __NR_sendmmsg 307
+#define __NR_setns 308
+#define __NR_getcpu 309
+#define __NR_process_vm_readv 310
+#define __NR_process_vm_writev 311
+#define __NR_kcmp 312
+#define __NR_finit_module 313
+#define __NR_sched_setattr 314
+#define __NR_sched_getattr 315
+#define __NR_renameat2 316
+#define __NR_seccomp 317
+#define __NR_getrandom 318
+#define __NR_memfd_create 319
+#define __NR_kexec_file_load 320
+#define __NR_bpf 321
+#define __NR_execveat 322
+#define __NR_userfaultfd 323
+#define __NR_membarrier 324
+#define __NR_mlock2 325
+#define __NR_copy_file_range 326
+#define __NR_preadv2 327
+#define __NR_pwritev2 328
+#define __NR_pkey_mprotect 329
+#define __NR_pkey_alloc 330
+#define __NR_pkey_free 331
+#define __NR_statx 332
+#define __NR_io_pgetevents 333
+#define __NR_rseq 334
+#define __NR_pidfd_send_signal 424
+#define __NR_io_uring_setup 425
+#define __NR_io_uring_enter 426
+#define __NR_io_uring_register 427
+#define __NR_open_tree 428
+#define __NR_move_mount 429
+#define __NR_fsopen 430
+#define __NR_fsconfig 431
+#define __NR_fsmount 432
+#define __NR_fspick 433
+#define __NR_pidfd_open 434
+#define __NR_clone3 435
+#define __NR_close_range 436
+#define __NR_openat2 437
+#define __NR_pidfd_getfd 438
+#define __NR_faccessat2 439
+#define __NR_process_madvise 440
+#define __NR_epoll_pwait2 441
+#define __NR_mount_setattr 442
+#define __NR_quotactl_fd 443
+#define __NR_landlock_create_ruleset 444
+#define __NR_landlock_add_rule 445
+#define __NR_landlock_restrict_self 446
+#define __NR_memfd_secret 447
+#define __NR_process_mrelease 448
+#define __NR_futex_waitv 449
+#endif
diff --git a/x86_64-linux-musl/include/asm/unistd_x32.h b/x86_64-linux-musl/include/asm/unistd_x32.h
new file mode 100644
index 0000000..b7abf12
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/unistd_x32.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_ASM_UNISTD_X32_H
+#define _UAPI_ASM_UNISTD_X32_H
+#define __NR_read (__X32_SYSCALL_BIT + 0)
+#define __NR_write (__X32_SYSCALL_BIT + 1)
+#define __NR_open (__X32_SYSCALL_BIT + 2)
+#define __NR_close (__X32_SYSCALL_BIT + 3)
+#define __NR_stat (__X32_SYSCALL_BIT + 4)
+#define __NR_fstat (__X32_SYSCALL_BIT + 5)
+#define __NR_lstat (__X32_SYSCALL_BIT + 6)
+#define __NR_poll (__X32_SYSCALL_BIT + 7)
+#define __NR_lseek (__X32_SYSCALL_BIT + 8)
+#define __NR_mmap (__X32_SYSCALL_BIT + 9)
+#define __NR_mprotect (__X32_SYSCALL_BIT + 10)
+#define __NR_munmap (__X32_SYSCALL_BIT + 11)
+#define __NR_brk (__X32_SYSCALL_BIT + 12)
+#define __NR_rt_sigprocmask (__X32_SYSCALL_BIT + 14)
+#define __NR_pread64 (__X32_SYSCALL_BIT + 17)
+#define __NR_pwrite64 (__X32_SYSCALL_BIT + 18)
+#define __NR_access (__X32_SYSCALL_BIT + 21)
+#define __NR_pipe (__X32_SYSCALL_BIT + 22)
+#define __NR_select (__X32_SYSCALL_BIT + 23)
+#define __NR_sched_yield (__X32_SYSCALL_BIT + 24)
+#define __NR_mremap (__X32_SYSCALL_BIT + 25)
+#define __NR_msync (__X32_SYSCALL_BIT + 26)
+#define __NR_mincore (__X32_SYSCALL_BIT + 27)
+#define __NR_madvise (__X32_SYSCALL_BIT + 28)
+#define __NR_shmget (__X32_SYSCALL_BIT + 29)
+#define __NR_shmat (__X32_SYSCALL_BIT + 30)
+#define __NR_shmctl (__X32_SYSCALL_BIT + 31)
+#define __NR_dup (__X32_SYSCALL_BIT + 32)
+#define __NR_dup2 (__X32_SYSCALL_BIT + 33)
+#define __NR_pause (__X32_SYSCALL_BIT + 34)
+#define __NR_nanosleep (__X32_SYSCALL_BIT + 35)
+#define __NR_getitimer (__X32_SYSCALL_BIT + 36)
+#define __NR_alarm (__X32_SYSCALL_BIT + 37)
+#define __NR_setitimer (__X32_SYSCALL_BIT + 38)
+#define __NR_getpid (__X32_SYSCALL_BIT + 39)
+#define __NR_sendfile (__X32_SYSCALL_BIT + 40)
+#define __NR_socket (__X32_SYSCALL_BIT + 41)
+#define __NR_connect (__X32_SYSCALL_BIT + 42)
+#define __NR_accept (__X32_SYSCALL_BIT + 43)
+#define __NR_sendto (__X32_SYSCALL_BIT + 44)
+#define __NR_shutdown (__X32_SYSCALL_BIT + 48)
+#define __NR_bind (__X32_SYSCALL_BIT + 49)
+#define __NR_listen (__X32_SYSCALL_BIT + 50)
+#define __NR_getsockname (__X32_SYSCALL_BIT + 51)
+#define __NR_getpeername (__X32_SYSCALL_BIT + 52)
+#define __NR_socketpair (__X32_SYSCALL_BIT + 53)
+#define __NR_clone (__X32_SYSCALL_BIT + 56)
+#define __NR_fork (__X32_SYSCALL_BIT + 57)
+#define __NR_vfork (__X32_SYSCALL_BIT + 58)
+#define __NR_exit (__X32_SYSCALL_BIT + 60)
+#define __NR_wait4 (__X32_SYSCALL_BIT + 61)
+#define __NR_kill (__X32_SYSCALL_BIT + 62)
+#define __NR_uname (__X32_SYSCALL_BIT + 63)
+#define __NR_semget (__X32_SYSCALL_BIT + 64)
+#define __NR_semop (__X32_SYSCALL_BIT + 65)
+#define __NR_semctl (__X32_SYSCALL_BIT + 66)
+#define __NR_shmdt (__X32_SYSCALL_BIT + 67)
+#define __NR_msgget (__X32_SYSCALL_BIT + 68)
+#define __NR_msgsnd (__X32_SYSCALL_BIT + 69)
+#define __NR_msgrcv (__X32_SYSCALL_BIT + 70)
+#define __NR_msgctl (__X32_SYSCALL_BIT + 71)
+#define __NR_fcntl (__X32_SYSCALL_BIT + 72)
+#define __NR_flock (__X32_SYSCALL_BIT + 73)
+#define __NR_fsync (__X32_SYSCALL_BIT + 74)
+#define __NR_fdatasync (__X32_SYSCALL_BIT + 75)
+#define __NR_truncate (__X32_SYSCALL_BIT + 76)
+#define __NR_ftruncate (__X32_SYSCALL_BIT + 77)
+#define __NR_getdents (__X32_SYSCALL_BIT + 78)
+#define __NR_getcwd (__X32_SYSCALL_BIT + 79)
+#define __NR_chdir (__X32_SYSCALL_BIT + 80)
+#define __NR_fchdir (__X32_SYSCALL_BIT + 81)
+#define __NR_rename (__X32_SYSCALL_BIT + 82)
+#define __NR_mkdir (__X32_SYSCALL_BIT + 83)
+#define __NR_rmdir (__X32_SYSCALL_BIT + 84)
+#define __NR_creat (__X32_SYSCALL_BIT + 85)
+#define __NR_link (__X32_SYSCALL_BIT + 86)
+#define __NR_unlink (__X32_SYSCALL_BIT + 87)
+#define __NR_symlink (__X32_SYSCALL_BIT + 88)
+#define __NR_readlink (__X32_SYSCALL_BIT + 89)
+#define __NR_chmod (__X32_SYSCALL_BIT + 90)
+#define __NR_fchmod (__X32_SYSCALL_BIT + 91)
+#define __NR_chown (__X32_SYSCALL_BIT + 92)
+#define __NR_fchown (__X32_SYSCALL_BIT + 93)
+#define __NR_lchown (__X32_SYSCALL_BIT + 94)
+#define __NR_umask (__X32_SYSCALL_BIT + 95)
+#define __NR_gettimeofday (__X32_SYSCALL_BIT + 96)
+#define __NR_getrlimit (__X32_SYSCALL_BIT + 97)
+#define __NR_getrusage (__X32_SYSCALL_BIT + 98)
+#define __NR_sysinfo (__X32_SYSCALL_BIT + 99)
+#define __NR_times (__X32_SYSCALL_BIT + 100)
+#define __NR_getuid (__X32_SYSCALL_BIT + 102)
+#define __NR_syslog (__X32_SYSCALL_BIT + 103)
+#define __NR_getgid (__X32_SYSCALL_BIT + 104)
+#define __NR_setuid (__X32_SYSCALL_BIT + 105)
+#define __NR_setgid (__X32_SYSCALL_BIT + 106)
+#define __NR_geteuid (__X32_SYSCALL_BIT + 107)
+#define __NR_getegid (__X32_SYSCALL_BIT + 108)
+#define __NR_setpgid (__X32_SYSCALL_BIT + 109)
+#define __NR_getppid (__X32_SYSCALL_BIT + 110)
+#define __NR_getpgrp (__X32_SYSCALL_BIT + 111)
+#define __NR_setsid (__X32_SYSCALL_BIT + 112)
+#define __NR_setreuid (__X32_SYSCALL_BIT + 113)
+#define __NR_setregid (__X32_SYSCALL_BIT + 114)
+#define __NR_getgroups (__X32_SYSCALL_BIT + 115)
+#define __NR_setgroups (__X32_SYSCALL_BIT + 116)
+#define __NR_setresuid (__X32_SYSCALL_BIT + 117)
+#define __NR_getresuid (__X32_SYSCALL_BIT + 118)
+#define __NR_setresgid (__X32_SYSCALL_BIT + 119)
+#define __NR_getresgid (__X32_SYSCALL_BIT + 120)
+#define __NR_getpgid (__X32_SYSCALL_BIT + 121)
+#define __NR_setfsuid (__X32_SYSCALL_BIT + 122)
+#define __NR_setfsgid (__X32_SYSCALL_BIT + 123)
+#define __NR_getsid (__X32_SYSCALL_BIT + 124)
+#define __NR_capget (__X32_SYSCALL_BIT + 125)
+#define __NR_capset (__X32_SYSCALL_BIT + 126)
+#define __NR_rt_sigsuspend (__X32_SYSCALL_BIT + 130)
+#define __NR_utime (__X32_SYSCALL_BIT + 132)
+#define __NR_mknod (__X32_SYSCALL_BIT + 133)
+#define __NR_personality (__X32_SYSCALL_BIT + 135)
+#define __NR_ustat (__X32_SYSCALL_BIT + 136)
+#define __NR_statfs (__X32_SYSCALL_BIT + 137)
+#define __NR_fstatfs (__X32_SYSCALL_BIT + 138)
+#define __NR_sysfs (__X32_SYSCALL_BIT + 139)
+#define __NR_getpriority (__X32_SYSCALL_BIT + 140)
+#define __NR_setpriority (__X32_SYSCALL_BIT + 141)
+#define __NR_sched_setparam (__X32_SYSCALL_BIT + 142)
+#define __NR_sched_getparam (__X32_SYSCALL_BIT + 143)
+#define __NR_sched_setscheduler (__X32_SYSCALL_BIT + 144)
+#define __NR_sched_getscheduler (__X32_SYSCALL_BIT + 145)
+#define __NR_sched_get_priority_max (__X32_SYSCALL_BIT + 146)
+#define __NR_sched_get_priority_min (__X32_SYSCALL_BIT + 147)
+#define __NR_sched_rr_get_interval (__X32_SYSCALL_BIT + 148)
+#define __NR_mlock (__X32_SYSCALL_BIT + 149)
+#define __NR_munlock (__X32_SYSCALL_BIT + 150)
+#define __NR_mlockall (__X32_SYSCALL_BIT + 151)
+#define __NR_munlockall (__X32_SYSCALL_BIT + 152)
+#define __NR_vhangup (__X32_SYSCALL_BIT + 153)
+#define __NR_modify_ldt (__X32_SYSCALL_BIT + 154)
+#define __NR_pivot_root (__X32_SYSCALL_BIT + 155)
+#define __NR_prctl (__X32_SYSCALL_BIT + 157)
+#define __NR_arch_prctl (__X32_SYSCALL_BIT + 158)
+#define __NR_adjtimex (__X32_SYSCALL_BIT + 159)
+#define __NR_setrlimit (__X32_SYSCALL_BIT + 160)
+#define __NR_chroot (__X32_SYSCALL_BIT + 161)
+#define __NR_sync (__X32_SYSCALL_BIT + 162)
+#define __NR_acct (__X32_SYSCALL_BIT + 163)
+#define __NR_settimeofday (__X32_SYSCALL_BIT + 164)
+#define __NR_mount (__X32_SYSCALL_BIT + 165)
+#define __NR_umount2 (__X32_SYSCALL_BIT + 166)
+#define __NR_swapon (__X32_SYSCALL_BIT + 167)
+#define __NR_swapoff (__X32_SYSCALL_BIT + 168)
+#define __NR_reboot (__X32_SYSCALL_BIT + 169)
+#define __NR_sethostname (__X32_SYSCALL_BIT + 170)
+#define __NR_setdomainname (__X32_SYSCALL_BIT + 171)
+#define __NR_iopl (__X32_SYSCALL_BIT + 172)
+#define __NR_ioperm (__X32_SYSCALL_BIT + 173)
+#define __NR_init_module (__X32_SYSCALL_BIT + 175)
+#define __NR_delete_module (__X32_SYSCALL_BIT + 176)
+#define __NR_quotactl (__X32_SYSCALL_BIT + 179)
+#define __NR_getpmsg (__X32_SYSCALL_BIT + 181)
+#define __NR_putpmsg (__X32_SYSCALL_BIT + 182)
+#define __NR_afs_syscall (__X32_SYSCALL_BIT + 183)
+#define __NR_tuxcall (__X32_SYSCALL_BIT + 184)
+#define __NR_security (__X32_SYSCALL_BIT + 185)
+#define __NR_gettid (__X32_SYSCALL_BIT + 186)
+#define __NR_readahead (__X32_SYSCALL_BIT + 187)
+#define __NR_setxattr (__X32_SYSCALL_BIT + 188)
+#define __NR_lsetxattr (__X32_SYSCALL_BIT + 189)
+#define __NR_fsetxattr (__X32_SYSCALL_BIT + 190)
+#define __NR_getxattr (__X32_SYSCALL_BIT + 191)
+#define __NR_lgetxattr (__X32_SYSCALL_BIT + 192)
+#define __NR_fgetxattr (__X32_SYSCALL_BIT + 193)
+#define __NR_listxattr (__X32_SYSCALL_BIT + 194)
+#define __NR_llistxattr (__X32_SYSCALL_BIT + 195)
+#define __NR_flistxattr (__X32_SYSCALL_BIT + 196)
+#define __NR_removexattr (__X32_SYSCALL_BIT + 197)
+#define __NR_lremovexattr (__X32_SYSCALL_BIT + 198)
+#define __NR_fremovexattr (__X32_SYSCALL_BIT + 199)
+#define __NR_tkill (__X32_SYSCALL_BIT + 200)
+#define __NR_time (__X32_SYSCALL_BIT + 201)
+#define __NR_futex (__X32_SYSCALL_BIT + 202)
+#define __NR_sched_setaffinity (__X32_SYSCALL_BIT + 203)
+#define __NR_sched_getaffinity (__X32_SYSCALL_BIT + 204)
+#define __NR_io_destroy (__X32_SYSCALL_BIT + 207)
+#define __NR_io_getevents (__X32_SYSCALL_BIT + 208)
+#define __NR_io_cancel (__X32_SYSCALL_BIT + 210)
+#define __NR_lookup_dcookie (__X32_SYSCALL_BIT + 212)
+#define __NR_epoll_create (__X32_SYSCALL_BIT + 213)
+#define __NR_remap_file_pages (__X32_SYSCALL_BIT + 216)
+#define __NR_getdents64 (__X32_SYSCALL_BIT + 217)
+#define __NR_set_tid_address (__X32_SYSCALL_BIT + 218)
+#define __NR_restart_syscall (__X32_SYSCALL_BIT + 219)
+#define __NR_semtimedop (__X32_SYSCALL_BIT + 220)
+#define __NR_fadvise64 (__X32_SYSCALL_BIT + 221)
+#define __NR_timer_settime (__X32_SYSCALL_BIT + 223)
+#define __NR_timer_gettime (__X32_SYSCALL_BIT + 224)
+#define __NR_timer_getoverrun (__X32_SYSCALL_BIT + 225)
+#define __NR_timer_delete (__X32_SYSCALL_BIT + 226)
+#define __NR_clock_settime (__X32_SYSCALL_BIT + 227)
+#define __NR_clock_gettime (__X32_SYSCALL_BIT + 228)
+#define __NR_clock_getres (__X32_SYSCALL_BIT + 229)
+#define __NR_clock_nanosleep (__X32_SYSCALL_BIT + 230)
+#define __NR_exit_group (__X32_SYSCALL_BIT + 231)
+#define __NR_epoll_wait (__X32_SYSCALL_BIT + 232)
+#define __NR_epoll_ctl (__X32_SYSCALL_BIT + 233)
+#define __NR_tgkill (__X32_SYSCALL_BIT + 234)
+#define __NR_utimes (__X32_SYSCALL_BIT + 235)
+#define __NR_mbind (__X32_SYSCALL_BIT + 237)
+#define __NR_set_mempolicy (__X32_SYSCALL_BIT + 238)
+#define __NR_get_mempolicy (__X32_SYSCALL_BIT + 239)
+#define __NR_mq_open (__X32_SYSCALL_BIT + 240)
+#define __NR_mq_unlink (__X32_SYSCALL_BIT + 241)
+#define __NR_mq_timedsend (__X32_SYSCALL_BIT + 242)
+#define __NR_mq_timedreceive (__X32_SYSCALL_BIT + 243)
+#define __NR_mq_getsetattr (__X32_SYSCALL_BIT + 245)
+#define __NR_add_key (__X32_SYSCALL_BIT + 248)
+#define __NR_request_key (__X32_SYSCALL_BIT + 249)
+#define __NR_keyctl (__X32_SYSCALL_BIT + 250)
+#define __NR_ioprio_set (__X32_SYSCALL_BIT + 251)
+#define __NR_ioprio_get (__X32_SYSCALL_BIT + 252)
+#define __NR_inotify_init (__X32_SYSCALL_BIT + 253)
+#define __NR_inotify_add_watch (__X32_SYSCALL_BIT + 254)
+#define __NR_inotify_rm_watch (__X32_SYSCALL_BIT + 255)
+#define __NR_migrate_pages (__X32_SYSCALL_BIT + 256)
+#define __NR_openat (__X32_SYSCALL_BIT + 257)
+#define __NR_mkdirat (__X32_SYSCALL_BIT + 258)
+#define __NR_mknodat (__X32_SYSCALL_BIT + 259)
+#define __NR_fchownat (__X32_SYSCALL_BIT + 260)
+#define __NR_futimesat (__X32_SYSCALL_BIT + 261)
+#define __NR_newfstatat (__X32_SYSCALL_BIT + 262)
+#define __NR_unlinkat (__X32_SYSCALL_BIT + 263)
+#define __NR_renameat (__X32_SYSCALL_BIT + 264)
+#define __NR_linkat (__X32_SYSCALL_BIT + 265)
+#define __NR_symlinkat (__X32_SYSCALL_BIT + 266)
+#define __NR_readlinkat (__X32_SYSCALL_BIT + 267)
+#define __NR_fchmodat (__X32_SYSCALL_BIT + 268)
+#define __NR_faccessat (__X32_SYSCALL_BIT + 269)
+#define __NR_pselect6 (__X32_SYSCALL_BIT + 270)
+#define __NR_ppoll (__X32_SYSCALL_BIT + 271)
+#define __NR_unshare (__X32_SYSCALL_BIT + 272)
+#define __NR_splice (__X32_SYSCALL_BIT + 275)
+#define __NR_tee (__X32_SYSCALL_BIT + 276)
+#define __NR_sync_file_range (__X32_SYSCALL_BIT + 277)
+#define __NR_utimensat (__X32_SYSCALL_BIT + 280)
+#define __NR_epoll_pwait (__X32_SYSCALL_BIT + 281)
+#define __NR_signalfd (__X32_SYSCALL_BIT + 282)
+#define __NR_timerfd_create (__X32_SYSCALL_BIT + 283)
+#define __NR_eventfd (__X32_SYSCALL_BIT + 284)
+#define __NR_fallocate (__X32_SYSCALL_BIT + 285)
+#define __NR_timerfd_settime (__X32_SYSCALL_BIT + 286)
+#define __NR_timerfd_gettime (__X32_SYSCALL_BIT + 287)
+#define __NR_accept4 (__X32_SYSCALL_BIT + 288)
+#define __NR_signalfd4 (__X32_SYSCALL_BIT + 289)
+#define __NR_eventfd2 (__X32_SYSCALL_BIT + 290)
+#define __NR_epoll_create1 (__X32_SYSCALL_BIT + 291)
+#define __NR_dup3 (__X32_SYSCALL_BIT + 292)
+#define __NR_pipe2 (__X32_SYSCALL_BIT + 293)
+#define __NR_inotify_init1 (__X32_SYSCALL_BIT + 294)
+#define __NR_perf_event_open (__X32_SYSCALL_BIT + 298)
+#define __NR_fanotify_init (__X32_SYSCALL_BIT + 300)
+#define __NR_fanotify_mark (__X32_SYSCALL_BIT + 301)
+#define __NR_prlimit64 (__X32_SYSCALL_BIT + 302)
+#define __NR_name_to_handle_at (__X32_SYSCALL_BIT + 303)
+#define __NR_open_by_handle_at (__X32_SYSCALL_BIT + 304)
+#define __NR_clock_adjtime (__X32_SYSCALL_BIT + 305)
+#define __NR_syncfs (__X32_SYSCALL_BIT + 306)
+#define __NR_setns (__X32_SYSCALL_BIT + 308)
+#define __NR_getcpu (__X32_SYSCALL_BIT + 309)
+#define __NR_kcmp (__X32_SYSCALL_BIT + 312)
+#define __NR_finit_module (__X32_SYSCALL_BIT + 313)
+#define __NR_sched_setattr (__X32_SYSCALL_BIT + 314)
+#define __NR_sched_getattr (__X32_SYSCALL_BIT + 315)
+#define __NR_renameat2 (__X32_SYSCALL_BIT + 316)
+#define __NR_seccomp (__X32_SYSCALL_BIT + 317)
+#define __NR_getrandom (__X32_SYSCALL_BIT + 318)
+#define __NR_memfd_create (__X32_SYSCALL_BIT + 319)
+#define __NR_kexec_file_load (__X32_SYSCALL_BIT + 320)
+#define __NR_bpf (__X32_SYSCALL_BIT + 321)
+#define __NR_userfaultfd (__X32_SYSCALL_BIT + 323)
+#define __NR_membarrier (__X32_SYSCALL_BIT + 324)
+#define __NR_mlock2 (__X32_SYSCALL_BIT + 325)
+#define __NR_copy_file_range (__X32_SYSCALL_BIT + 326)
+#define __NR_pkey_mprotect (__X32_SYSCALL_BIT + 329)
+#define __NR_pkey_alloc (__X32_SYSCALL_BIT + 330)
+#define __NR_pkey_free (__X32_SYSCALL_BIT + 331)
+#define __NR_statx (__X32_SYSCALL_BIT + 332)
+#define __NR_io_pgetevents (__X32_SYSCALL_BIT + 333)
+#define __NR_rseq (__X32_SYSCALL_BIT + 334)
+#define __NR_pidfd_send_signal (__X32_SYSCALL_BIT + 424)
+#define __NR_io_uring_setup (__X32_SYSCALL_BIT + 425)
+#define __NR_io_uring_enter (__X32_SYSCALL_BIT + 426)
+#define __NR_io_uring_register (__X32_SYSCALL_BIT + 427)
+#define __NR_open_tree (__X32_SYSCALL_BIT + 428)
+#define __NR_move_mount (__X32_SYSCALL_BIT + 429)
+#define __NR_fsopen (__X32_SYSCALL_BIT + 430)
+#define __NR_fsconfig (__X32_SYSCALL_BIT + 431)
+#define __NR_fsmount (__X32_SYSCALL_BIT + 432)
+#define __NR_fspick (__X32_SYSCALL_BIT + 433)
+#define __NR_pidfd_open (__X32_SYSCALL_BIT + 434)
+#define __NR_clone3 (__X32_SYSCALL_BIT + 435)
+#define __NR_close_range (__X32_SYSCALL_BIT + 436)
+#define __NR_openat2 (__X32_SYSCALL_BIT + 437)
+#define __NR_pidfd_getfd (__X32_SYSCALL_BIT + 438)
+#define __NR_faccessat2 (__X32_SYSCALL_BIT + 439)
+#define __NR_process_madvise (__X32_SYSCALL_BIT + 440)
+#define __NR_epoll_pwait2 (__X32_SYSCALL_BIT + 441)
+#define __NR_mount_setattr (__X32_SYSCALL_BIT + 442)
+#define __NR_quotactl_fd (__X32_SYSCALL_BIT + 443)
+#define __NR_landlock_create_ruleset (__X32_SYSCALL_BIT + 444)
+#define __NR_landlock_add_rule (__X32_SYSCALL_BIT + 445)
+#define __NR_landlock_restrict_self (__X32_SYSCALL_BIT + 446)
+#define __NR_memfd_secret (__X32_SYSCALL_BIT + 447)
+#define __NR_process_mrelease (__X32_SYSCALL_BIT + 448)
+#define __NR_futex_waitv (__X32_SYSCALL_BIT + 449)
+#define __NR_rt_sigaction (__X32_SYSCALL_BIT + 512)
+#define __NR_rt_sigreturn (__X32_SYSCALL_BIT + 513)
+#define __NR_ioctl (__X32_SYSCALL_BIT + 514)
+#define __NR_readv (__X32_SYSCALL_BIT + 515)
+#define __NR_writev (__X32_SYSCALL_BIT + 516)
+#define __NR_recvfrom (__X32_SYSCALL_BIT + 517)
+#define __NR_sendmsg (__X32_SYSCALL_BIT + 518)
+#define __NR_recvmsg (__X32_SYSCALL_BIT + 519)
+#define __NR_execve (__X32_SYSCALL_BIT + 520)
+#define __NR_ptrace (__X32_SYSCALL_BIT + 521)
+#define __NR_rt_sigpending (__X32_SYSCALL_BIT + 522)
+#define __NR_rt_sigtimedwait (__X32_SYSCALL_BIT + 523)
+#define __NR_rt_sigqueueinfo (__X32_SYSCALL_BIT + 524)
+#define __NR_sigaltstack (__X32_SYSCALL_BIT + 525)
+#define __NR_timer_create (__X32_SYSCALL_BIT + 526)
+#define __NR_mq_notify (__X32_SYSCALL_BIT + 527)
+#define __NR_kexec_load (__X32_SYSCALL_BIT + 528)
+#define __NR_waitid (__X32_SYSCALL_BIT + 529)
+#define __NR_set_robust_list (__X32_SYSCALL_BIT + 530)
+#define __NR_get_robust_list (__X32_SYSCALL_BIT + 531)
+#define __NR_vmsplice (__X32_SYSCALL_BIT + 532)
+#define __NR_move_pages (__X32_SYSCALL_BIT + 533)
+#define __NR_preadv (__X32_SYSCALL_BIT + 534)
+#define __NR_pwritev (__X32_SYSCALL_BIT + 535)
+#define __NR_rt_tgsigqueueinfo (__X32_SYSCALL_BIT + 536)
+#define __NR_recvmmsg (__X32_SYSCALL_BIT + 537)
+#define __NR_sendmmsg (__X32_SYSCALL_BIT + 538)
+#define __NR_process_vm_readv (__X32_SYSCALL_BIT + 539)
+#define __NR_process_vm_writev (__X32_SYSCALL_BIT + 540)
+#define __NR_setsockopt (__X32_SYSCALL_BIT + 541)
+#define __NR_getsockopt (__X32_SYSCALL_BIT + 542)
+#define __NR_io_setup (__X32_SYSCALL_BIT + 543)
+#define __NR_io_submit (__X32_SYSCALL_BIT + 544)
+#define __NR_execveat (__X32_SYSCALL_BIT + 545)
+#define __NR_preadv2 (__X32_SYSCALL_BIT + 546)
+#define __NR_pwritev2 (__X32_SYSCALL_BIT + 547)
+#endif
diff --git a/x86_64-linux-musl/include/asm/vm86.h b/x86_64-linux-musl/include/asm/vm86.h
new file mode 100644
index 0000000..7193484
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/vm86.h
@@ -0,0 +1,96 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_X86_VM86_H
+#define _UAPI_ASM_X86_VM86_H
+#include <asm/processor-flags.h>
+#define BIOSSEG 0x0f000
+#define CPU_086 0
+#define CPU_186 1
+#define CPU_286 2
+#define CPU_386 3
+#define CPU_486 4
+#define CPU_586 5
+#define VM86_TYPE(retval) ((retval) & 0xff)
+#define VM86_ARG(retval) ((retval) >> 8)
+#define VM86_SIGNAL 0
+#define VM86_UNKNOWN 1
+#define VM86_INTx 2
+#define VM86_STI 3
+#define VM86_PICRETURN 4
+#define VM86_TRAP 6
+#define VM86_PLUS_INSTALL_CHECK 0
+#define VM86_ENTER 1
+#define VM86_ENTER_NO_BYPASS 2
+#define VM86_REQUEST_IRQ 3
+#define VM86_FREE_IRQ 4
+#define VM86_GET_IRQ_BITS 5
+#define VM86_GET_AND_RESET_IRQ 6
+struct vm86_regs {
+  long ebx;
+  long ecx;
+  long edx;
+  long esi;
+  long edi;
+  long ebp;
+  long eax;
+  long __null_ds;
+  long __null_es;
+  long __null_fs;
+  long __null_gs;
+  long orig_eax;
+  long eip;
+  unsigned short cs, __csh;
+  long eflags;
+  long esp;
+  unsigned short ss, __ssh;
+  unsigned short es, __esh;
+  unsigned short ds, __dsh;
+  unsigned short fs, __fsh;
+  unsigned short gs, __gsh;
+};
+struct revectored_struct {
+  unsigned long __map[8];
+};
+struct vm86_struct {
+  struct vm86_regs regs;
+  unsigned long flags;
+  unsigned long screen_bitmap;
+  unsigned long cpu_type;
+  struct revectored_struct int_revectored;
+  struct revectored_struct int21_revectored;
+};
+#define VM86_SCREEN_BITMAP 0x0001
+struct vm86plus_info_struct {
+  unsigned long force_return_for_pic : 1;
+  unsigned long vm86dbg_active : 1;
+  unsigned long vm86dbg_TFpendig : 1;
+  unsigned long unused : 28;
+  unsigned long is_vm86pus : 1;
+  unsigned char vm86dbg_intxxtab[32];
+};
+struct vm86plus_struct {
+  struct vm86_regs regs;
+  unsigned long flags;
+  unsigned long screen_bitmap;
+  unsigned long cpu_type;
+  struct revectored_struct int_revectored;
+  struct revectored_struct int21_revectored;
+  struct vm86plus_info_struct vm86plus;
+};
+#endif
diff --git a/x86_64-linux-musl/include/asm/vmx.h b/x86_64-linux-musl/include/asm/vmx.h
new file mode 100644
index 0000000..6c07d4c
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/vmx.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 _UAPIVMX_H
+#define _UAPIVMX_H
+#define VMX_EXIT_REASONS_FAILED_VMENTRY 0x80000000
+#define VMX_EXIT_REASONS_SGX_ENCLAVE_MODE 0x08000000
+#define EXIT_REASON_EXCEPTION_NMI 0
+#define EXIT_REASON_EXTERNAL_INTERRUPT 1
+#define EXIT_REASON_TRIPLE_FAULT 2
+#define EXIT_REASON_INIT_SIGNAL 3
+#define EXIT_REASON_SIPI_SIGNAL 4
+#define EXIT_REASON_INTERRUPT_WINDOW 7
+#define EXIT_REASON_NMI_WINDOW 8
+#define EXIT_REASON_TASK_SWITCH 9
+#define EXIT_REASON_CPUID 10
+#define EXIT_REASON_HLT 12
+#define EXIT_REASON_INVD 13
+#define EXIT_REASON_INVLPG 14
+#define EXIT_REASON_RDPMC 15
+#define EXIT_REASON_RDTSC 16
+#define EXIT_REASON_VMCALL 18
+#define EXIT_REASON_VMCLEAR 19
+#define EXIT_REASON_VMLAUNCH 20
+#define EXIT_REASON_VMPTRLD 21
+#define EXIT_REASON_VMPTRST 22
+#define EXIT_REASON_VMREAD 23
+#define EXIT_REASON_VMRESUME 24
+#define EXIT_REASON_VMWRITE 25
+#define EXIT_REASON_VMOFF 26
+#define EXIT_REASON_VMON 27
+#define EXIT_REASON_CR_ACCESS 28
+#define EXIT_REASON_DR_ACCESS 29
+#define EXIT_REASON_IO_INSTRUCTION 30
+#define EXIT_REASON_MSR_READ 31
+#define EXIT_REASON_MSR_WRITE 32
+#define EXIT_REASON_INVALID_STATE 33
+#define EXIT_REASON_MSR_LOAD_FAIL 34
+#define EXIT_REASON_MWAIT_INSTRUCTION 36
+#define EXIT_REASON_MONITOR_TRAP_FLAG 37
+#define EXIT_REASON_MONITOR_INSTRUCTION 39
+#define EXIT_REASON_PAUSE_INSTRUCTION 40
+#define EXIT_REASON_MCE_DURING_VMENTRY 41
+#define EXIT_REASON_TPR_BELOW_THRESHOLD 43
+#define EXIT_REASON_APIC_ACCESS 44
+#define EXIT_REASON_EOI_INDUCED 45
+#define EXIT_REASON_GDTR_IDTR 46
+#define EXIT_REASON_LDTR_TR 47
+#define EXIT_REASON_EPT_VIOLATION 48
+#define EXIT_REASON_EPT_MISCONFIG 49
+#define EXIT_REASON_INVEPT 50
+#define EXIT_REASON_RDTSCP 51
+#define EXIT_REASON_PREEMPTION_TIMER 52
+#define EXIT_REASON_INVVPID 53
+#define EXIT_REASON_WBINVD 54
+#define EXIT_REASON_XSETBV 55
+#define EXIT_REASON_APIC_WRITE 56
+#define EXIT_REASON_RDRAND 57
+#define EXIT_REASON_INVPCID 58
+#define EXIT_REASON_VMFUNC 59
+#define EXIT_REASON_ENCLS 60
+#define EXIT_REASON_RDSEED 61
+#define EXIT_REASON_PML_FULL 62
+#define EXIT_REASON_XSAVES 63
+#define EXIT_REASON_XRSTORS 64
+#define EXIT_REASON_UMWAIT 67
+#define EXIT_REASON_TPAUSE 68
+#define EXIT_REASON_BUS_LOCK 74
+#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_INIT_SIGNAL, "INIT_SIGNAL" }, { EXIT_REASON_SIPI_SIGNAL, "SIPI_SIGNAL" }, { EXIT_REASON_INTERRUPT_WINDOW, "INTERRUPT_WINDOW" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVD, "INVD" }, { EXIT_REASON_INVLPG, "INVLPG" }, { EXIT_REASON_RDPMC, "RDPMC" }, { EXIT_REASON_RDTSC, "RDTSC" }, { EXIT_REASON_VMCALL, "VMCALL" }, { EXIT_REASON_VMCLEAR, "VMCLEAR" }, { EXIT_REASON_VMLAUNCH, "VMLAUNCH" }, { EXIT_REASON_VMPTRLD, "VMPTRLD" }, { EXIT_REASON_VMPTRST, "VMPTRST" }, { EXIT_REASON_VMREAD, "VMREAD" }, { EXIT_REASON_VMRESUME, "VMRESUME" }, { EXIT_REASON_VMWRITE, "VMWRITE" }, { EXIT_REASON_VMOFF, "VMOFF" }, { EXIT_REASON_VMON, "VMON" }, { EXIT_REASON_CR_ACCESS, "CR_ACCESS" }, { EXIT_REASON_DR_ACCESS, "DR_ACCESS" }, { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" }, { EXIT_REASON_MSR_READ, "MSR_READ" }, { EXIT_REASON_MSR_WRITE, "MSR_WRITE" }, { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" }, { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" }, { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" }, { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" }, { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" }, { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_RDTSCP, "RDTSCP" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_XSETBV, "XSETBV" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_RDRAND, "RDRAND" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_VMFUNC, "VMFUNC" }, { EXIT_REASON_ENCLS, "ENCLS" }, { EXIT_REASON_RDSEED, "RDSEED" }, { EXIT_REASON_PML_FULL, "PML_FULL" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }, { EXIT_REASON_UMWAIT, "UMWAIT" }, { EXIT_REASON_TPAUSE, "TPAUSE" }, { EXIT_REASON_BUS_LOCK, "BUS_LOCK" }
+#define VMX_EXIT_REASON_FLAGS { VMX_EXIT_REASONS_FAILED_VMENTRY, "FAILED_VMENTRY" }
+#define VMX_ABORT_SAVE_GUEST_MSR_FAIL 1
+#define VMX_ABORT_LOAD_HOST_PDPTE_FAIL 2
+#define VMX_ABORT_LOAD_HOST_MSR_FAIL 4
+#endif
diff --git a/x86_64-linux-musl/include/asm/vsyscall.h b/x86_64-linux-musl/include/asm/vsyscall.h
new file mode 100644
index 0000000..56abbbc
--- /dev/null
+++ b/x86_64-linux-musl/include/asm/vsyscall.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_ASM_X86_VSYSCALL_H
+#define _UAPI_ASM_X86_VSYSCALL_H
+enum vsyscall_num {
+  __NR_vgettimeofday,
+  __NR_vtime,
+  __NR_vgetcpu,
+};
+#define VSYSCALL_ADDR (- 10UL << 20)
+#endif
diff --git a/x86_64-linux-musl/include/assert.h b/x86_64-linux-musl/include/assert.h
new file mode 100644
index 0000000..d14ec94
--- /dev/null
+++ b/x86_64-linux-musl/include/assert.h
@@ -0,0 +1,23 @@
+#include <features.h>
+
+#undef assert
+
+#ifdef NDEBUG
+#define	assert(x) (void)0
+#else
+#define assert(x) ((void)((x) || (__assert_fail(#x, __FILE__, __LINE__, __func__),0)))
+#endif
+
+#if __STDC_VERSION__ >= 201112L && !defined(__cplusplus)
+#define static_assert _Static_assert
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_Noreturn void __assert_fail (const char *, const char *, int, const char *);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/x86_64-linux-musl/include/bionic/b64.h b/x86_64-linux-musl/include/bionic/b64.h
new file mode 100644
index 0000000..f365bae
--- /dev/null
+++ b/x86_64-linux-musl/include/bionic/b64.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include <sys/cdefs.h>
+#include <sys/types.h>
+
+__BEGIN_DECLS
+
+int b64_ntop(unsigned char const* __src, size_t __src_size, char* __dst, size_t __dst_size);
+int b64_pton(char const* __src, u_char* __dst, size_t __dst_size);
+
+__END_DECLS
diff --git a/x86_64-linux-musl/include/bionic/execinfo.h b/x86_64-linux-musl/include/bionic/execinfo.h
new file mode 100644
index 0000000..347ae92
--- /dev/null
+++ b/x86_64-linux-musl/include/bionic/execinfo.h
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#pragma once
+
+#include <sys/cdefs.h>
+
+/**
+ * @file execinfo.h
+ * @brief Functions to do in process backtracing.
+ */
+
+__BEGIN_DECLS
+
+/**
+ * [backtrace(3)](https://man7.org/linux/man-pages/man3/backtrace.3.html)
+ * Saves a backtrace for the current call in the array pointed to by buffer.
+ * "size" indicates the maximum number of void* pointers that can be set.
+ *
+ * Returns the number of addresses stored in "buffer", which is not greater
+ * than "size". If the return value is equal to "size" then the number of
+ * addresses may have been truncated.
+ *
+ * Available since API level 33.
+ */
+int backtrace(void** buffer, int size) __INTRODUCED_IN(33);
+
+/**
+ * [backtrace_symbols(3)](https://man7.org/linux/man-pages/man3/backtrace_symbols.3.html)
+ * Given an array of void* pointers, translate the addresses into an array
+ * of strings that represent the backtrace.
+ *
+ * Returns a pointer to allocated memory, on error NULL is returned. It is
+ * the responsibility of the caller to free the returned memory.
+ *
+ * Available since API level 33.
+ */
+char** backtrace_symbols(void* const* buffer, int size) __INTRODUCED_IN(33);
+
+/**
+ * [backtrace_symbols_fd(3)](https://man7.org/linux/man-pages/man3/backtrace_symbols_fd.3.html)
+ * Given an array of void* pointers, translate the addresses into an array
+ * of strings that represent the backtrace and write to the file represented
+ * by "fd". The file is written such that one line equals one void* address.
+ *
+ * Available since API level 33.
+ */
+void backtrace_symbols_fd(void* const* buffer, int size, int fd) __INTRODUCED_IN(33);
+
+__END_DECLS
diff --git a/x86_64-linux-musl/include/bits/alltypes.h b/x86_64-linux-musl/include/bits/alltypes.h
new file mode 100644
index 0000000..b5d6f52
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/alltypes.h
@@ -0,0 +1,415 @@
+#define _Addr long
+#define _Int64 long
+#define _Reg long
+
+#define __BYTE_ORDER 1234
+#define __LONG_MAX 0x7fffffffffffffffL
+
+#ifndef __cplusplus
+#if defined(__NEED_wchar_t) && !defined(__DEFINED_wchar_t)
+typedef int wchar_t;
+#define __DEFINED_wchar_t
+#endif
+
+#endif
+
+#if defined(__FLT_EVAL_METHOD__) && __FLT_EVAL_METHOD__ == 2
+#if defined(__NEED_float_t) && !defined(__DEFINED_float_t)
+typedef long double float_t;
+#define __DEFINED_float_t
+#endif
+
+#if defined(__NEED_double_t) && !defined(__DEFINED_double_t)
+typedef long double double_t;
+#define __DEFINED_double_t
+#endif
+
+#else
+#if defined(__NEED_float_t) && !defined(__DEFINED_float_t)
+typedef float float_t;
+#define __DEFINED_float_t
+#endif
+
+#if defined(__NEED_double_t) && !defined(__DEFINED_double_t)
+typedef double double_t;
+#define __DEFINED_double_t
+#endif
+
+#endif
+
+#if defined(__NEED_max_align_t) && !defined(__DEFINED_max_align_t)
+typedef struct { long long __ll; long double __ld; } max_align_t;
+#define __DEFINED_max_align_t
+#endif
+
+#define __LITTLE_ENDIAN 1234
+#define __BIG_ENDIAN 4321
+#define __USE_TIME_BITS64 1
+
+#if defined(__NEED_size_t) && !defined(__DEFINED_size_t)
+typedef unsigned _Addr size_t;
+#define __DEFINED_size_t
+#endif
+
+#if defined(__NEED_uintptr_t) && !defined(__DEFINED_uintptr_t)
+typedef unsigned _Addr uintptr_t;
+#define __DEFINED_uintptr_t
+#endif
+
+#if defined(__NEED_ptrdiff_t) && !defined(__DEFINED_ptrdiff_t)
+typedef _Addr ptrdiff_t;
+#define __DEFINED_ptrdiff_t
+#endif
+
+#if defined(__NEED_ssize_t) && !defined(__DEFINED_ssize_t)
+typedef _Addr ssize_t;
+#define __DEFINED_ssize_t
+#endif
+
+#if defined(__NEED_intptr_t) && !defined(__DEFINED_intptr_t)
+typedef _Addr intptr_t;
+#define __DEFINED_intptr_t
+#endif
+
+#if defined(__NEED_regoff_t) && !defined(__DEFINED_regoff_t)
+typedef _Addr regoff_t;
+#define __DEFINED_regoff_t
+#endif
+
+#if defined(__NEED_register_t) && !defined(__DEFINED_register_t)
+typedef _Reg register_t;
+#define __DEFINED_register_t
+#endif
+
+#if defined(__NEED_time_t) && !defined(__DEFINED_time_t)
+typedef _Int64 time_t;
+#define __DEFINED_time_t
+#endif
+
+#if defined(__NEED_suseconds_t) && !defined(__DEFINED_suseconds_t)
+typedef _Int64 suseconds_t;
+#define __DEFINED_suseconds_t
+#endif
+
+
+#if defined(__NEED_int8_t) && !defined(__DEFINED_int8_t)
+typedef signed char     int8_t;
+#define __DEFINED_int8_t
+#endif
+
+#if defined(__NEED_int16_t) && !defined(__DEFINED_int16_t)
+typedef signed short    int16_t;
+#define __DEFINED_int16_t
+#endif
+
+#if defined(__NEED_int32_t) && !defined(__DEFINED_int32_t)
+typedef signed int      int32_t;
+#define __DEFINED_int32_t
+#endif
+
+#if defined(__NEED_int64_t) && !defined(__DEFINED_int64_t)
+typedef signed _Int64   int64_t;
+#define __DEFINED_int64_t
+#endif
+
+#if defined(__NEED_intmax_t) && !defined(__DEFINED_intmax_t)
+typedef signed _Int64   intmax_t;
+#define __DEFINED_intmax_t
+#endif
+
+#if defined(__NEED_uint8_t) && !defined(__DEFINED_uint8_t)
+typedef unsigned char   uint8_t;
+#define __DEFINED_uint8_t
+#endif
+
+#if defined(__NEED_uint16_t) && !defined(__DEFINED_uint16_t)
+typedef unsigned short  uint16_t;
+#define __DEFINED_uint16_t
+#endif
+
+#if defined(__NEED_uint32_t) && !defined(__DEFINED_uint32_t)
+typedef unsigned int    uint32_t;
+#define __DEFINED_uint32_t
+#endif
+
+#if defined(__NEED_uint64_t) && !defined(__DEFINED_uint64_t)
+typedef unsigned _Int64 uint64_t;
+#define __DEFINED_uint64_t
+#endif
+
+#if defined(__NEED_u_int64_t) && !defined(__DEFINED_u_int64_t)
+typedef unsigned _Int64 u_int64_t;
+#define __DEFINED_u_int64_t
+#endif
+
+#if defined(__NEED_uintmax_t) && !defined(__DEFINED_uintmax_t)
+typedef unsigned _Int64 uintmax_t;
+#define __DEFINED_uintmax_t
+#endif
+
+
+#if defined(__NEED_mode_t) && !defined(__DEFINED_mode_t)
+typedef unsigned mode_t;
+#define __DEFINED_mode_t
+#endif
+
+#if defined(__NEED_nlink_t) && !defined(__DEFINED_nlink_t)
+typedef unsigned _Reg nlink_t;
+#define __DEFINED_nlink_t
+#endif
+
+#if defined(__NEED_off_t) && !defined(__DEFINED_off_t)
+typedef _Int64 off_t;
+#define __DEFINED_off_t
+#endif
+
+#if defined(__NEED_ino_t) && !defined(__DEFINED_ino_t)
+typedef unsigned _Int64 ino_t;
+#define __DEFINED_ino_t
+#endif
+
+#if defined(__NEED_dev_t) && !defined(__DEFINED_dev_t)
+typedef unsigned _Int64 dev_t;
+#define __DEFINED_dev_t
+#endif
+
+#if defined(__NEED_blksize_t) && !defined(__DEFINED_blksize_t)
+typedef long blksize_t;
+#define __DEFINED_blksize_t
+#endif
+
+#if defined(__NEED_blkcnt_t) && !defined(__DEFINED_blkcnt_t)
+typedef _Int64 blkcnt_t;
+#define __DEFINED_blkcnt_t
+#endif
+
+#if defined(__NEED_fsblkcnt_t) && !defined(__DEFINED_fsblkcnt_t)
+typedef unsigned _Int64 fsblkcnt_t;
+#define __DEFINED_fsblkcnt_t
+#endif
+
+#if defined(__NEED_fsfilcnt_t) && !defined(__DEFINED_fsfilcnt_t)
+typedef unsigned _Int64 fsfilcnt_t;
+#define __DEFINED_fsfilcnt_t
+#endif
+
+
+#if defined(__NEED_wint_t) && !defined(__DEFINED_wint_t)
+typedef unsigned wint_t;
+#define __DEFINED_wint_t
+#endif
+
+#if defined(__NEED_wctype_t) && !defined(__DEFINED_wctype_t)
+typedef unsigned long wctype_t;
+#define __DEFINED_wctype_t
+#endif
+
+
+#if defined(__NEED_timer_t) && !defined(__DEFINED_timer_t)
+typedef void * timer_t;
+#define __DEFINED_timer_t
+#endif
+
+#if defined(__NEED_clockid_t) && !defined(__DEFINED_clockid_t)
+typedef int clockid_t;
+#define __DEFINED_clockid_t
+#endif
+
+#if defined(__NEED_clock_t) && !defined(__DEFINED_clock_t)
+typedef long clock_t;
+#define __DEFINED_clock_t
+#endif
+
+#if defined(__NEED_struct_timeval) && !defined(__DEFINED_struct_timeval)
+struct timeval { time_t tv_sec; suseconds_t tv_usec; };
+#define __DEFINED_struct_timeval
+#endif
+
+#if defined(__NEED_struct_timespec) && !defined(__DEFINED_struct_timespec)
+struct timespec { time_t tv_sec; int :8*(sizeof(time_t)-sizeof(long))*(__BYTE_ORDER==4321); long tv_nsec; int :8*(sizeof(time_t)-sizeof(long))*(__BYTE_ORDER!=4321); };
+#define __DEFINED_struct_timespec
+#endif
+
+
+#if defined(__NEED_pid_t) && !defined(__DEFINED_pid_t)
+typedef int pid_t;
+#define __DEFINED_pid_t
+#endif
+
+#if defined(__NEED_id_t) && !defined(__DEFINED_id_t)
+typedef unsigned id_t;
+#define __DEFINED_id_t
+#endif
+
+#if defined(__NEED_uid_t) && !defined(__DEFINED_uid_t)
+typedef unsigned uid_t;
+#define __DEFINED_uid_t
+#endif
+
+#if defined(__NEED_gid_t) && !defined(__DEFINED_gid_t)
+typedef unsigned gid_t;
+#define __DEFINED_gid_t
+#endif
+
+#if defined(__NEED_key_t) && !defined(__DEFINED_key_t)
+typedef int key_t;
+#define __DEFINED_key_t
+#endif
+
+#if defined(__NEED_useconds_t) && !defined(__DEFINED_useconds_t)
+typedef unsigned useconds_t;
+#define __DEFINED_useconds_t
+#endif
+
+
+#ifdef __cplusplus
+#if defined(__NEED_pthread_t) && !defined(__DEFINED_pthread_t)
+typedef unsigned long pthread_t;
+#define __DEFINED_pthread_t
+#endif
+
+#else
+#if defined(__NEED_pthread_t) && !defined(__DEFINED_pthread_t)
+typedef struct __pthread * pthread_t;
+#define __DEFINED_pthread_t
+#endif
+
+#endif
+#if defined(__NEED_pthread_once_t) && !defined(__DEFINED_pthread_once_t)
+typedef int pthread_once_t;
+#define __DEFINED_pthread_once_t
+#endif
+
+#if defined(__NEED_pthread_key_t) && !defined(__DEFINED_pthread_key_t)
+typedef unsigned pthread_key_t;
+#define __DEFINED_pthread_key_t
+#endif
+
+#if defined(__NEED_pthread_spinlock_t) && !defined(__DEFINED_pthread_spinlock_t)
+typedef int pthread_spinlock_t;
+#define __DEFINED_pthread_spinlock_t
+#endif
+
+#if defined(__NEED_pthread_mutexattr_t) && !defined(__DEFINED_pthread_mutexattr_t)
+typedef struct { unsigned __attr; } pthread_mutexattr_t;
+#define __DEFINED_pthread_mutexattr_t
+#endif
+
+#if defined(__NEED_pthread_condattr_t) && !defined(__DEFINED_pthread_condattr_t)
+typedef struct { unsigned __attr; } pthread_condattr_t;
+#define __DEFINED_pthread_condattr_t
+#endif
+
+#if defined(__NEED_pthread_barrierattr_t) && !defined(__DEFINED_pthread_barrierattr_t)
+typedef struct { unsigned __attr; } pthread_barrierattr_t;
+#define __DEFINED_pthread_barrierattr_t
+#endif
+
+#if defined(__NEED_pthread_rwlockattr_t) && !defined(__DEFINED_pthread_rwlockattr_t)
+typedef struct { unsigned __attr[2]; } pthread_rwlockattr_t;
+#define __DEFINED_pthread_rwlockattr_t
+#endif
+
+
+#if defined(__NEED_struct__IO_FILE) && !defined(__DEFINED_struct__IO_FILE)
+struct _IO_FILE { char __x; };
+#define __DEFINED_struct__IO_FILE
+#endif
+
+#if defined(__NEED_FILE) && !defined(__DEFINED_FILE)
+typedef struct _IO_FILE FILE;
+#define __DEFINED_FILE
+#endif
+
+
+#if defined(__NEED_va_list) && !defined(__DEFINED_va_list)
+typedef __builtin_va_list va_list;
+#define __DEFINED_va_list
+#endif
+
+#if defined(__NEED___isoc_va_list) && !defined(__DEFINED___isoc_va_list)
+typedef __builtin_va_list __isoc_va_list;
+#define __DEFINED___isoc_va_list
+#endif
+
+
+#if defined(__NEED_mbstate_t) && !defined(__DEFINED_mbstate_t)
+typedef struct __mbstate_t { unsigned __opaque1, __opaque2; } mbstate_t;
+#define __DEFINED_mbstate_t
+#endif
+
+
+#if defined(__NEED_locale_t) && !defined(__DEFINED_locale_t)
+typedef struct __locale_struct * locale_t;
+#define __DEFINED_locale_t
+#endif
+
+
+#if defined(__NEED_sigset_t) && !defined(__DEFINED_sigset_t)
+typedef struct __sigset_t { unsigned long __bits[128/sizeof(long)]; } sigset_t;
+#define __DEFINED_sigset_t
+#endif
+
+
+#if defined(__NEED_struct_iovec) && !defined(__DEFINED_struct_iovec)
+struct iovec { void *iov_base; size_t iov_len; };
+#define __DEFINED_struct_iovec
+#endif
+
+
+#if defined(__NEED_struct_winsize) && !defined(__DEFINED_struct_winsize)
+struct winsize { unsigned short ws_row, ws_col, ws_xpixel, ws_ypixel; };
+#define __DEFINED_struct_winsize
+#endif
+
+
+#if defined(__NEED_socklen_t) && !defined(__DEFINED_socklen_t)
+typedef unsigned socklen_t;
+#define __DEFINED_socklen_t
+#endif
+
+#if defined(__NEED_sa_family_t) && !defined(__DEFINED_sa_family_t)
+typedef unsigned short sa_family_t;
+#define __DEFINED_sa_family_t
+#endif
+
+
+#if defined(__NEED_pthread_attr_t) && !defined(__DEFINED_pthread_attr_t)
+typedef struct { union { int __i[sizeof(long)==8?14:9]; volatile int __vi[sizeof(long)==8?14:9]; unsigned long __s[sizeof(long)==8?7:9]; } __u; } pthread_attr_t;
+#define __DEFINED_pthread_attr_t
+#endif
+
+#if defined(__NEED_pthread_mutex_t) && !defined(__DEFINED_pthread_mutex_t)
+typedef struct { union { int __i[sizeof(long)==8?10:6]; volatile int __vi[sizeof(long)==8?10:6]; volatile void *volatile __p[sizeof(long)==8?5:6]; } __u; } pthread_mutex_t;
+#define __DEFINED_pthread_mutex_t
+#endif
+
+#if defined(__NEED_mtx_t) && !defined(__DEFINED_mtx_t)
+typedef struct { union { int __i[sizeof(long)==8?10:6]; volatile int __vi[sizeof(long)==8?10:6]; volatile void *volatile __p[sizeof(long)==8?5:6]; } __u; } mtx_t;
+#define __DEFINED_mtx_t
+#endif
+
+#if defined(__NEED_pthread_cond_t) && !defined(__DEFINED_pthread_cond_t)
+typedef struct { union { int __i[12]; volatile int __vi[12]; void *__p[12*sizeof(int)/sizeof(void*)]; } __u; } pthread_cond_t;
+#define __DEFINED_pthread_cond_t
+#endif
+
+#if defined(__NEED_cnd_t) && !defined(__DEFINED_cnd_t)
+typedef struct { union { int __i[12]; volatile int __vi[12]; void *__p[12*sizeof(int)/sizeof(void*)]; } __u; } cnd_t;
+#define __DEFINED_cnd_t
+#endif
+
+#if defined(__NEED_pthread_rwlock_t) && !defined(__DEFINED_pthread_rwlock_t)
+typedef struct { union { int __i[sizeof(long)==8?14:8]; volatile int __vi[sizeof(long)==8?14:8]; void *__p[sizeof(long)==8?7:8]; } __u; } pthread_rwlock_t;
+#define __DEFINED_pthread_rwlock_t
+#endif
+
+#if defined(__NEED_pthread_barrier_t) && !defined(__DEFINED_pthread_barrier_t)
+typedef struct { union { int __i[sizeof(long)==8?8:5]; volatile int __vi[sizeof(long)==8?8:5]; void *__p[sizeof(long)==8?4:5]; } __u; } pthread_barrier_t;
+#define __DEFINED_pthread_barrier_t
+#endif
+
+
+#undef _Addr
+#undef _Int64
+#undef _Reg
diff --git a/x86_64-linux-musl/include/bits/alltypes.h.in b/x86_64-linux-musl/include/bits/alltypes.h.in
new file mode 100644
index 0000000..5cd8a29
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/alltypes.h.in
@@ -0,0 +1,20 @@
+#define _Addr long
+#define _Int64 long
+#define _Reg long
+
+#define __BYTE_ORDER 1234
+#define __LONG_MAX 0x7fffffffffffffffL
+
+#ifndef __cplusplus
+TYPEDEF int wchar_t;
+#endif
+
+#if defined(__FLT_EVAL_METHOD__) && __FLT_EVAL_METHOD__ == 2
+TYPEDEF long double float_t;
+TYPEDEF long double double_t;
+#else
+TYPEDEF float float_t;
+TYPEDEF double double_t;
+#endif
+
+TYPEDEF struct { long long __ll; long double __ld; } max_align_t;
diff --git a/x86_64-linux-musl/include/bits/dirent.h b/x86_64-linux-musl/include/bits/dirent.h
new file mode 100644
index 0000000..c845fe8
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/dirent.h
@@ -0,0 +1,11 @@
+#define _DIRENT_HAVE_D_RECLEN
+#define _DIRENT_HAVE_D_OFF
+#define _DIRENT_HAVE_D_TYPE
+
+struct dirent {
+	ino_t d_ino;
+	off_t d_off;
+	unsigned short d_reclen;
+	unsigned char d_type;
+	char d_name[256];
+};
diff --git a/x86_64-linux-musl/include/bits/errno.h b/x86_64-linux-musl/include/bits/errno.h
new file mode 100644
index 0000000..d2e1eee
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/errno.h
@@ -0,0 +1,134 @@
+#define EPERM            1
+#define ENOENT           2
+#define ESRCH            3
+#define EINTR            4
+#define EIO              5
+#define ENXIO            6
+#define E2BIG            7
+#define ENOEXEC          8
+#define EBADF            9
+#define ECHILD          10
+#define EAGAIN          11
+#define ENOMEM          12
+#define EACCES          13
+#define EFAULT          14
+#define ENOTBLK         15
+#define EBUSY           16
+#define EEXIST          17
+#define EXDEV           18
+#define ENODEV          19
+#define ENOTDIR         20
+#define EISDIR          21
+#define EINVAL          22
+#define ENFILE          23
+#define EMFILE          24
+#define ENOTTY          25
+#define ETXTBSY         26
+#define EFBIG           27
+#define ENOSPC          28
+#define ESPIPE          29
+#define EROFS           30
+#define EMLINK          31
+#define EPIPE           32
+#define EDOM            33
+#define ERANGE          34
+#define EDEADLK         35
+#define ENAMETOOLONG    36
+#define ENOLCK          37
+#define ENOSYS          38
+#define ENOTEMPTY       39
+#define ELOOP           40
+#define EWOULDBLOCK     EAGAIN
+#define ENOMSG          42
+#define EIDRM           43
+#define ECHRNG          44
+#define EL2NSYNC        45
+#define EL3HLT          46
+#define EL3RST          47
+#define ELNRNG          48
+#define EUNATCH         49
+#define ENOCSI          50
+#define EL2HLT          51
+#define EBADE           52
+#define EBADR           53
+#define EXFULL          54
+#define ENOANO          55
+#define EBADRQC         56
+#define EBADSLT         57
+#define EDEADLOCK       EDEADLK
+#define EBFONT          59
+#define ENOSTR          60
+#define ENODATA         61
+#define ETIME           62
+#define ENOSR           63
+#define ENONET          64
+#define ENOPKG          65
+#define EREMOTE         66
+#define ENOLINK         67
+#define EADV            68
+#define ESRMNT          69
+#define ECOMM           70
+#define EPROTO          71
+#define EMULTIHOP       72
+#define EDOTDOT         73
+#define EBADMSG         74
+#define EOVERFLOW       75
+#define ENOTUNIQ        76
+#define EBADFD          77
+#define EREMCHG         78
+#define ELIBACC         79
+#define ELIBBAD         80
+#define ELIBSCN         81
+#define ELIBMAX         82
+#define ELIBEXEC        83
+#define EILSEQ          84
+#define ERESTART        85
+#define ESTRPIPE        86
+#define EUSERS          87
+#define ENOTSOCK        88
+#define EDESTADDRREQ    89
+#define EMSGSIZE        90
+#define EPROTOTYPE      91
+#define ENOPROTOOPT     92
+#define EPROTONOSUPPORT 93
+#define ESOCKTNOSUPPORT 94
+#define EOPNOTSUPP      95
+#define ENOTSUP         EOPNOTSUPP
+#define EPFNOSUPPORT    96
+#define EAFNOSUPPORT    97
+#define EADDRINUSE      98
+#define EADDRNOTAVAIL   99
+#define ENETDOWN        100
+#define ENETUNREACH     101
+#define ENETRESET       102
+#define ECONNABORTED    103
+#define ECONNRESET      104
+#define ENOBUFS         105
+#define EISCONN         106
+#define ENOTCONN        107
+#define ESHUTDOWN       108
+#define ETOOMANYREFS    109
+#define ETIMEDOUT       110
+#define ECONNREFUSED    111
+#define EHOSTDOWN       112
+#define EHOSTUNREACH    113
+#define EALREADY        114
+#define EINPROGRESS     115
+#define ESTALE          116
+#define EUCLEAN         117
+#define ENOTNAM         118
+#define ENAVAIL         119
+#define EISNAM          120
+#define EREMOTEIO       121
+#define EDQUOT          122
+#define ENOMEDIUM       123
+#define EMEDIUMTYPE     124
+#define ECANCELED       125
+#define ENOKEY          126
+#define EKEYEXPIRED     127
+#define EKEYREVOKED     128
+#define EKEYREJECTED    129
+#define EOWNERDEAD      130
+#define ENOTRECOVERABLE 131
+#define ERFKILL         132
+#define EHWPOISON       133
diff --git a/x86_64-linux-musl/include/bits/fcntl.h b/x86_64-linux-musl/include/bits/fcntl.h
new file mode 100644
index 0000000..730a98c
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/fcntl.h
@@ -0,0 +1,46 @@
+#define O_CREAT        0100
+#define O_EXCL         0200
+#define O_NOCTTY       0400
+#define O_TRUNC       01000
+#define O_APPEND      02000
+#define O_NONBLOCK    04000
+#define O_DSYNC      010000
+#define O_SYNC     04010000
+#define O_RSYNC    04010000
+#define O_DIRECTORY 0200000
+#define O_NOFOLLOW  0400000
+#define O_CLOEXEC  02000000
+
+#define O_ASYNC      020000
+#define O_DIRECT     040000
+#define O_LARGEFILE 0100000
+#define O_NOATIME  01000000
+#define O_PATH    010000000
+#define O_TMPFILE 020200000
+#define O_NDELAY O_NONBLOCK
+
+#define F_DUPFD  0
+#define F_GETFD  1
+#define F_SETFD  2
+#define F_GETFL  3
+#define F_SETFL  4
+
+#define F_SETOWN 8
+#define F_GETOWN 9
+#define F_SETSIG 10
+#define F_GETSIG 11
+
+#if __LONG_MAX == 0x7fffffffL
+#define F_GETLK 12
+#define F_SETLK 13
+#define F_SETLKW 14
+#else
+#define F_GETLK 5
+#define F_SETLK 6
+#define F_SETLKW 7
+#endif
+
+#define F_SETOWN_EX 15
+#define F_GETOWN_EX 16
+
+#define F_GETOWNER_UIDS 17
diff --git a/x86_64-linux-musl/include/bits/fenv.h b/x86_64-linux-musl/include/bits/fenv.h
new file mode 100644
index 0000000..24df041
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/fenv.h
@@ -0,0 +1,34 @@
+#define FE_INVALID    1
+#define __FE_DENORM   2
+#define FE_DIVBYZERO  4
+#define FE_OVERFLOW   8
+#define FE_UNDERFLOW  16
+#define FE_INEXACT    32
+
+#define FE_ALL_EXCEPT 63
+
+#define FE_TONEAREST  0
+#define FE_DOWNWARD   0x400
+#define FE_UPWARD     0x800
+#define FE_TOWARDZERO 0xc00
+
+typedef unsigned short fexcept_t;
+
+typedef struct {
+	unsigned short __control_word;
+	unsigned short __unused1;
+	unsigned short __status_word;
+	unsigned short __unused2;
+	unsigned short __tags;
+	unsigned short __unused3;
+	unsigned int __eip;
+	unsigned short __cs_selector;
+	unsigned int __opcode:11;
+	unsigned int __unused4:5;
+	unsigned int __data_offset;
+	unsigned short __data_selector;
+	unsigned short __unused5;
+	unsigned int __mxcsr;
+} fenv_t;
+
+#define FE_DFL_ENV      ((const fenv_t *) -1)
diff --git a/x86_64-linux-musl/include/bits/float.h b/x86_64-linux-musl/include/bits/float.h
new file mode 100644
index 0000000..4d8e786
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/float.h
@@ -0,0 +1,20 @@
+#ifdef __FLT_EVAL_METHOD__
+#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
+#else
+#define FLT_EVAL_METHOD 0
+#endif
+
+#define LDBL_TRUE_MIN 3.6451995318824746025e-4951L
+#define LDBL_MIN     3.3621031431120935063e-4932L
+#define LDBL_MAX     1.1897314953572317650e+4932L
+#define LDBL_EPSILON 1.0842021724855044340e-19L
+
+#define LDBL_MANT_DIG 64
+#define LDBL_MIN_EXP (-16381)
+#define LDBL_MAX_EXP 16384
+
+#define LDBL_DIG 18
+#define LDBL_MIN_10_EXP (-4931)
+#define LDBL_MAX_10_EXP 4932
+
+#define DECIMAL_DIG 21
diff --git a/x86_64-linux-musl/include/bits/hwcap.h b/x86_64-linux-musl/include/bits/hwcap.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/hwcap.h
diff --git a/x86_64-linux-musl/include/bits/in_addr.h b/x86_64-linux-musl/include/bits/in_addr.h
new file mode 100644
index 0000000..07313e5
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/in_addr.h
@@ -0,0 +1,4 @@
+#pragma once
+
+// musl defines in_addr in netinet/in.h
+#include <netinet/in.h>
diff --git a/x86_64-linux-musl/include/bits/io.h b/x86_64-linux-musl/include/bits/io.h
new file mode 100644
index 0000000..dd5bddc
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/io.h
@@ -0,0 +1,77 @@
+static __inline void outb(unsigned char __val, unsigned short __port)
+{
+	__asm__ volatile ("outb %0,%1" : : "a" (__val), "dN" (__port));
+}
+
+static __inline void outw(unsigned short __val, unsigned short __port)
+{
+	__asm__ volatile ("outw %0,%1" : : "a" (__val), "dN" (__port));
+}
+
+static __inline void outl(unsigned int __val, unsigned short __port)
+{
+	__asm__ volatile ("outl %0,%1" : : "a" (__val), "dN" (__port));
+}
+
+static __inline unsigned char inb(unsigned short __port)
+{
+	unsigned char __val;
+	__asm__ volatile ("inb %1,%0" : "=a" (__val) : "dN" (__port));
+	return __val;
+}
+
+static __inline unsigned short inw(unsigned short __port)
+{
+	unsigned short __val;
+	__asm__ volatile ("inw %1,%0" : "=a" (__val) : "dN" (__port));
+	return __val;
+}
+
+static __inline unsigned int inl(unsigned short __port)
+{
+	unsigned int __val;
+	__asm__ volatile ("inl %1,%0" : "=a" (__val) : "dN" (__port));
+	return __val;
+}
+
+static __inline void outsb(unsigned short __port, const void *__buf, unsigned long __n)
+{
+	__asm__ volatile ("cld; rep; outsb"
+		      : "+S" (__buf), "+c" (__n)
+		      : "d" (__port));
+}
+
+static __inline void outsw(unsigned short __port, const void *__buf, unsigned long __n)
+{
+	__asm__ volatile ("cld; rep; outsw"
+		      : "+S" (__buf), "+c" (__n)
+		      : "d" (__port));
+}
+
+static __inline void outsl(unsigned short __port, const void *__buf, unsigned long __n)
+{
+	__asm__ volatile ("cld; rep; outsl"
+		      : "+S" (__buf), "+c"(__n)
+		      : "d" (__port));
+}
+
+static __inline void insb(unsigned short __port, void *__buf, unsigned long __n)
+{
+	__asm__ volatile ("cld; rep; insb"
+		      : "+D" (__buf), "+c" (__n)
+		      : "d" (__port));
+}
+
+static __inline void insw(unsigned short __port, void *__buf, unsigned long __n)
+{
+	__asm__ volatile ("cld; rep; insw"
+		      : "+D" (__buf), "+c" (__n)
+		      : "d" (__port));
+}
+
+static __inline void insl(unsigned short __port, void *__buf, unsigned long __n)
+{
+	__asm__ volatile ("cld; rep; insl"
+		      : "+D" (__buf), "+c" (__n)
+		      : "d" (__port));
+}
diff --git a/x86_64-linux-musl/include/bits/ioctl.h b/x86_64-linux-musl/include/bits/ioctl.h
new file mode 100644
index 0000000..60ae8b8
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/ioctl.h
@@ -0,0 +1,115 @@
+#define _IOC(a,b,c,d) ( ((a)<<30) | ((b)<<8) | (c) | ((d)<<16) )
+#define _IOC_NONE  0U
+#define _IOC_WRITE 1U
+#define _IOC_READ  2U
+
+#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0)
+#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c))
+#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c))
+#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c))
+
+#define TCGETS		0x5401
+#define TCSETS		0x5402
+#define TCSETSW		0x5403
+#define TCSETSF		0x5404
+#define TCGETA		0x5405
+#define TCSETA		0x5406
+#define TCSETAW		0x5407
+#define TCSETAF		0x5408
+#define TCSBRK		0x5409
+#define TCXONC		0x540A
+#define TCFLSH		0x540B
+#define TIOCEXCL	0x540C
+#define TIOCNXCL	0x540D
+#define TIOCSCTTY	0x540E
+#define TIOCGPGRP	0x540F
+#define TIOCSPGRP	0x5410
+#define TIOCOUTQ	0x5411
+#define TIOCSTI		0x5412
+#define TIOCGWINSZ	0x5413
+#define TIOCSWINSZ	0x5414
+#define TIOCMGET	0x5415
+#define TIOCMBIS	0x5416
+#define TIOCMBIC	0x5417
+#define TIOCMSET	0x5418
+#define TIOCGSOFTCAR	0x5419
+#define TIOCSSOFTCAR	0x541A
+#define FIONREAD	0x541B
+#define TIOCINQ		FIONREAD
+#define TIOCLINUX	0x541C
+#define TIOCCONS	0x541D
+#define TIOCGSERIAL	0x541E
+#define TIOCSSERIAL	0x541F
+#define TIOCPKT		0x5420
+#define FIONBIO		0x5421
+#define TIOCNOTTY	0x5422
+#define TIOCSETD	0x5423
+#define TIOCGETD	0x5424
+#define TCSBRKP		0x5425
+#define TIOCSBRK	0x5427
+#define TIOCCBRK	0x5428
+#define TIOCGSID	0x5429
+#define TIOCGRS485	0x542E
+#define TIOCSRS485	0x542F
+#define TIOCGPTN	0x80045430
+#define TIOCSPTLCK	0x40045431
+#define TIOCGDEV	0x80045432
+#define TCGETX		0x5432
+#define TCSETX		0x5433
+#define TCSETXF		0x5434
+#define TCSETXW		0x5435
+#define TIOCSIG		0x40045436
+#define TIOCVHANGUP	0x5437
+#define TIOCGPKT	0x80045438
+#define TIOCGPTLCK	0x80045439
+#define TIOCGEXCL	0x80045440
+#define TIOCGPTPEER	0x5441
+#define TIOCGISO7816	0x80285442
+#define TIOCSISO7816	0xc0285443
+
+#define FIONCLEX	0x5450
+#define FIOCLEX		0x5451
+#define FIOASYNC	0x5452
+#define TIOCSERCONFIG	0x5453
+#define TIOCSERGWILD	0x5454
+#define TIOCSERSWILD	0x5455
+#define TIOCGLCKTRMIOS	0x5456
+#define TIOCSLCKTRMIOS	0x5457
+#define TIOCSERGSTRUCT	0x5458
+#define TIOCSERGETLSR   0x5459
+#define TIOCSERGETMULTI 0x545A
+#define TIOCSERSETMULTI 0x545B
+
+#define TIOCMIWAIT	0x545C
+#define TIOCGICOUNT	0x545D
+#define FIOQSIZE	0x5460
+
+#define TIOCM_LE        0x001
+#define TIOCM_DTR       0x002
+#define TIOCM_RTS       0x004
+#define TIOCM_ST        0x008
+#define TIOCM_SR        0x010
+#define TIOCM_CTS       0x020
+#define TIOCM_CAR       0x040
+#define TIOCM_RNG       0x080
+#define TIOCM_DSR       0x100
+#define TIOCM_CD        TIOCM_CAR
+#define TIOCM_RI        TIOCM_RNG
+#define TIOCM_OUT1      0x2000
+#define TIOCM_OUT2      0x4000
+#define TIOCM_LOOP      0x8000
+
+#define FIOSETOWN       0x8901
+#define SIOCSPGRP       0x8902
+#define FIOGETOWN       0x8903
+#define SIOCGPGRP       0x8904
+#define SIOCATMARK      0x8905
+#if __LONG_MAX == 0x7fffffff
+#define SIOCGSTAMP      _IOR(0x89, 6, char[16])
+#define SIOCGSTAMPNS    _IOR(0x89, 7, char[16])
+#else
+#define SIOCGSTAMP      0x8906
+#define SIOCGSTAMPNS    0x8907
+#endif
+
+#include <bits/ioctl_fix.h>
diff --git a/x86_64-linux-musl/include/bits/ioctl_fix.h b/x86_64-linux-musl/include/bits/ioctl_fix.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/ioctl_fix.h
diff --git a/x86_64-linux-musl/include/bits/ip_mreq_source.h b/x86_64-linux-musl/include/bits/ip_mreq_source.h
new file mode 100644
index 0000000..b8aeb8c
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/ip_mreq_source.h
@@ -0,0 +1,4 @@
+#pragma once
+
+// musl defines ip_mreq_source in netinet/in.h
+#include <netinet/in.h>
diff --git a/x86_64-linux-musl/include/bits/ip_msfilter.h b/x86_64-linux-musl/include/bits/ip_msfilter.h
new file mode 100644
index 0000000..262a294
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/ip_msfilter.h
@@ -0,0 +1,4 @@
+#pragma once
+
+// musl defines ip_msfilter in netinet/in.h
+#include <netinet/in.h>
diff --git a/x86_64-linux-musl/include/bits/ipc.h b/x86_64-linux-musl/include/bits/ipc.h
new file mode 100644
index 0000000..40d6f3a
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/ipc.h
@@ -0,0 +1,11 @@
+struct ipc_perm {
+	key_t __ipc_perm_key;
+	uid_t uid;
+	gid_t gid;
+	uid_t cuid;
+	gid_t cgid;
+	mode_t mode;
+	int __ipc_perm_seq;
+	long __pad1;
+	long __pad2;
+};
diff --git a/x86_64-linux-musl/include/bits/ipcstat.h b/x86_64-linux-musl/include/bits/ipcstat.h
new file mode 100644
index 0000000..0018ad1
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/ipcstat.h
@@ -0,0 +1 @@
+#define IPC_STAT 2
diff --git a/x86_64-linux-musl/include/bits/kd.h b/x86_64-linux-musl/include/bits/kd.h
new file mode 100644
index 0000000..33b873f
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/kd.h
@@ -0,0 +1 @@
+#include <linux/kd.h>
diff --git a/x86_64-linux-musl/include/bits/limits.h b/x86_64-linux-musl/include/bits/limits.h
new file mode 100644
index 0000000..07743b6
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/limits.h
@@ -0,0 +1 @@
+#define PAGESIZE 4096
diff --git a/x86_64-linux-musl/include/bits/link.h b/x86_64-linux-musl/include/bits/link.h
new file mode 100644
index 0000000..4a94d8f
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/link.h
@@ -0,0 +1 @@
+typedef uint32_t Elf_Symndx;
diff --git a/x86_64-linux-musl/include/bits/mman.h b/x86_64-linux-musl/include/bits/mman.h
new file mode 100644
index 0000000..ba2d6f7
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/mman.h
@@ -0,0 +1 @@
+#define MAP_32BIT      0x40
diff --git a/x86_64-linux-musl/include/bits/msg.h b/x86_64-linux-musl/include/bits/msg.h
new file mode 100644
index 0000000..2e23ca2
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/msg.h
@@ -0,0 +1,12 @@
+struct msqid_ds {
+	struct ipc_perm msg_perm;
+	time_t msg_stime;
+	time_t msg_rtime;
+	time_t msg_ctime;
+	unsigned long msg_cbytes;
+	msgqnum_t msg_qnum;
+	msglen_t msg_qbytes;
+	pid_t msg_lspid;
+	pid_t msg_lrpid;
+	unsigned long __unused[2];
+};
diff --git a/x86_64-linux-musl/include/bits/poll.h b/x86_64-linux-musl/include/bits/poll.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/poll.h
diff --git a/x86_64-linux-musl/include/bits/posix.h b/x86_64-linux-musl/include/bits/posix.h
new file mode 100644
index 0000000..c37b94c
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/posix.h
@@ -0,0 +1,2 @@
+#define _POSIX_V6_LP64_OFF64  1
+#define _POSIX_V7_LP64_OFF64  1
diff --git a/x86_64-linux-musl/include/bits/ptrace.h b/x86_64-linux-musl/include/bits/ptrace.h
new file mode 100644
index 0000000..7f8a09b
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/ptrace.h
@@ -0,0 +1,13 @@
+#define PTRACE_GET_THREAD_AREA		25
+#define PTRACE_SET_THREAD_AREA		26
+#define PTRACE_ARCH_PRCTL		30
+#define PTRACE_SYSEMU			31
+#define PTRACE_SYSEMU_SINGLESTEP	32
+#define PTRACE_SINGLEBLOCK		33
+
+#define PT_GET_THREAD_AREA PTRACE_GET_THREAD_AREA
+#define PT_SET_THREAD_AREA PTRACE_SET_THREAD_AREA
+#define PT_ARCH_PRCTL PTRACE_ARCH_PRCTL
+#define PT_SYSEMU PTRACE_SYSEMU
+#define PT_SYSEMU_SINGLESTEP PTRACE_SYSEMU_SINGLESTEP
+#define PT_STEPBLOCK PTRACE_SINGLEBLOCK
diff --git a/x86_64-linux-musl/include/bits/reg.h b/x86_64-linux-musl/include/bits/reg.h
new file mode 100644
index 0000000..a4df04c
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/reg.h
@@ -0,0 +1,29 @@
+#undef __WORDSIZE
+#define __WORDSIZE 64
+#define R15    0
+#define R14    1
+#define R13    2
+#define R12    3
+#define RBP    4
+#define RBX    5
+#define R11    6
+#define R10    7
+#define R9     8
+#define R8     9
+#define RAX    10
+#define RCX    11
+#define RDX    12
+#define RSI    13
+#define RDI    14
+#define ORIG_RAX 15
+#define RIP    16
+#define CS     17
+#define EFLAGS 18
+#define RSP    19
+#define SS     20
+#define FS_BASE 21
+#define GS_BASE 22
+#define DS     23
+#define ES     24
+#define FS     25
+#define GS     26
diff --git a/x86_64-linux-musl/include/bits/resource.h b/x86_64-linux-musl/include/bits/resource.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/resource.h
diff --git a/x86_64-linux-musl/include/bits/sem.h b/x86_64-linux-musl/include/bits/sem.h
new file mode 100644
index 0000000..e61571c
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/sem.h
@@ -0,0 +1,11 @@
+struct semid_ds {
+	struct ipc_perm sem_perm;
+	time_t sem_otime;
+	long __unused1;
+	time_t sem_ctime;
+	long __unused2;
+	unsigned short sem_nsems;
+	char __sem_nsems_pad[sizeof(long)-sizeof(short)];
+	long __unused3;
+	long __unused4;
+};
diff --git a/x86_64-linux-musl/include/bits/setjmp.h b/x86_64-linux-musl/include/bits/setjmp.h
new file mode 100644
index 0000000..63973a8
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/setjmp.h
@@ -0,0 +1 @@
+typedef unsigned long __jmp_buf[8];
diff --git a/x86_64-linux-musl/include/bits/shm.h b/x86_64-linux-musl/include/bits/shm.h
new file mode 100644
index 0000000..8d19378
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/shm.h
@@ -0,0 +1,24 @@
+#define SHMLBA 4096
+
+struct shmid_ds {
+	struct ipc_perm shm_perm;
+	size_t shm_segsz;
+	time_t shm_atime;
+	time_t shm_dtime;
+	time_t shm_ctime;
+	pid_t shm_cpid;
+	pid_t shm_lpid;
+	unsigned long shm_nattch;
+	unsigned long __pad1;
+	unsigned long __pad2;
+};
+
+struct shminfo {
+	unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4];
+};
+
+struct shm_info {
+	int __used_ids;
+	unsigned long shm_tot, shm_rss, shm_swp;
+	unsigned long __swap_attempts, __swap_successes;
+};
diff --git a/x86_64-linux-musl/include/bits/signal.h b/x86_64-linux-musl/include/bits/signal.h
new file mode 100644
index 0000000..c99317d
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/signal.h
@@ -0,0 +1,153 @@
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define MINSIGSTKSZ 2048
+#define SIGSTKSZ 8192
+#endif
+
+#ifdef _GNU_SOURCE
+enum { REG_R8 = 0 };
+#define REG_R8 REG_R8
+enum { REG_R9 = 1 };
+#define REG_R9 REG_R9
+enum { REG_R10 = 2 };
+#define REG_R10 REG_R10
+enum { REG_R11 = 3 };
+#define REG_R11 REG_R11
+enum { REG_R12 = 4 };
+#define REG_R12 REG_R12
+enum { REG_R13 = 5 };
+#define REG_R13 REG_R13
+enum { REG_R14 = 6 };
+#define REG_R14 REG_R14
+enum { REG_R15 = 7 };
+#define REG_R15 REG_R15
+enum { REG_RDI = 8 };
+#define REG_RDI REG_RDI
+enum { REG_RSI = 9 };
+#define REG_RSI REG_RSI
+enum { REG_RBP = 10 };
+#define REG_RBP REG_RBP
+enum { REG_RBX = 11 };
+#define REG_RBX REG_RBX
+enum { REG_RDX = 12 };
+#define REG_RDX REG_RDX
+enum { REG_RAX = 13 };
+#define REG_RAX REG_RAX
+enum { REG_RCX = 14 };
+#define REG_RCX REG_RCX
+enum { REG_RSP = 15 };
+#define REG_RSP REG_RSP
+enum { REG_RIP = 16 };
+#define REG_RIP REG_RIP
+enum { REG_EFL = 17 };
+#define REG_EFL REG_EFL
+enum { REG_CSGSFS = 18 };
+#define REG_CSGSFS REG_CSGSFS
+enum { REG_ERR = 19 };
+#define REG_ERR REG_ERR
+enum { REG_TRAPNO = 20 };
+#define REG_TRAPNO REG_TRAPNO
+enum { REG_OLDMASK = 21 };
+#define REG_OLDMASK REG_OLDMASK
+enum { REG_CR2 = 22 };
+#define REG_CR2 REG_CR2
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+typedef long long greg_t, gregset_t[23];
+typedef struct _fpstate {
+	unsigned short cwd, swd, ftw, fop;
+	unsigned long long rip, rdp;
+	unsigned mxcsr, mxcr_mask;
+	struct {
+		unsigned short significand[4], exponent, padding[3];
+	} _st[8];
+	struct {
+		unsigned element[4];
+	} _xmm[16];
+	unsigned padding[24];
+} *fpregset_t;
+struct sigcontext {
+	unsigned long r8, r9, r10, r11, r12, r13, r14, r15;
+	unsigned long rdi, rsi, rbp, rbx, rdx, rax, rcx, rsp, rip, eflags;
+	unsigned short cs, gs, fs, __pad0;
+	unsigned long err, trapno, oldmask, cr2;
+	struct _fpstate *fpstate;
+	unsigned long __reserved1[8];
+};
+typedef struct {
+	gregset_t gregs;
+	fpregset_t fpregs;
+	unsigned long long __reserved1[8];
+} mcontext_t;
+#else
+typedef struct {
+	unsigned long __space[32];
+} mcontext_t;
+#endif
+
+struct sigaltstack {
+	void *ss_sp;
+	int ss_flags;
+	size_t ss_size;
+};
+
+typedef struct __ucontext {
+	unsigned long uc_flags;
+	struct __ucontext *uc_link;
+	stack_t uc_stack;
+	mcontext_t uc_mcontext;
+	sigset_t uc_sigmask;
+	unsigned long __fpregs_mem[64];
+} ucontext_t;
+
+#define SA_NOCLDSTOP  1
+#define SA_NOCLDWAIT  2
+#define SA_SIGINFO    4
+#define SA_ONSTACK    0x08000000
+#define SA_RESTART    0x10000000
+#define SA_NODEFER    0x40000000
+#define SA_RESETHAND  0x80000000
+#define SA_RESTORER   0x04000000
+
+#endif
+
+#define SIGHUP    1
+#define SIGINT    2
+#define SIGQUIT   3
+#define SIGILL    4
+#define SIGTRAP   5
+#define SIGABRT   6
+#define SIGIOT    SIGABRT
+#define SIGBUS    7
+#define SIGFPE    8
+#define SIGKILL   9
+#define SIGUSR1   10
+#define SIGSEGV   11
+#define SIGUSR2   12
+#define SIGPIPE   13
+#define SIGALRM   14
+#define SIGTERM   15
+#define SIGSTKFLT 16
+#define SIGCHLD   17
+#define SIGCONT   18
+#define SIGSTOP   19
+#define SIGTSTP   20
+#define SIGTTIN   21
+#define SIGTTOU   22
+#define SIGURG    23
+#define SIGXCPU   24
+#define SIGXFSZ   25
+#define SIGVTALRM 26
+#define SIGPROF   27
+#define SIGWINCH  28
+#define SIGIO     29
+#define SIGPOLL   29
+#define SIGPWR    30
+#define SIGSYS    31
+#define SIGUNUSED SIGSYS
+
+#define _NSIG 65
+
diff --git a/x86_64-linux-musl/include/bits/socket.h b/x86_64-linux-musl/include/bits/socket.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/socket.h
diff --git a/x86_64-linux-musl/include/bits/soundcard.h b/x86_64-linux-musl/include/bits/soundcard.h
new file mode 100644
index 0000000..fade986
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/soundcard.h
@@ -0,0 +1 @@
+#include <linux/soundcard.h>
diff --git a/x86_64-linux-musl/include/bits/stat.h b/x86_64-linux-musl/include/bits/stat.h
new file mode 100644
index 0000000..081237c
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/stat.h
@@ -0,0 +1,22 @@
+/* copied from kernel definition, but with padding replaced
+ * by the corresponding correctly-sized userspace types. */
+
+struct stat {
+	dev_t st_dev;
+	ino_t st_ino;
+	nlink_t st_nlink;
+
+	mode_t st_mode;
+	uid_t st_uid;
+	gid_t st_gid;
+	unsigned int    __pad0;
+	dev_t st_rdev;
+	off_t st_size;
+	blksize_t st_blksize;
+	blkcnt_t st_blocks;
+
+	struct timespec st_atim;
+	struct timespec st_mtim;
+	struct timespec st_ctim;
+	long __unused[3];
+};
diff --git a/x86_64-linux-musl/include/bits/statfs.h b/x86_64-linux-musl/include/bits/statfs.h
new file mode 100644
index 0000000..f103f4e
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/statfs.h
@@ -0,0 +1,7 @@
+struct statfs {
+	unsigned long f_type, f_bsize;
+	fsblkcnt_t f_blocks, f_bfree, f_bavail;
+	fsfilcnt_t f_files, f_ffree;
+	fsid_t f_fsid;
+	unsigned long f_namelen, f_frsize, f_flags, f_spare[4];
+};
diff --git a/x86_64-linux-musl/include/bits/stdint.h b/x86_64-linux-musl/include/bits/stdint.h
new file mode 100644
index 0000000..1bb147f
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/stdint.h
@@ -0,0 +1,20 @@
+typedef int32_t int_fast16_t;
+typedef int32_t int_fast32_t;
+typedef uint32_t uint_fast16_t;
+typedef uint32_t uint_fast32_t;
+
+#define INT_FAST16_MIN  INT32_MIN
+#define INT_FAST32_MIN  INT32_MIN
+
+#define INT_FAST16_MAX  INT32_MAX
+#define INT_FAST32_MAX  INT32_MAX
+
+#define UINT_FAST16_MAX UINT32_MAX
+#define UINT_FAST32_MAX UINT32_MAX
+
+#define INTPTR_MIN      INT64_MIN
+#define INTPTR_MAX      INT64_MAX
+#define UINTPTR_MAX     UINT64_MAX
+#define PTRDIFF_MIN     INT64_MIN
+#define PTRDIFF_MAX     INT64_MAX
+#define SIZE_MAX        UINT64_MAX
diff --git a/x86_64-linux-musl/include/bits/syscall.h b/x86_64-linux-musl/include/bits/syscall.h
new file mode 100644
index 0000000..a6d4b29
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/syscall.h
@@ -0,0 +1,705 @@
+#define __NR_read				0
+#define __NR_write				1
+#define __NR_open				2
+#define __NR_close				3
+#define __NR_stat				4
+#define __NR_fstat				5
+#define __NR_lstat				6
+#define __NR_poll				7
+#define __NR_lseek				8
+#define __NR_mmap				9
+#define __NR_mprotect			10
+#define __NR_munmap				11
+#define __NR_brk				12
+#define __NR_rt_sigaction		13
+#define __NR_rt_sigprocmask		14
+#define __NR_rt_sigreturn		15
+#define __NR_ioctl				16
+#define __NR_pread64			17
+#define __NR_pwrite64			18
+#define __NR_readv				19
+#define __NR_writev				20
+#define __NR_access				21
+#define __NR_pipe				22
+#define __NR_select				23
+#define __NR_sched_yield		24
+#define __NR_mremap				25
+#define __NR_msync				26
+#define __NR_mincore			27
+#define __NR_madvise			28
+#define __NR_shmget				29
+#define __NR_shmat				30
+#define __NR_shmctl				31
+#define __NR_dup				32
+#define __NR_dup2				33
+#define __NR_pause				34
+#define __NR_nanosleep			35
+#define __NR_getitimer			36
+#define __NR_alarm				37
+#define __NR_setitimer			38
+#define __NR_getpid				39
+#define __NR_sendfile			40
+#define __NR_socket				41
+#define __NR_connect			42
+#define __NR_accept				43
+#define __NR_sendto				44
+#define __NR_recvfrom			45
+#define __NR_sendmsg			46
+#define __NR_recvmsg			47
+#define __NR_shutdown			48
+#define __NR_bind				49
+#define __NR_listen				50
+#define __NR_getsockname		51
+#define __NR_getpeername		52
+#define __NR_socketpair			53
+#define __NR_setsockopt			54
+#define __NR_getsockopt			55
+#define __NR_clone				56
+#define __NR_fork				57
+#define __NR_vfork				58
+#define __NR_execve				59
+#define __NR_exit				60
+#define __NR_wait4				61
+#define __NR_kill				62
+#define __NR_uname				63
+#define __NR_semget				64
+#define __NR_semop				65
+#define __NR_semctl				66
+#define __NR_shmdt				67
+#define __NR_msgget				68
+#define __NR_msgsnd				69
+#define __NR_msgrcv				70
+#define __NR_msgctl				71
+#define __NR_fcntl				72
+#define __NR_flock				73
+#define __NR_fsync				74
+#define __NR_fdatasync			75
+#define __NR_truncate			76
+#define __NR_ftruncate			77
+#define __NR_getdents			78
+#define __NR_getcwd				79
+#define __NR_chdir				80
+#define __NR_fchdir				81
+#define __NR_rename				82
+#define __NR_mkdir				83
+#define __NR_rmdir				84
+#define __NR_creat				85
+#define __NR_link				86
+#define __NR_unlink				87
+#define __NR_symlink			88
+#define __NR_readlink			89
+#define __NR_chmod				90
+#define __NR_fchmod				91
+#define __NR_chown				92
+#define __NR_fchown				93
+#define __NR_lchown				94
+#define __NR_umask				95
+#define __NR_gettimeofday		96
+#define __NR_getrlimit			97
+#define __NR_getrusage			98
+#define __NR_sysinfo			99
+#define __NR_times				100
+#define __NR_ptrace				101
+#define __NR_getuid				102
+#define __NR_syslog				103
+#define __NR_getgid				104
+#define __NR_setuid				105
+#define __NR_setgid				106
+#define __NR_geteuid			107
+#define __NR_getegid			108
+#define __NR_setpgid			109
+#define __NR_getppid			110
+#define __NR_getpgrp			111
+#define __NR_setsid				112
+#define __NR_setreuid			113
+#define __NR_setregid			114
+#define __NR_getgroups			115
+#define __NR_setgroups			116
+#define __NR_setresuid			117
+#define __NR_getresuid			118
+#define __NR_setresgid			119
+#define __NR_getresgid			120
+#define __NR_getpgid			121
+#define __NR_setfsuid			122
+#define __NR_setfsgid			123
+#define __NR_getsid				124
+#define __NR_capget				125
+#define __NR_capset				126
+#define __NR_rt_sigpending		127
+#define __NR_rt_sigtimedwait	128
+#define __NR_rt_sigqueueinfo	129
+#define __NR_rt_sigsuspend		130
+#define __NR_sigaltstack		131
+#define __NR_utime				132
+#define __NR_mknod				133
+#define __NR_uselib				134
+#define __NR_personality		135
+#define __NR_ustat				136
+#define __NR_statfs				137
+#define __NR_fstatfs			138
+#define __NR_sysfs				139
+#define __NR_getpriority			140
+#define __NR_setpriority			141
+#define __NR_sched_setparam			142
+#define __NR_sched_getparam			143
+#define __NR_sched_setscheduler		144
+#define __NR_sched_getscheduler		145
+#define __NR_sched_get_priority_max	146
+#define __NR_sched_get_priority_min	147
+#define __NR_sched_rr_get_interval	148
+#define __NR_mlock					149
+#define __NR_munlock				150
+#define __NR_mlockall				151
+#define __NR_munlockall				152
+#define __NR_vhangup				153
+#define __NR_modify_ldt				154
+#define __NR_pivot_root				155
+#define __NR__sysctl				156
+#define __NR_prctl					157
+#define __NR_arch_prctl				158
+#define __NR_adjtimex				159
+#define __NR_setrlimit				160
+#define __NR_chroot					161
+#define __NR_sync					162
+#define __NR_acct					163
+#define __NR_settimeofday			164
+#define __NR_mount					165
+#define __NR_umount2				166
+#define __NR_swapon					167
+#define __NR_swapoff				168
+#define __NR_reboot					169
+#define __NR_sethostname			170
+#define __NR_setdomainname			171
+#define __NR_iopl					172
+#define __NR_ioperm					173
+#define __NR_create_module			174
+#define __NR_init_module			175
+#define __NR_delete_module			176
+#define __NR_get_kernel_syms		177
+#define __NR_query_module			178
+#define __NR_quotactl				179
+#define __NR_nfsservctl				180
+#define __NR_getpmsg				181
+#define __NR_putpmsg				182
+#define __NR_afs_syscall			183
+#define __NR_tuxcall				184
+#define __NR_security				185
+#define __NR_gettid					186
+#define __NR_readahead				187
+#define __NR_setxattr				188
+#define __NR_lsetxattr				189
+#define __NR_fsetxattr				190
+#define __NR_getxattr				191
+#define __NR_lgetxattr				192
+#define __NR_fgetxattr				193
+#define __NR_listxattr				194
+#define __NR_llistxattr				195
+#define __NR_flistxattr				196
+#define __NR_removexattr			197
+#define __NR_lremovexattr			198
+#define __NR_fremovexattr			199
+#define __NR_tkill					200
+#define __NR_time					201
+#define __NR_futex					202
+#define __NR_sched_setaffinity		203
+#define __NR_sched_getaffinity		204
+#define __NR_set_thread_area		205
+#define __NR_io_setup				206
+#define __NR_io_destroy				207
+#define __NR_io_getevents			208
+#define __NR_io_submit				209
+#define __NR_io_cancel				210
+#define __NR_get_thread_area		211
+#define __NR_lookup_dcookie			212
+#define __NR_epoll_create			213
+#define __NR_epoll_ctl_old			214
+#define __NR_epoll_wait_old			215
+#define __NR_remap_file_pages		216
+#define __NR_getdents64				217
+#define __NR_set_tid_address		218
+#define __NR_restart_syscall		219
+#define __NR_semtimedop				220
+#define __NR_fadvise64				221
+#define __NR_timer_create			222
+#define __NR_timer_settime			223
+#define __NR_timer_gettime			224
+#define __NR_timer_getoverrun		225
+#define __NR_timer_delete			226
+#define __NR_clock_settime			227
+#define __NR_clock_gettime			228
+#define __NR_clock_getres			229
+#define __NR_clock_nanosleep		230
+#define __NR_exit_group				231
+#define __NR_epoll_wait				232
+#define __NR_epoll_ctl				233
+#define __NR_tgkill					234
+#define __NR_utimes					235
+#define __NR_vserver				236
+#define __NR_mbind					237
+#define __NR_set_mempolicy			238
+#define __NR_get_mempolicy			239
+#define __NR_mq_open				240
+#define __NR_mq_unlink				241
+#define __NR_mq_timedsend			242
+#define __NR_mq_timedreceive		243
+#define __NR_mq_notify				244
+#define __NR_mq_getsetattr			245
+#define __NR_kexec_load				246
+#define __NR_waitid					247
+#define __NR_add_key				248
+#define __NR_request_key			249
+#define __NR_keyctl					250
+#define __NR_ioprio_set				251
+#define __NR_ioprio_get				252
+#define __NR_inotify_init			253
+#define __NR_inotify_add_watch		254
+#define __NR_inotify_rm_watch		255
+#define __NR_migrate_pages			256
+#define __NR_openat					257
+#define __NR_mkdirat				258
+#define __NR_mknodat				259
+#define __NR_fchownat				260
+#define __NR_futimesat				261
+#define __NR_newfstatat				262
+#define __NR_unlinkat				263
+#define __NR_renameat				264
+#define __NR_linkat					265
+#define __NR_symlinkat				266
+#define __NR_readlinkat				267
+#define __NR_fchmodat				268
+#define __NR_faccessat				269
+#define __NR_pselect6				270
+#define __NR_ppoll					271
+#define __NR_unshare				272
+#define __NR_set_robust_list		273
+#define __NR_get_robust_list		274
+#define __NR_splice					275
+#define __NR_tee					276
+#define __NR_sync_file_range		277
+#define __NR_vmsplice				278
+#define __NR_move_pages				279
+#define __NR_utimensat				280
+#define __NR_epoll_pwait			281
+#define __NR_signalfd				282
+#define __NR_timerfd_create			283
+#define __NR_eventfd				284
+#define __NR_fallocate				285
+#define __NR_timerfd_settime		286
+#define __NR_timerfd_gettime		287
+#define __NR_accept4				288
+#define __NR_signalfd4				289
+#define __NR_eventfd2				290
+#define __NR_epoll_create1			291
+#define __NR_dup3					292
+#define __NR_pipe2					293
+#define __NR_inotify_init1			294
+#define __NR_preadv					295
+#define __NR_pwritev				296
+#define __NR_rt_tgsigqueueinfo		297
+#define __NR_perf_event_open		298
+#define __NR_recvmmsg				299
+#define __NR_fanotify_init			300
+#define __NR_fanotify_mark			301
+#define __NR_prlimit64				302
+#define __NR_name_to_handle_at			303
+#define __NR_open_by_handle_at			304
+#define __NR_clock_adjtime			305
+#define __NR_syncfs				306
+#define __NR_sendmmsg				307
+#define __NR_setns				308
+#define __NR_getcpu				309
+#define __NR_process_vm_readv			310
+#define __NR_process_vm_writev			311
+#define __NR_kcmp				312
+#define __NR_finit_module			313
+#define __NR_sched_setattr			314
+#define __NR_sched_getattr			315
+#define __NR_renameat2				316
+#define __NR_seccomp				317
+#define __NR_getrandom				318
+#define __NR_memfd_create			319
+#define __NR_kexec_file_load			320
+#define __NR_bpf				321
+#define __NR_execveat				322
+#define __NR_userfaultfd			323
+#define __NR_membarrier				324
+#define __NR_mlock2				325
+#define __NR_copy_file_range			326
+#define __NR_preadv2				327
+#define __NR_pwritev2				328
+#define __NR_pkey_mprotect			329
+#define __NR_pkey_alloc				330
+#define __NR_pkey_free				331
+#define __NR_statx				332
+#define __NR_io_pgetevents			333
+#define __NR_rseq				334
+#define __NR_pidfd_send_signal			424
+#define __NR_io_uring_setup			425
+#define __NR_io_uring_enter			426
+#define __NR_io_uring_register			427
+#define __NR_open_tree		428
+#define __NR_move_mount		429
+#define __NR_fsopen		430
+#define __NR_fsconfig		431
+#define __NR_fsmount		432
+#define __NR_fspick		433
+#define __NR_pidfd_open		434
+#define __NR_clone3		435
+#define __NR_close_range	436
+#define __NR_openat2		437
+#define __NR_pidfd_getfd	438
+#define __NR_faccessat2		439
+#define __NR_process_madvise	440
+
+#define SYS_read				0
+#define SYS_write				1
+#define SYS_open				2
+#define SYS_close				3
+#define SYS_stat				4
+#define SYS_fstat				5
+#define SYS_lstat				6
+#define SYS_poll				7
+#define SYS_lseek				8
+#define SYS_mmap				9
+#define SYS_mprotect			10
+#define SYS_munmap				11
+#define SYS_brk				12
+#define SYS_rt_sigaction		13
+#define SYS_rt_sigprocmask		14
+#define SYS_rt_sigreturn		15
+#define SYS_ioctl				16
+#define SYS_pread64			17
+#define SYS_pwrite64			18
+#define SYS_readv				19
+#define SYS_writev				20
+#define SYS_access				21
+#define SYS_pipe				22
+#define SYS_select				23
+#define SYS_sched_yield		24
+#define SYS_mremap				25
+#define SYS_msync				26
+#define SYS_mincore			27
+#define SYS_madvise			28
+#define SYS_shmget				29
+#define SYS_shmat				30
+#define SYS_shmctl				31
+#define SYS_dup				32
+#define SYS_dup2				33
+#define SYS_pause				34
+#define SYS_nanosleep			35
+#define SYS_getitimer			36
+#define SYS_alarm				37
+#define SYS_setitimer			38
+#define SYS_getpid				39
+#define SYS_sendfile			40
+#define SYS_socket				41
+#define SYS_connect			42
+#define SYS_accept				43
+#define SYS_sendto				44
+#define SYS_recvfrom			45
+#define SYS_sendmsg			46
+#define SYS_recvmsg			47
+#define SYS_shutdown			48
+#define SYS_bind				49
+#define SYS_listen				50
+#define SYS_getsockname		51
+#define SYS_getpeername		52
+#define SYS_socketpair			53
+#define SYS_setsockopt			54
+#define SYS_getsockopt			55
+#define SYS_clone				56
+#define SYS_fork				57
+#define SYS_vfork				58
+#define SYS_execve				59
+#define SYS_exit				60
+#define SYS_wait4				61
+#define SYS_kill				62
+#define SYS_uname				63
+#define SYS_semget				64
+#define SYS_semop				65
+#define SYS_semctl				66
+#define SYS_shmdt				67
+#define SYS_msgget				68
+#define SYS_msgsnd				69
+#define SYS_msgrcv				70
+#define SYS_msgctl				71
+#define SYS_fcntl				72
+#define SYS_flock				73
+#define SYS_fsync				74
+#define SYS_fdatasync			75
+#define SYS_truncate			76
+#define SYS_ftruncate			77
+#define SYS_getdents			78
+#define SYS_getcwd				79
+#define SYS_chdir				80
+#define SYS_fchdir				81
+#define SYS_rename				82
+#define SYS_mkdir				83
+#define SYS_rmdir				84
+#define SYS_creat				85
+#define SYS_link				86
+#define SYS_unlink				87
+#define SYS_symlink			88
+#define SYS_readlink			89
+#define SYS_chmod				90
+#define SYS_fchmod				91
+#define SYS_chown				92
+#define SYS_fchown				93
+#define SYS_lchown				94
+#define SYS_umask				95
+#define SYS_gettimeofday		96
+#define SYS_getrlimit			97
+#define SYS_getrusage			98
+#define SYS_sysinfo			99
+#define SYS_times				100
+#define SYS_ptrace				101
+#define SYS_getuid				102
+#define SYS_syslog				103
+#define SYS_getgid				104
+#define SYS_setuid				105
+#define SYS_setgid				106
+#define SYS_geteuid			107
+#define SYS_getegid			108
+#define SYS_setpgid			109
+#define SYS_getppid			110
+#define SYS_getpgrp			111
+#define SYS_setsid				112
+#define SYS_setreuid			113
+#define SYS_setregid			114
+#define SYS_getgroups			115
+#define SYS_setgroups			116
+#define SYS_setresuid			117
+#define SYS_getresuid			118
+#define SYS_setresgid			119
+#define SYS_getresgid			120
+#define SYS_getpgid			121
+#define SYS_setfsuid			122
+#define SYS_setfsgid			123
+#define SYS_getsid				124
+#define SYS_capget				125
+#define SYS_capset				126
+#define SYS_rt_sigpending		127
+#define SYS_rt_sigtimedwait	128
+#define SYS_rt_sigqueueinfo	129
+#define SYS_rt_sigsuspend		130
+#define SYS_sigaltstack		131
+#define SYS_utime				132
+#define SYS_mknod				133
+#define SYS_uselib				134
+#define SYS_personality		135
+#define SYS_ustat				136
+#define SYS_statfs				137
+#define SYS_fstatfs			138
+#define SYS_sysfs				139
+#define SYS_getpriority			140
+#define SYS_setpriority			141
+#define SYS_sched_setparam			142
+#define SYS_sched_getparam			143
+#define SYS_sched_setscheduler		144
+#define SYS_sched_getscheduler		145
+#define SYS_sched_get_priority_max	146
+#define SYS_sched_get_priority_min	147
+#define SYS_sched_rr_get_interval	148
+#define SYS_mlock					149
+#define SYS_munlock				150
+#define SYS_mlockall				151
+#define SYS_munlockall				152
+#define SYS_vhangup				153
+#define SYS_modify_ldt				154
+#define SYS_pivot_root				155
+#define SYS__sysctl				156
+#define SYS_prctl					157
+#define SYS_arch_prctl				158
+#define SYS_adjtimex				159
+#define SYS_setrlimit				160
+#define SYS_chroot					161
+#define SYS_sync					162
+#define SYS_acct					163
+#define SYS_settimeofday			164
+#define SYS_mount					165
+#define SYS_umount2				166
+#define SYS_swapon					167
+#define SYS_swapoff				168
+#define SYS_reboot					169
+#define SYS_sethostname			170
+#define SYS_setdomainname			171
+#define SYS_iopl					172
+#define SYS_ioperm					173
+#define SYS_create_module			174
+#define SYS_init_module			175
+#define SYS_delete_module			176
+#define SYS_get_kernel_syms		177
+#define SYS_query_module			178
+#define SYS_quotactl				179
+#define SYS_nfsservctl				180
+#define SYS_getpmsg				181
+#define SYS_putpmsg				182
+#define SYS_afs_syscall			183
+#define SYS_tuxcall				184
+#define SYS_security				185
+#define SYS_gettid					186
+#define SYS_readahead				187
+#define SYS_setxattr				188
+#define SYS_lsetxattr				189
+#define SYS_fsetxattr				190
+#define SYS_getxattr				191
+#define SYS_lgetxattr				192
+#define SYS_fgetxattr				193
+#define SYS_listxattr				194
+#define SYS_llistxattr				195
+#define SYS_flistxattr				196
+#define SYS_removexattr			197
+#define SYS_lremovexattr			198
+#define SYS_fremovexattr			199
+#define SYS_tkill					200
+#define SYS_time					201
+#define SYS_futex					202
+#define SYS_sched_setaffinity		203
+#define SYS_sched_getaffinity		204
+#define SYS_set_thread_area		205
+#define SYS_io_setup				206
+#define SYS_io_destroy				207
+#define SYS_io_getevents			208
+#define SYS_io_submit				209
+#define SYS_io_cancel				210
+#define SYS_get_thread_area		211
+#define SYS_lookup_dcookie			212
+#define SYS_epoll_create			213
+#define SYS_epoll_ctl_old			214
+#define SYS_epoll_wait_old			215
+#define SYS_remap_file_pages		216
+#define SYS_getdents64				217
+#define SYS_set_tid_address		218
+#define SYS_restart_syscall		219
+#define SYS_semtimedop				220
+#define SYS_fadvise64				221
+#define SYS_timer_create			222
+#define SYS_timer_settime			223
+#define SYS_timer_gettime			224
+#define SYS_timer_getoverrun		225
+#define SYS_timer_delete			226
+#define SYS_clock_settime			227
+#define SYS_clock_gettime			228
+#define SYS_clock_getres			229
+#define SYS_clock_nanosleep		230
+#define SYS_exit_group				231
+#define SYS_epoll_wait				232
+#define SYS_epoll_ctl				233
+#define SYS_tgkill					234
+#define SYS_utimes					235
+#define SYS_vserver				236
+#define SYS_mbind					237
+#define SYS_set_mempolicy			238
+#define SYS_get_mempolicy			239
+#define SYS_mq_open				240
+#define SYS_mq_unlink				241
+#define SYS_mq_timedsend			242
+#define SYS_mq_timedreceive		243
+#define SYS_mq_notify				244
+#define SYS_mq_getsetattr			245
+#define SYS_kexec_load				246
+#define SYS_waitid					247
+#define SYS_add_key				248
+#define SYS_request_key			249
+#define SYS_keyctl					250
+#define SYS_ioprio_set				251
+#define SYS_ioprio_get				252
+#define SYS_inotify_init			253
+#define SYS_inotify_add_watch		254
+#define SYS_inotify_rm_watch		255
+#define SYS_migrate_pages			256
+#define SYS_openat					257
+#define SYS_mkdirat				258
+#define SYS_mknodat				259
+#define SYS_fchownat				260
+#define SYS_futimesat				261
+#define SYS_newfstatat				262
+#define SYS_unlinkat				263
+#define SYS_renameat				264
+#define SYS_linkat					265
+#define SYS_symlinkat				266
+#define SYS_readlinkat				267
+#define SYS_fchmodat				268
+#define SYS_faccessat				269
+#define SYS_pselect6				270
+#define SYS_ppoll					271
+#define SYS_unshare				272
+#define SYS_set_robust_list		273
+#define SYS_get_robust_list		274
+#define SYS_splice					275
+#define SYS_tee					276
+#define SYS_sync_file_range		277
+#define SYS_vmsplice				278
+#define SYS_move_pages				279
+#define SYS_utimensat				280
+#define SYS_epoll_pwait			281
+#define SYS_signalfd				282
+#define SYS_timerfd_create			283
+#define SYS_eventfd				284
+#define SYS_fallocate				285
+#define SYS_timerfd_settime		286
+#define SYS_timerfd_gettime		287
+#define SYS_accept4				288
+#define SYS_signalfd4				289
+#define SYS_eventfd2				290
+#define SYS_epoll_create1			291
+#define SYS_dup3					292
+#define SYS_pipe2					293
+#define SYS_inotify_init1			294
+#define SYS_preadv					295
+#define SYS_pwritev				296
+#define SYS_rt_tgsigqueueinfo		297
+#define SYS_perf_event_open		298
+#define SYS_recvmmsg				299
+#define SYS_fanotify_init			300
+#define SYS_fanotify_mark			301
+#define SYS_prlimit64				302
+#define SYS_name_to_handle_at			303
+#define SYS_open_by_handle_at			304
+#define SYS_clock_adjtime			305
+#define SYS_syncfs				306
+#define SYS_sendmmsg				307
+#define SYS_setns				308
+#define SYS_getcpu				309
+#define SYS_process_vm_readv			310
+#define SYS_process_vm_writev			311
+#define SYS_kcmp				312
+#define SYS_finit_module			313
+#define SYS_sched_setattr			314
+#define SYS_sched_getattr			315
+#define SYS_renameat2				316
+#define SYS_seccomp				317
+#define SYS_getrandom				318
+#define SYS_memfd_create			319
+#define SYS_kexec_file_load			320
+#define SYS_bpf				321
+#define SYS_execveat				322
+#define SYS_userfaultfd			323
+#define SYS_membarrier				324
+#define SYS_mlock2				325
+#define SYS_copy_file_range			326
+#define SYS_preadv2				327
+#define SYS_pwritev2				328
+#define SYS_pkey_mprotect			329
+#define SYS_pkey_alloc				330
+#define SYS_pkey_free				331
+#define SYS_statx				332
+#define SYS_io_pgetevents			333
+#define SYS_rseq				334
+#define SYS_pidfd_send_signal			424
+#define SYS_io_uring_setup			425
+#define SYS_io_uring_enter			426
+#define SYS_io_uring_register			427
+#define SYS_open_tree		428
+#define SYS_move_mount		429
+#define SYS_fsopen		430
+#define SYS_fsconfig		431
+#define SYS_fsmount		432
+#define SYS_fspick		433
+#define SYS_pidfd_open		434
+#define SYS_clone3		435
+#define SYS_close_range	436
+#define SYS_openat2		437
+#define SYS_pidfd_getfd	438
+#define SYS_faccessat2		439
+#define SYS_process_madvise	440
diff --git a/x86_64-linux-musl/include/bits/syscall.h.in b/x86_64-linux-musl/include/bits/syscall.h.in
new file mode 100644
index 0000000..e943883
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/syscall.h.in
@@ -0,0 +1,353 @@
+#define __NR_read				0
+#define __NR_write				1
+#define __NR_open				2
+#define __NR_close				3
+#define __NR_stat				4
+#define __NR_fstat				5
+#define __NR_lstat				6
+#define __NR_poll				7
+#define __NR_lseek				8
+#define __NR_mmap				9
+#define __NR_mprotect			10
+#define __NR_munmap				11
+#define __NR_brk				12
+#define __NR_rt_sigaction		13
+#define __NR_rt_sigprocmask		14
+#define __NR_rt_sigreturn		15
+#define __NR_ioctl				16
+#define __NR_pread64			17
+#define __NR_pwrite64			18
+#define __NR_readv				19
+#define __NR_writev				20
+#define __NR_access				21
+#define __NR_pipe				22
+#define __NR_select				23
+#define __NR_sched_yield		24
+#define __NR_mremap				25
+#define __NR_msync				26
+#define __NR_mincore			27
+#define __NR_madvise			28
+#define __NR_shmget				29
+#define __NR_shmat				30
+#define __NR_shmctl				31
+#define __NR_dup				32
+#define __NR_dup2				33
+#define __NR_pause				34
+#define __NR_nanosleep			35
+#define __NR_getitimer			36
+#define __NR_alarm				37
+#define __NR_setitimer			38
+#define __NR_getpid				39
+#define __NR_sendfile			40
+#define __NR_socket				41
+#define __NR_connect			42
+#define __NR_accept				43
+#define __NR_sendto				44
+#define __NR_recvfrom			45
+#define __NR_sendmsg			46
+#define __NR_recvmsg			47
+#define __NR_shutdown			48
+#define __NR_bind				49
+#define __NR_listen				50
+#define __NR_getsockname		51
+#define __NR_getpeername		52
+#define __NR_socketpair			53
+#define __NR_setsockopt			54
+#define __NR_getsockopt			55
+#define __NR_clone				56
+#define __NR_fork				57
+#define __NR_vfork				58
+#define __NR_execve				59
+#define __NR_exit				60
+#define __NR_wait4				61
+#define __NR_kill				62
+#define __NR_uname				63
+#define __NR_semget				64
+#define __NR_semop				65
+#define __NR_semctl				66
+#define __NR_shmdt				67
+#define __NR_msgget				68
+#define __NR_msgsnd				69
+#define __NR_msgrcv				70
+#define __NR_msgctl				71
+#define __NR_fcntl				72
+#define __NR_flock				73
+#define __NR_fsync				74
+#define __NR_fdatasync			75
+#define __NR_truncate			76
+#define __NR_ftruncate			77
+#define __NR_getdents			78
+#define __NR_getcwd				79
+#define __NR_chdir				80
+#define __NR_fchdir				81
+#define __NR_rename				82
+#define __NR_mkdir				83
+#define __NR_rmdir				84
+#define __NR_creat				85
+#define __NR_link				86
+#define __NR_unlink				87
+#define __NR_symlink			88
+#define __NR_readlink			89
+#define __NR_chmod				90
+#define __NR_fchmod				91
+#define __NR_chown				92
+#define __NR_fchown				93
+#define __NR_lchown				94
+#define __NR_umask				95
+#define __NR_gettimeofday		96
+#define __NR_getrlimit			97
+#define __NR_getrusage			98
+#define __NR_sysinfo			99
+#define __NR_times				100
+#define __NR_ptrace				101
+#define __NR_getuid				102
+#define __NR_syslog				103
+#define __NR_getgid				104
+#define __NR_setuid				105
+#define __NR_setgid				106
+#define __NR_geteuid			107
+#define __NR_getegid			108
+#define __NR_setpgid			109
+#define __NR_getppid			110
+#define __NR_getpgrp			111
+#define __NR_setsid				112
+#define __NR_setreuid			113
+#define __NR_setregid			114
+#define __NR_getgroups			115
+#define __NR_setgroups			116
+#define __NR_setresuid			117
+#define __NR_getresuid			118
+#define __NR_setresgid			119
+#define __NR_getresgid			120
+#define __NR_getpgid			121
+#define __NR_setfsuid			122
+#define __NR_setfsgid			123
+#define __NR_getsid				124
+#define __NR_capget				125
+#define __NR_capset				126
+#define __NR_rt_sigpending		127
+#define __NR_rt_sigtimedwait	128
+#define __NR_rt_sigqueueinfo	129
+#define __NR_rt_sigsuspend		130
+#define __NR_sigaltstack		131
+#define __NR_utime				132
+#define __NR_mknod				133
+#define __NR_uselib				134
+#define __NR_personality		135
+#define __NR_ustat				136
+#define __NR_statfs				137
+#define __NR_fstatfs			138
+#define __NR_sysfs				139
+#define __NR_getpriority			140
+#define __NR_setpriority			141
+#define __NR_sched_setparam			142
+#define __NR_sched_getparam			143
+#define __NR_sched_setscheduler		144
+#define __NR_sched_getscheduler		145
+#define __NR_sched_get_priority_max	146
+#define __NR_sched_get_priority_min	147
+#define __NR_sched_rr_get_interval	148
+#define __NR_mlock					149
+#define __NR_munlock				150
+#define __NR_mlockall				151
+#define __NR_munlockall				152
+#define __NR_vhangup				153
+#define __NR_modify_ldt				154
+#define __NR_pivot_root				155
+#define __NR__sysctl				156
+#define __NR_prctl					157
+#define __NR_arch_prctl				158
+#define __NR_adjtimex				159
+#define __NR_setrlimit				160
+#define __NR_chroot					161
+#define __NR_sync					162
+#define __NR_acct					163
+#define __NR_settimeofday			164
+#define __NR_mount					165
+#define __NR_umount2				166
+#define __NR_swapon					167
+#define __NR_swapoff				168
+#define __NR_reboot					169
+#define __NR_sethostname			170
+#define __NR_setdomainname			171
+#define __NR_iopl					172
+#define __NR_ioperm					173
+#define __NR_create_module			174
+#define __NR_init_module			175
+#define __NR_delete_module			176
+#define __NR_get_kernel_syms		177
+#define __NR_query_module			178
+#define __NR_quotactl				179
+#define __NR_nfsservctl				180
+#define __NR_getpmsg				181
+#define __NR_putpmsg				182
+#define __NR_afs_syscall			183
+#define __NR_tuxcall				184
+#define __NR_security				185
+#define __NR_gettid					186
+#define __NR_readahead				187
+#define __NR_setxattr				188
+#define __NR_lsetxattr				189
+#define __NR_fsetxattr				190
+#define __NR_getxattr				191
+#define __NR_lgetxattr				192
+#define __NR_fgetxattr				193
+#define __NR_listxattr				194
+#define __NR_llistxattr				195
+#define __NR_flistxattr				196
+#define __NR_removexattr			197
+#define __NR_lremovexattr			198
+#define __NR_fremovexattr			199
+#define __NR_tkill					200
+#define __NR_time					201
+#define __NR_futex					202
+#define __NR_sched_setaffinity		203
+#define __NR_sched_getaffinity		204
+#define __NR_set_thread_area		205
+#define __NR_io_setup				206
+#define __NR_io_destroy				207
+#define __NR_io_getevents			208
+#define __NR_io_submit				209
+#define __NR_io_cancel				210
+#define __NR_get_thread_area		211
+#define __NR_lookup_dcookie			212
+#define __NR_epoll_create			213
+#define __NR_epoll_ctl_old			214
+#define __NR_epoll_wait_old			215
+#define __NR_remap_file_pages		216
+#define __NR_getdents64				217
+#define __NR_set_tid_address		218
+#define __NR_restart_syscall		219
+#define __NR_semtimedop				220
+#define __NR_fadvise64				221
+#define __NR_timer_create			222
+#define __NR_timer_settime			223
+#define __NR_timer_gettime			224
+#define __NR_timer_getoverrun		225
+#define __NR_timer_delete			226
+#define __NR_clock_settime			227
+#define __NR_clock_gettime			228
+#define __NR_clock_getres			229
+#define __NR_clock_nanosleep		230
+#define __NR_exit_group				231
+#define __NR_epoll_wait				232
+#define __NR_epoll_ctl				233
+#define __NR_tgkill					234
+#define __NR_utimes					235
+#define __NR_vserver				236
+#define __NR_mbind					237
+#define __NR_set_mempolicy			238
+#define __NR_get_mempolicy			239
+#define __NR_mq_open				240
+#define __NR_mq_unlink				241
+#define __NR_mq_timedsend			242
+#define __NR_mq_timedreceive		243
+#define __NR_mq_notify				244
+#define __NR_mq_getsetattr			245
+#define __NR_kexec_load				246
+#define __NR_waitid					247
+#define __NR_add_key				248
+#define __NR_request_key			249
+#define __NR_keyctl					250
+#define __NR_ioprio_set				251
+#define __NR_ioprio_get				252
+#define __NR_inotify_init			253
+#define __NR_inotify_add_watch		254
+#define __NR_inotify_rm_watch		255
+#define __NR_migrate_pages			256
+#define __NR_openat					257
+#define __NR_mkdirat				258
+#define __NR_mknodat				259
+#define __NR_fchownat				260
+#define __NR_futimesat				261
+#define __NR_newfstatat				262
+#define __NR_unlinkat				263
+#define __NR_renameat				264
+#define __NR_linkat					265
+#define __NR_symlinkat				266
+#define __NR_readlinkat				267
+#define __NR_fchmodat				268
+#define __NR_faccessat				269
+#define __NR_pselect6				270
+#define __NR_ppoll					271
+#define __NR_unshare				272
+#define __NR_set_robust_list		273
+#define __NR_get_robust_list		274
+#define __NR_splice					275
+#define __NR_tee					276
+#define __NR_sync_file_range		277
+#define __NR_vmsplice				278
+#define __NR_move_pages				279
+#define __NR_utimensat				280
+#define __NR_epoll_pwait			281
+#define __NR_signalfd				282
+#define __NR_timerfd_create			283
+#define __NR_eventfd				284
+#define __NR_fallocate				285
+#define __NR_timerfd_settime		286
+#define __NR_timerfd_gettime		287
+#define __NR_accept4				288
+#define __NR_signalfd4				289
+#define __NR_eventfd2				290
+#define __NR_epoll_create1			291
+#define __NR_dup3					292
+#define __NR_pipe2					293
+#define __NR_inotify_init1			294
+#define __NR_preadv					295
+#define __NR_pwritev				296
+#define __NR_rt_tgsigqueueinfo		297
+#define __NR_perf_event_open		298
+#define __NR_recvmmsg				299
+#define __NR_fanotify_init			300
+#define __NR_fanotify_mark			301
+#define __NR_prlimit64				302
+#define __NR_name_to_handle_at			303
+#define __NR_open_by_handle_at			304
+#define __NR_clock_adjtime			305
+#define __NR_syncfs				306
+#define __NR_sendmmsg				307
+#define __NR_setns				308
+#define __NR_getcpu				309
+#define __NR_process_vm_readv			310
+#define __NR_process_vm_writev			311
+#define __NR_kcmp				312
+#define __NR_finit_module			313
+#define __NR_sched_setattr			314
+#define __NR_sched_getattr			315
+#define __NR_renameat2				316
+#define __NR_seccomp				317
+#define __NR_getrandom				318
+#define __NR_memfd_create			319
+#define __NR_kexec_file_load			320
+#define __NR_bpf				321
+#define __NR_execveat				322
+#define __NR_userfaultfd			323
+#define __NR_membarrier				324
+#define __NR_mlock2				325
+#define __NR_copy_file_range			326
+#define __NR_preadv2				327
+#define __NR_pwritev2				328
+#define __NR_pkey_mprotect			329
+#define __NR_pkey_alloc				330
+#define __NR_pkey_free				331
+#define __NR_statx				332
+#define __NR_io_pgetevents			333
+#define __NR_rseq				334
+#define __NR_pidfd_send_signal			424
+#define __NR_io_uring_setup			425
+#define __NR_io_uring_enter			426
+#define __NR_io_uring_register			427
+#define __NR_open_tree		428
+#define __NR_move_mount		429
+#define __NR_fsopen		430
+#define __NR_fsconfig		431
+#define __NR_fsmount		432
+#define __NR_fspick		433
+#define __NR_pidfd_open		434
+#define __NR_clone3		435
+#define __NR_close_range	436
+#define __NR_openat2		437
+#define __NR_pidfd_getfd	438
+#define __NR_faccessat2		439
+#define __NR_process_madvise	440
+
diff --git a/x86_64-linux-musl/include/bits/termios.h b/x86_64-linux-musl/include/bits/termios.h
new file mode 100644
index 0000000..124f71d
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/termios.h
@@ -0,0 +1,166 @@
+struct termios {
+	tcflag_t c_iflag;
+	tcflag_t c_oflag;
+	tcflag_t c_cflag;
+	tcflag_t c_lflag;
+	cc_t c_line;
+	cc_t c_cc[NCCS];
+	speed_t __c_ispeed;
+	speed_t __c_ospeed;
+};
+
+#define VINTR     0
+#define VQUIT     1
+#define VERASE    2
+#define VKILL     3
+#define VEOF      4
+#define VTIME     5
+#define VMIN      6
+#define VSWTC     7
+#define VSTART    8
+#define VSTOP     9
+#define VSUSP    10
+#define VEOL     11
+#define VREPRINT 12
+#define VDISCARD 13
+#define VWERASE  14
+#define VLNEXT   15
+#define VEOL2    16
+
+#define IGNBRK  0000001
+#define BRKINT  0000002
+#define IGNPAR  0000004
+#define PARMRK  0000010
+#define INPCK   0000020
+#define ISTRIP  0000040
+#define INLCR   0000100
+#define IGNCR   0000200
+#define ICRNL   0000400
+#define IUCLC   0001000
+#define IXON    0002000
+#define IXANY   0004000
+#define IXOFF   0010000
+#define IMAXBEL 0020000
+#define IUTF8   0040000
+
+#define OPOST  0000001
+#define OLCUC  0000002
+#define ONLCR  0000004
+#define OCRNL  0000010
+#define ONOCR  0000020
+#define ONLRET 0000040
+#define OFILL  0000100
+#define OFDEL  0000200
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_XOPEN_SOURCE)
+#define NLDLY  0000400
+#define NL0    0000000
+#define NL1    0000400
+#define CRDLY  0003000
+#define CR0    0000000
+#define CR1    0001000
+#define CR2    0002000
+#define CR3    0003000
+#define TABDLY 0014000
+#define TAB0   0000000
+#define TAB1   0004000
+#define TAB2   0010000
+#define TAB3   0014000
+#define BSDLY  0020000
+#define BS0    0000000
+#define BS1    0020000
+#define FFDLY  0100000
+#define FF0    0000000
+#define FF1    0100000
+#endif
+
+#define VTDLY  0040000
+#define VT0    0000000
+#define VT1    0040000
+
+#define B0       0000000
+#define B50      0000001
+#define B75      0000002
+#define B110     0000003
+#define B134     0000004
+#define B150     0000005
+#define B200     0000006
+#define B300     0000007
+#define B600     0000010
+#define B1200    0000011
+#define B1800    0000012
+#define B2400    0000013
+#define B4800    0000014
+#define B9600    0000015
+#define B19200   0000016
+#define B38400   0000017
+
+#define B57600   0010001
+#define B115200  0010002
+#define B230400  0010003
+#define B460800  0010004
+#define B500000  0010005
+#define B576000  0010006
+#define B921600  0010007
+#define B1000000 0010010
+#define B1152000 0010011
+#define B1500000 0010012
+#define B2000000 0010013
+#define B2500000 0010014
+#define B3000000 0010015
+#define B3500000 0010016
+#define B4000000 0010017
+
+#define CSIZE  0000060
+#define CS5    0000000
+#define CS6    0000020
+#define CS7    0000040
+#define CS8    0000060
+#define CSTOPB 0000100
+#define CREAD  0000200
+#define PARENB 0000400
+#define PARODD 0001000
+#define HUPCL  0002000
+#define CLOCAL 0004000
+
+#define ISIG   0000001
+#define ICANON 0000002
+#define ECHO   0000010
+#define ECHOE  0000020
+#define ECHOK  0000040
+#define ECHONL 0000100
+#define NOFLSH 0000200
+#define TOSTOP 0000400
+#define IEXTEN 0100000
+
+#define TCOOFF 0
+#define TCOON  1
+#define TCIOFF 2
+#define TCION  3
+
+#define TCIFLUSH  0
+#define TCOFLUSH  1
+#define TCIOFLUSH 2
+
+#define TCSANOW   0
+#define TCSADRAIN 1
+#define TCSAFLUSH 2
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define EXTA    0000016
+#define EXTB    0000017
+#define CBAUD   0010017
+#define CBAUDEX 0010000
+#define CIBAUD  002003600000
+#define CMSPAR  010000000000
+#define CRTSCTS 020000000000
+
+#define XCASE   0000004
+#define ECHOCTL 0001000
+#define ECHOPRT 0002000
+#define ECHOKE  0004000
+#define FLUSHO  0010000
+#define PENDIN  0040000
+#define EXTPROC 0200000
+
+#define XTABS  0014000
+#endif
diff --git a/x86_64-linux-musl/include/bits/user.h b/x86_64-linux-musl/include/bits/user.h
new file mode 100644
index 0000000..4073cc0
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/user.h
@@ -0,0 +1,41 @@
+#undef __WORDSIZE
+#define __WORDSIZE 64
+
+typedef struct user_fpregs_struct {
+	uint16_t cwd, swd, ftw, fop;
+	uint64_t rip, rdp;
+	uint32_t mxcsr, mxcr_mask;
+	uint32_t st_space[32], xmm_space[64], padding[24];
+} elf_fpregset_t;
+
+struct user_regs_struct {
+	unsigned long r15, r14, r13, r12, rbp, rbx, r11, r10, r9, r8;
+	unsigned long rax, rcx, rdx, rsi, rdi, orig_rax, rip;
+	unsigned long cs, eflags, rsp, ss, fs_base, gs_base, ds, es, fs, gs;
+};
+#define ELF_NGREG 27
+typedef unsigned long long elf_greg_t, elf_gregset_t[ELF_NGREG];
+
+struct user {
+	struct user_regs_struct		regs;
+	int				u_fpvalid;
+	struct user_fpregs_struct	i387;
+	unsigned long			u_tsize;
+	unsigned long			u_dsize;
+	unsigned long			u_ssize;
+	unsigned long			start_code;
+	unsigned long			start_stack;
+	long				signal;
+	int				reserved;
+	struct user_regs_struct		*u_ar0;
+	struct user_fpregs_struct	*u_fpstate;
+	unsigned long			magic;
+	char				u_comm[32];
+	unsigned long			u_debugreg[8];
+};
+
+#define PAGE_MASK		(~(PAGESIZE-1))
+#define NBPG			PAGESIZE
+#define UPAGES			1
+#define HOST_TEXT_START_ADDR	(u.start_code)
+#define HOST_STACK_END_ADDR	(u.start_stack + u.u_ssize * NBPG)
diff --git a/x86_64-linux-musl/include/bits/vt.h b/x86_64-linux-musl/include/bits/vt.h
new file mode 100644
index 0000000..834abfb
--- /dev/null
+++ b/x86_64-linux-musl/include/bits/vt.h
@@ -0,0 +1 @@
+#include <linux/vt.h>
diff --git a/x86_64-linux-musl/include/byteswap.h b/x86_64-linux-musl/include/byteswap.h
new file mode 100644
index 0000000..00b9df3
--- /dev/null
+++ b/x86_64-linux-musl/include/byteswap.h
@@ -0,0 +1,26 @@
+#ifndef _BYTESWAP_H
+#define _BYTESWAP_H
+
+#include <features.h>
+#include <stdint.h>
+
+static __inline uint16_t __bswap_16(uint16_t __x)
+{
+	return __x<<8 | __x>>8;
+}
+
+static __inline uint32_t __bswap_32(uint32_t __x)
+{
+	return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
+}
+
+static __inline uint64_t __bswap_64(uint64_t __x)
+{
+	return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
+}
+
+#define bswap_16(x) __bswap_16(x)
+#define bswap_32(x) __bswap_32(x)
+#define bswap_64(x) __bswap_64(x)
+
+#endif
diff --git a/x86_64-linux-musl/include/complex.h b/x86_64-linux-musl/include/complex.h
new file mode 100644
index 0000000..008b3c7
--- /dev/null
+++ b/x86_64-linux-musl/include/complex.h
@@ -0,0 +1,133 @@
+#ifndef _COMPLEX_H
+#define _COMPLEX_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define complex _Complex
+#ifdef __GNUC__
+#define _Complex_I (__extension__ (0.0f+1.0fi))
+#else
+#define _Complex_I (0.0f+1.0fi)
+#endif
+#define I _Complex_I
+
+double complex cacos(double complex);
+float complex cacosf(float complex);
+long double complex cacosl(long double complex);
+
+double complex casin(double complex);
+float complex casinf(float complex);
+long double complex casinl(long double complex);
+
+double complex catan(double complex);
+float complex catanf(float complex);
+long double complex catanl(long double complex);
+
+double complex ccos(double complex);
+float complex ccosf(float complex);
+long double complex ccosl(long double complex);
+
+double complex csin(double complex);
+float complex csinf(float complex);
+long double complex csinl(long double complex);
+
+double complex ctan(double complex);
+float complex ctanf(float complex);
+long double complex ctanl(long double complex);
+
+double complex cacosh(double complex);
+float complex cacoshf(float complex);
+long double complex cacoshl(long double complex);
+
+double complex casinh(double complex);
+float complex casinhf(float complex);
+long double complex casinhl(long double complex);
+
+double complex catanh(double complex);
+float complex catanhf(float complex);
+long double complex catanhl(long double complex);
+
+double complex ccosh(double complex);
+float complex ccoshf(float complex);
+long double complex ccoshl(long double complex);
+
+double complex csinh(double complex);
+float complex csinhf(float complex);
+long double complex csinhl(long double complex);
+
+double complex ctanh(double complex);
+float complex ctanhf(float complex);
+long double complex ctanhl(long double complex);
+
+double complex cexp(double complex);
+float complex cexpf(float complex);
+long double complex cexpl(long double complex);
+
+double complex clog(double complex);
+float complex clogf(float complex);
+long double complex clogl(long double complex);
+
+double cabs(double complex);
+float cabsf(float complex);
+long double cabsl(long double complex);
+
+double complex cpow(double complex, double complex);
+float complex cpowf(float complex, float complex);
+long double complex cpowl(long double complex, long double complex);
+
+double complex csqrt(double complex);
+float complex csqrtf(float complex);
+long double complex csqrtl(long double complex);
+
+double carg(double complex);
+float cargf(float complex);
+long double cargl(long double complex);
+
+double cimag(double complex);
+float cimagf(float complex);
+long double cimagl(long double complex);
+
+double complex conj(double complex);
+float complex conjf(float complex);
+long double complex conjl(long double complex);
+
+double complex cproj(double complex);
+float complex cprojf(float complex);
+long double complex cprojl(long double complex);
+
+double creal(double complex);
+float crealf(float complex);
+long double creall(long double complex);
+
+#ifndef __cplusplus
+#define __CIMAG(x, t) \
+	(+(union { _Complex t __z; t __xy[2]; }){(_Complex t)(x)}.__xy[1])
+
+#define creal(x) ((double)(x))
+#define crealf(x) ((float)(x))
+#define creall(x) ((long double)(x))
+
+#define cimag(x) __CIMAG(x, double)
+#define cimagf(x) __CIMAG(x, float)
+#define cimagl(x) __CIMAG(x, long double)
+#endif
+
+#if __STDC_VERSION__ >= 201112L
+#if defined(_Imaginary_I)
+#define __CMPLX(x, y, t) ((t)(x) + _Imaginary_I*(t)(y))
+#elif defined(__clang__)
+#define __CMPLX(x, y, t) (+(_Complex t){ (t)(x), (t)(y) })
+#else
+#define __CMPLX(x, y, t) (__builtin_complex((t)(x), (t)(y)))
+#endif
+#define CMPLX(x, y) __CMPLX(x, y, double)
+#define CMPLXF(x, y) __CMPLX(x, y, float)
+#define CMPLXL(x, y) __CMPLX(x, y, long double)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/cpio.h b/x86_64-linux-musl/include/cpio.h
new file mode 100644
index 0000000..39a1f8b
--- /dev/null
+++ b/x86_64-linux-musl/include/cpio.h
@@ -0,0 +1,29 @@
+#ifndef _CPIO_H
+#define _CPIO_H
+
+#define MAGIC "070707"
+
+#define C_IRUSR  000400
+#define C_IWUSR  000200
+#define C_IXUSR  000100
+#define C_IRGRP  000040
+#define C_IWGRP  000020
+#define C_IXGRP  000010
+#define C_IROTH  000004
+#define C_IWOTH  000002
+#define C_IXOTH  000001
+
+#define C_ISUID  004000
+#define C_ISGID  002000
+#define C_ISVTX  001000
+
+#define C_ISBLK  060000
+#define C_ISCHR  020000
+#define C_ISDIR  040000
+#define C_ISFIFO 010000
+#define C_ISSOCK 0140000
+#define C_ISLNK  0120000
+#define C_ISCTG  0110000
+#define C_ISREG  0100000
+
+#endif
diff --git a/x86_64-linux-musl/include/crypt.h b/x86_64-linux-musl/include/crypt.h
new file mode 100644
index 0000000..07de216
--- /dev/null
+++ b/x86_64-linux-musl/include/crypt.h
@@ -0,0 +1,20 @@
+#ifndef _CRYPT_H
+#define _CRYPT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct crypt_data {
+	int initialized;
+	char __buf[256];
+};
+
+char *crypt(const char *, const char *);
+char *crypt_r(const char *, const char *, struct crypt_data *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/ctype.h b/x86_64-linux-musl/include/ctype.h
new file mode 100644
index 0000000..32bcef4
--- /dev/null
+++ b/x86_64-linux-musl/include/ctype.h
@@ -0,0 +1,77 @@
+#ifndef	_CTYPE_H
+#define	_CTYPE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+int   isalnum(int);
+int   isalpha(int);
+int   isblank(int);
+int   iscntrl(int);
+int   isdigit(int);
+int   isgraph(int);
+int   islower(int);
+int   isprint(int);
+int   ispunct(int);
+int   isspace(int);
+int   isupper(int);
+int   isxdigit(int);
+int   tolower(int);
+int   toupper(int);
+
+#ifndef __cplusplus
+static __inline int __isspace(int _c)
+{
+	return _c == ' ' || (unsigned)_c-'\t' < 5;
+}
+
+#define isalpha(a) (0 ? isalpha(a) : (((unsigned)(a)|32)-'a') < 26)
+#define isdigit(a) (0 ? isdigit(a) : ((unsigned)(a)-'0') < 10)
+#define islower(a) (0 ? islower(a) : ((unsigned)(a)-'a') < 26)
+#define isupper(a) (0 ? isupper(a) : ((unsigned)(a)-'A') < 26)
+#define isprint(a) (0 ? isprint(a) : ((unsigned)(a)-0x20) < 0x5f)
+#define isgraph(a) (0 ? isgraph(a) : ((unsigned)(a)-0x21) < 0x5e)
+#define isspace(a) __isspace(a)
+#endif
+
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+
+#define __NEED_locale_t
+#include <bits/alltypes.h>
+
+int   isalnum_l(int, locale_t);
+int   isalpha_l(int, locale_t);
+int   isblank_l(int, locale_t);
+int   iscntrl_l(int, locale_t);
+int   isdigit_l(int, locale_t);
+int   isgraph_l(int, locale_t);
+int   islower_l(int, locale_t);
+int   isprint_l(int, locale_t);
+int   ispunct_l(int, locale_t);
+int   isspace_l(int, locale_t);
+int   isupper_l(int, locale_t);
+int   isxdigit_l(int, locale_t);
+int   tolower_l(int, locale_t);
+int   toupper_l(int, locale_t);
+
+int   isascii(int);
+int   toascii(int);
+#define _tolower(a) ((a)|0x20)
+#define _toupper(a) ((a)&0x5f)
+#ifndef __cplusplus
+#define isascii(a) (0 ? isascii(a) : (unsigned)(a) < 128)
+#endif
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/dirent.h b/x86_64-linux-musl/include/dirent.h
new file mode 100644
index 0000000..650ecf6
--- /dev/null
+++ b/x86_64-linux-musl/include/dirent.h
@@ -0,0 +1,75 @@
+#ifndef	_DIRENT_H
+#define	_DIRENT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_ino_t
+#define __NEED_off_t
+#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
+#define __NEED_size_t
+#endif
+
+#include <bits/alltypes.h>
+
+#include <bits/dirent.h>
+
+typedef struct __dirstream DIR;
+
+#define d_fileno d_ino
+
+int            closedir(DIR *);
+DIR           *fdopendir(int);
+DIR           *opendir(const char *);
+struct dirent *readdir(DIR *);
+int            readdir_r(DIR *__restrict, struct dirent *__restrict, struct dirent **__restrict);
+void           rewinddir(DIR *);
+int            dirfd(DIR *);
+
+int alphasort(const struct dirent **, const struct dirent **);
+int scandir(const char *, struct dirent ***, int (*)(const struct dirent *), int (*)(const struct dirent **, const struct dirent **));
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+void           seekdir(DIR *, long);
+long           telldir(DIR *);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define DT_UNKNOWN 0
+#define DT_FIFO 1
+#define DT_CHR 2
+#define DT_DIR 4
+#define DT_BLK 6
+#define DT_REG 8
+#define DT_LNK 10
+#define DT_SOCK 12
+#define DT_WHT 14
+#define IFTODT(x) ((x)>>12 & 017)
+#define DTTOIF(x) ((x)<<12)
+int getdents(int, struct dirent *, size_t);
+#endif
+
+#ifdef _GNU_SOURCE
+int versionsort(const struct dirent **, const struct dirent **);
+#endif
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define dirent64 dirent
+#define readdir64 readdir
+#define readdir64_r readdir_r
+#define scandir64 scandir
+#define alphasort64 alphasort
+#define versionsort64 versionsort
+#define off64_t off_t
+#define ino64_t ino_t
+#define getdents64 getdents
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/dlfcn.h b/x86_64-linux-musl/include/dlfcn.h
new file mode 100644
index 0000000..13ab71d
--- /dev/null
+++ b/x86_64-linux-musl/include/dlfcn.h
@@ -0,0 +1,46 @@
+#ifndef	_DLFCN_H
+#define	_DLFCN_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define RTLD_LAZY   1
+#define RTLD_NOW    2
+#define RTLD_NOLOAD 4
+#define RTLD_NODELETE 4096
+#define RTLD_GLOBAL 256
+#define RTLD_LOCAL  0
+
+#define RTLD_NEXT    ((void *)-1)
+#define RTLD_DEFAULT ((void *)0)
+
+#define RTLD_DI_LINKMAP 2
+
+int    dlclose(void *);
+char  *dlerror(void);
+void  *dlopen(const char *, int);
+void  *dlsym(void *__restrict, const char *__restrict);
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+typedef struct {
+	const char *dli_fname;
+	void *dli_fbase;
+	const char *dli_sname;
+	void *dli_saddr;
+} Dl_info;
+int dladdr(const void *, Dl_info *);
+int dlinfo(void *, int, void *);
+#endif
+
+#if _REDIR_TIME64
+__REDIR(dlsym, __dlsym_time64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/drm/amdgpu_drm.h b/x86_64-linux-musl/include/drm/amdgpu_drm.h
new file mode 100644
index 0000000..3764d51
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/amdgpu_drm.h
@@ -0,0 +1,688 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __AMDGPU_DRM_H__
+#define __AMDGPU_DRM_H__
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_AMDGPU_GEM_CREATE 0x00
+#define DRM_AMDGPU_GEM_MMAP 0x01
+#define DRM_AMDGPU_CTX 0x02
+#define DRM_AMDGPU_BO_LIST 0x03
+#define DRM_AMDGPU_CS 0x04
+#define DRM_AMDGPU_INFO 0x05
+#define DRM_AMDGPU_GEM_METADATA 0x06
+#define DRM_AMDGPU_GEM_WAIT_IDLE 0x07
+#define DRM_AMDGPU_GEM_VA 0x08
+#define DRM_AMDGPU_WAIT_CS 0x09
+#define DRM_AMDGPU_GEM_OP 0x10
+#define DRM_AMDGPU_GEM_USERPTR 0x11
+#define DRM_AMDGPU_WAIT_FENCES 0x12
+#define DRM_AMDGPU_VM 0x13
+#define DRM_AMDGPU_FENCE_TO_HANDLE 0x14
+#define DRM_AMDGPU_SCHED 0x15
+#define DRM_IOCTL_AMDGPU_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_CREATE, union drm_amdgpu_gem_create)
+#define DRM_IOCTL_AMDGPU_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_MMAP, union drm_amdgpu_gem_mmap)
+#define DRM_IOCTL_AMDGPU_CTX DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_CTX, union drm_amdgpu_ctx)
+#define DRM_IOCTL_AMDGPU_BO_LIST DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_BO_LIST, union drm_amdgpu_bo_list)
+#define DRM_IOCTL_AMDGPU_CS DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_CS, union drm_amdgpu_cs)
+#define DRM_IOCTL_AMDGPU_INFO DRM_IOW(DRM_COMMAND_BASE + DRM_AMDGPU_INFO, struct drm_amdgpu_info)
+#define DRM_IOCTL_AMDGPU_GEM_METADATA DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_METADATA, struct drm_amdgpu_gem_metadata)
+#define DRM_IOCTL_AMDGPU_GEM_WAIT_IDLE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_WAIT_IDLE, union drm_amdgpu_gem_wait_idle)
+#define DRM_IOCTL_AMDGPU_GEM_VA DRM_IOW(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_VA, struct drm_amdgpu_gem_va)
+#define DRM_IOCTL_AMDGPU_WAIT_CS DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_WAIT_CS, union drm_amdgpu_wait_cs)
+#define DRM_IOCTL_AMDGPU_GEM_OP DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_OP, struct drm_amdgpu_gem_op)
+#define DRM_IOCTL_AMDGPU_GEM_USERPTR DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_USERPTR, struct drm_amdgpu_gem_userptr)
+#define DRM_IOCTL_AMDGPU_WAIT_FENCES DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_WAIT_FENCES, union drm_amdgpu_wait_fences)
+#define DRM_IOCTL_AMDGPU_VM DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_VM, union drm_amdgpu_vm)
+#define DRM_IOCTL_AMDGPU_FENCE_TO_HANDLE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_FENCE_TO_HANDLE, union drm_amdgpu_fence_to_handle)
+#define DRM_IOCTL_AMDGPU_SCHED DRM_IOW(DRM_COMMAND_BASE + DRM_AMDGPU_SCHED, union drm_amdgpu_sched)
+#define AMDGPU_GEM_DOMAIN_CPU 0x1
+#define AMDGPU_GEM_DOMAIN_GTT 0x2
+#define AMDGPU_GEM_DOMAIN_VRAM 0x4
+#define AMDGPU_GEM_DOMAIN_GDS 0x8
+#define AMDGPU_GEM_DOMAIN_GWS 0x10
+#define AMDGPU_GEM_DOMAIN_OA 0x20
+#define AMDGPU_GEM_DOMAIN_MASK (AMDGPU_GEM_DOMAIN_CPU | AMDGPU_GEM_DOMAIN_GTT | AMDGPU_GEM_DOMAIN_VRAM | AMDGPU_GEM_DOMAIN_GDS | AMDGPU_GEM_DOMAIN_GWS | AMDGPU_GEM_DOMAIN_OA)
+#define AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED (1 << 0)
+#define AMDGPU_GEM_CREATE_NO_CPU_ACCESS (1 << 1)
+#define AMDGPU_GEM_CREATE_CPU_GTT_USWC (1 << 2)
+#define AMDGPU_GEM_CREATE_VRAM_CLEARED (1 << 3)
+#define AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS (1 << 5)
+#define AMDGPU_GEM_CREATE_VM_ALWAYS_VALID (1 << 6)
+#define AMDGPU_GEM_CREATE_EXPLICIT_SYNC (1 << 7)
+#define AMDGPU_GEM_CREATE_CP_MQD_GFX9 (1 << 8)
+#define AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE (1 << 9)
+#define AMDGPU_GEM_CREATE_ENCRYPTED (1 << 10)
+#define AMDGPU_GEM_CREATE_PREEMPTIBLE (1 << 11)
+struct drm_amdgpu_gem_create_in {
+  __u64 bo_size;
+  __u64 alignment;
+  __u64 domains;
+  __u64 domain_flags;
+};
+struct drm_amdgpu_gem_create_out {
+  __u32 handle;
+  __u32 _pad;
+};
+union drm_amdgpu_gem_create {
+  struct drm_amdgpu_gem_create_in in;
+  struct drm_amdgpu_gem_create_out out;
+};
+#define AMDGPU_BO_LIST_OP_CREATE 0
+#define AMDGPU_BO_LIST_OP_DESTROY 1
+#define AMDGPU_BO_LIST_OP_UPDATE 2
+struct drm_amdgpu_bo_list_in {
+  __u32 operation;
+  __u32 list_handle;
+  __u32 bo_number;
+  __u32 bo_info_size;
+  __u64 bo_info_ptr;
+};
+struct drm_amdgpu_bo_list_entry {
+  __u32 bo_handle;
+  __u32 bo_priority;
+};
+struct drm_amdgpu_bo_list_out {
+  __u32 list_handle;
+  __u32 _pad;
+};
+union drm_amdgpu_bo_list {
+  struct drm_amdgpu_bo_list_in in;
+  struct drm_amdgpu_bo_list_out out;
+};
+#define AMDGPU_CTX_OP_ALLOC_CTX 1
+#define AMDGPU_CTX_OP_FREE_CTX 2
+#define AMDGPU_CTX_OP_QUERY_STATE 3
+#define AMDGPU_CTX_OP_QUERY_STATE2 4
+#define AMDGPU_CTX_NO_RESET 0
+#define AMDGPU_CTX_GUILTY_RESET 1
+#define AMDGPU_CTX_INNOCENT_RESET 2
+#define AMDGPU_CTX_UNKNOWN_RESET 3
+#define AMDGPU_CTX_QUERY2_FLAGS_RESET (1 << 0)
+#define AMDGPU_CTX_QUERY2_FLAGS_VRAMLOST (1 << 1)
+#define AMDGPU_CTX_QUERY2_FLAGS_GUILTY (1 << 2)
+#define AMDGPU_CTX_QUERY2_FLAGS_RAS_CE (1 << 3)
+#define AMDGPU_CTX_QUERY2_FLAGS_RAS_UE (1 << 4)
+#define AMDGPU_CTX_PRIORITY_UNSET - 2048
+#define AMDGPU_CTX_PRIORITY_VERY_LOW - 1023
+#define AMDGPU_CTX_PRIORITY_LOW - 512
+#define AMDGPU_CTX_PRIORITY_NORMAL 0
+#define AMDGPU_CTX_PRIORITY_HIGH 512
+#define AMDGPU_CTX_PRIORITY_VERY_HIGH 1023
+struct drm_amdgpu_ctx_in {
+  __u32 op;
+  __u32 flags;
+  __u32 ctx_id;
+  __s32 priority;
+};
+union drm_amdgpu_ctx_out {
+  struct {
+    __u32 ctx_id;
+    __u32 _pad;
+  } alloc;
+  struct {
+    __u64 flags;
+    __u32 hangs;
+    __u32 reset_status;
+  } state;
+};
+union drm_amdgpu_ctx {
+  struct drm_amdgpu_ctx_in in;
+  union drm_amdgpu_ctx_out out;
+};
+#define AMDGPU_VM_OP_RESERVE_VMID 1
+#define AMDGPU_VM_OP_UNRESERVE_VMID 2
+struct drm_amdgpu_vm_in {
+  __u32 op;
+  __u32 flags;
+};
+struct drm_amdgpu_vm_out {
+  __u64 flags;
+};
+union drm_amdgpu_vm {
+  struct drm_amdgpu_vm_in in;
+  struct drm_amdgpu_vm_out out;
+};
+#define AMDGPU_SCHED_OP_PROCESS_PRIORITY_OVERRIDE 1
+#define AMDGPU_SCHED_OP_CONTEXT_PRIORITY_OVERRIDE 2
+struct drm_amdgpu_sched_in {
+  __u32 op;
+  __u32 fd;
+  __s32 priority;
+  __u32 ctx_id;
+};
+union drm_amdgpu_sched {
+  struct drm_amdgpu_sched_in in;
+};
+#define AMDGPU_GEM_USERPTR_READONLY (1 << 0)
+#define AMDGPU_GEM_USERPTR_ANONONLY (1 << 1)
+#define AMDGPU_GEM_USERPTR_VALIDATE (1 << 2)
+#define AMDGPU_GEM_USERPTR_REGISTER (1 << 3)
+struct drm_amdgpu_gem_userptr {
+  __u64 addr;
+  __u64 size;
+  __u32 flags;
+  __u32 handle;
+};
+#define AMDGPU_TILING_ARRAY_MODE_SHIFT 0
+#define AMDGPU_TILING_ARRAY_MODE_MASK 0xf
+#define AMDGPU_TILING_PIPE_CONFIG_SHIFT 4
+#define AMDGPU_TILING_PIPE_CONFIG_MASK 0x1f
+#define AMDGPU_TILING_TILE_SPLIT_SHIFT 9
+#define AMDGPU_TILING_TILE_SPLIT_MASK 0x7
+#define AMDGPU_TILING_MICRO_TILE_MODE_SHIFT 12
+#define AMDGPU_TILING_MICRO_TILE_MODE_MASK 0x7
+#define AMDGPU_TILING_BANK_WIDTH_SHIFT 15
+#define AMDGPU_TILING_BANK_WIDTH_MASK 0x3
+#define AMDGPU_TILING_BANK_HEIGHT_SHIFT 17
+#define AMDGPU_TILING_BANK_HEIGHT_MASK 0x3
+#define AMDGPU_TILING_MACRO_TILE_ASPECT_SHIFT 19
+#define AMDGPU_TILING_MACRO_TILE_ASPECT_MASK 0x3
+#define AMDGPU_TILING_NUM_BANKS_SHIFT 21
+#define AMDGPU_TILING_NUM_BANKS_MASK 0x3
+#define AMDGPU_TILING_SWIZZLE_MODE_SHIFT 0
+#define AMDGPU_TILING_SWIZZLE_MODE_MASK 0x1f
+#define AMDGPU_TILING_DCC_OFFSET_256B_SHIFT 5
+#define AMDGPU_TILING_DCC_OFFSET_256B_MASK 0xFFFFFF
+#define AMDGPU_TILING_DCC_PITCH_MAX_SHIFT 29
+#define AMDGPU_TILING_DCC_PITCH_MAX_MASK 0x3FFF
+#define AMDGPU_TILING_DCC_INDEPENDENT_64B_SHIFT 43
+#define AMDGPU_TILING_DCC_INDEPENDENT_64B_MASK 0x1
+#define AMDGPU_TILING_DCC_INDEPENDENT_128B_SHIFT 44
+#define AMDGPU_TILING_DCC_INDEPENDENT_128B_MASK 0x1
+#define AMDGPU_TILING_SCANOUT_SHIFT 63
+#define AMDGPU_TILING_SCANOUT_MASK 0x1
+#define AMDGPU_TILING_SET(field,value) (((__u64) (value) & AMDGPU_TILING_ ##field ##_MASK) << AMDGPU_TILING_ ##field ##_SHIFT)
+#define AMDGPU_TILING_GET(value,field) (((__u64) (value) >> AMDGPU_TILING_ ##field ##_SHIFT) & AMDGPU_TILING_ ##field ##_MASK)
+#define AMDGPU_GEM_METADATA_OP_SET_METADATA 1
+#define AMDGPU_GEM_METADATA_OP_GET_METADATA 2
+struct drm_amdgpu_gem_metadata {
+  __u32 handle;
+  __u32 op;
+  struct {
+    __u64 flags;
+    __u64 tiling_info;
+    __u32 data_size_bytes;
+    __u32 data[64];
+  } data;
+};
+struct drm_amdgpu_gem_mmap_in {
+  __u32 handle;
+  __u32 _pad;
+};
+struct drm_amdgpu_gem_mmap_out {
+  __u64 addr_ptr;
+};
+union drm_amdgpu_gem_mmap {
+  struct drm_amdgpu_gem_mmap_in in;
+  struct drm_amdgpu_gem_mmap_out out;
+};
+struct drm_amdgpu_gem_wait_idle_in {
+  __u32 handle;
+  __u32 flags;
+  __u64 timeout;
+};
+struct drm_amdgpu_gem_wait_idle_out {
+  __u32 status;
+  __u32 domain;
+};
+union drm_amdgpu_gem_wait_idle {
+  struct drm_amdgpu_gem_wait_idle_in in;
+  struct drm_amdgpu_gem_wait_idle_out out;
+};
+struct drm_amdgpu_wait_cs_in {
+  __u64 handle;
+  __u64 timeout;
+  __u32 ip_type;
+  __u32 ip_instance;
+  __u32 ring;
+  __u32 ctx_id;
+};
+struct drm_amdgpu_wait_cs_out {
+  __u64 status;
+};
+union drm_amdgpu_wait_cs {
+  struct drm_amdgpu_wait_cs_in in;
+  struct drm_amdgpu_wait_cs_out out;
+};
+struct drm_amdgpu_fence {
+  __u32 ctx_id;
+  __u32 ip_type;
+  __u32 ip_instance;
+  __u32 ring;
+  __u64 seq_no;
+};
+struct drm_amdgpu_wait_fences_in {
+  __u64 fences;
+  __u32 fence_count;
+  __u32 wait_all;
+  __u64 timeout_ns;
+};
+struct drm_amdgpu_wait_fences_out {
+  __u32 status;
+  __u32 first_signaled;
+};
+union drm_amdgpu_wait_fences {
+  struct drm_amdgpu_wait_fences_in in;
+  struct drm_amdgpu_wait_fences_out out;
+};
+#define AMDGPU_GEM_OP_GET_GEM_CREATE_INFO 0
+#define AMDGPU_GEM_OP_SET_PLACEMENT 1
+struct drm_amdgpu_gem_op {
+  __u32 handle;
+  __u32 op;
+  __u64 value;
+};
+#define AMDGPU_VA_OP_MAP 1
+#define AMDGPU_VA_OP_UNMAP 2
+#define AMDGPU_VA_OP_CLEAR 3
+#define AMDGPU_VA_OP_REPLACE 4
+#define AMDGPU_VM_DELAY_UPDATE (1 << 0)
+#define AMDGPU_VM_PAGE_READABLE (1 << 1)
+#define AMDGPU_VM_PAGE_WRITEABLE (1 << 2)
+#define AMDGPU_VM_PAGE_EXECUTABLE (1 << 3)
+#define AMDGPU_VM_PAGE_PRT (1 << 4)
+#define AMDGPU_VM_MTYPE_MASK (0xf << 5)
+#define AMDGPU_VM_MTYPE_DEFAULT (0 << 5)
+#define AMDGPU_VM_MTYPE_NC (1 << 5)
+#define AMDGPU_VM_MTYPE_WC (2 << 5)
+#define AMDGPU_VM_MTYPE_CC (3 << 5)
+#define AMDGPU_VM_MTYPE_UC (4 << 5)
+#define AMDGPU_VM_MTYPE_RW (5 << 5)
+struct drm_amdgpu_gem_va {
+  __u32 handle;
+  __u32 _pad;
+  __u32 operation;
+  __u32 flags;
+  __u64 va_address;
+  __u64 offset_in_bo;
+  __u64 map_size;
+};
+#define AMDGPU_HW_IP_GFX 0
+#define AMDGPU_HW_IP_COMPUTE 1
+#define AMDGPU_HW_IP_DMA 2
+#define AMDGPU_HW_IP_UVD 3
+#define AMDGPU_HW_IP_VCE 4
+#define AMDGPU_HW_IP_UVD_ENC 5
+#define AMDGPU_HW_IP_VCN_DEC 6
+#define AMDGPU_HW_IP_VCN_ENC 7
+#define AMDGPU_HW_IP_VCN_JPEG 8
+#define AMDGPU_HW_IP_NUM 9
+#define AMDGPU_HW_IP_INSTANCE_MAX_COUNT 1
+#define AMDGPU_CHUNK_ID_IB 0x01
+#define AMDGPU_CHUNK_ID_FENCE 0x02
+#define AMDGPU_CHUNK_ID_DEPENDENCIES 0x03
+#define AMDGPU_CHUNK_ID_SYNCOBJ_IN 0x04
+#define AMDGPU_CHUNK_ID_SYNCOBJ_OUT 0x05
+#define AMDGPU_CHUNK_ID_BO_HANDLES 0x06
+#define AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIES 0x07
+#define AMDGPU_CHUNK_ID_SYNCOBJ_TIMELINE_WAIT 0x08
+#define AMDGPU_CHUNK_ID_SYNCOBJ_TIMELINE_SIGNAL 0x09
+struct drm_amdgpu_cs_chunk {
+  __u32 chunk_id;
+  __u32 length_dw;
+  __u64 chunk_data;
+};
+struct drm_amdgpu_cs_in {
+  __u32 ctx_id;
+  __u32 bo_list_handle;
+  __u32 num_chunks;
+  __u32 flags;
+  __u64 chunks;
+};
+struct drm_amdgpu_cs_out {
+  __u64 handle;
+};
+union drm_amdgpu_cs {
+  struct drm_amdgpu_cs_in in;
+  struct drm_amdgpu_cs_out out;
+};
+#define AMDGPU_IB_FLAG_CE (1 << 0)
+#define AMDGPU_IB_FLAG_PREAMBLE (1 << 1)
+#define AMDGPU_IB_FLAG_PREEMPT (1 << 2)
+#define AMDGPU_IB_FLAG_TC_WB_NOT_INVALIDATE (1 << 3)
+#define AMDGPU_IB_FLAG_RESET_GDS_MAX_WAVE_ID (1 << 4)
+#define AMDGPU_IB_FLAGS_SECURE (1 << 5)
+#define AMDGPU_IB_FLAG_EMIT_MEM_SYNC (1 << 6)
+struct drm_amdgpu_cs_chunk_ib {
+  __u32 _pad;
+  __u32 flags;
+  __u64 va_start;
+  __u32 ib_bytes;
+  __u32 ip_type;
+  __u32 ip_instance;
+  __u32 ring;
+};
+struct drm_amdgpu_cs_chunk_dep {
+  __u32 ip_type;
+  __u32 ip_instance;
+  __u32 ring;
+  __u32 ctx_id;
+  __u64 handle;
+};
+struct drm_amdgpu_cs_chunk_fence {
+  __u32 handle;
+  __u32 offset;
+};
+struct drm_amdgpu_cs_chunk_sem {
+  __u32 handle;
+};
+struct drm_amdgpu_cs_chunk_syncobj {
+  __u32 handle;
+  __u32 flags;
+  __u64 point;
+};
+#define AMDGPU_FENCE_TO_HANDLE_GET_SYNCOBJ 0
+#define AMDGPU_FENCE_TO_HANDLE_GET_SYNCOBJ_FD 1
+#define AMDGPU_FENCE_TO_HANDLE_GET_SYNC_FILE_FD 2
+union drm_amdgpu_fence_to_handle {
+  struct {
+    struct drm_amdgpu_fence fence;
+    __u32 what;
+    __u32 pad;
+  } in;
+  struct {
+    __u32 handle;
+  } out;
+};
+struct drm_amdgpu_cs_chunk_data {
+  union {
+    struct drm_amdgpu_cs_chunk_ib ib_data;
+    struct drm_amdgpu_cs_chunk_fence fence_data;
+  };
+};
+#define AMDGPU_IDS_FLAGS_FUSION 0x1
+#define AMDGPU_IDS_FLAGS_PREEMPTION 0x2
+#define AMDGPU_IDS_FLAGS_TMZ 0x4
+#define AMDGPU_INFO_ACCEL_WORKING 0x00
+#define AMDGPU_INFO_CRTC_FROM_ID 0x01
+#define AMDGPU_INFO_HW_IP_INFO 0x02
+#define AMDGPU_INFO_HW_IP_COUNT 0x03
+#define AMDGPU_INFO_TIMESTAMP 0x05
+#define AMDGPU_INFO_FW_VERSION 0x0e
+#define AMDGPU_INFO_FW_VCE 0x1
+#define AMDGPU_INFO_FW_UVD 0x2
+#define AMDGPU_INFO_FW_GMC 0x03
+#define AMDGPU_INFO_FW_GFX_ME 0x04
+#define AMDGPU_INFO_FW_GFX_PFP 0x05
+#define AMDGPU_INFO_FW_GFX_CE 0x06
+#define AMDGPU_INFO_FW_GFX_RLC 0x07
+#define AMDGPU_INFO_FW_GFX_MEC 0x08
+#define AMDGPU_INFO_FW_SMC 0x0a
+#define AMDGPU_INFO_FW_SDMA 0x0b
+#define AMDGPU_INFO_FW_SOS 0x0c
+#define AMDGPU_INFO_FW_ASD 0x0d
+#define AMDGPU_INFO_FW_VCN 0x0e
+#define AMDGPU_INFO_FW_GFX_RLC_RESTORE_LIST_CNTL 0x0f
+#define AMDGPU_INFO_FW_GFX_RLC_RESTORE_LIST_GPM_MEM 0x10
+#define AMDGPU_INFO_FW_GFX_RLC_RESTORE_LIST_SRM_MEM 0x11
+#define AMDGPU_INFO_FW_DMCU 0x12
+#define AMDGPU_INFO_FW_TA 0x13
+#define AMDGPU_INFO_FW_DMCUB 0x14
+#define AMDGPU_INFO_FW_TOC 0x15
+#define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f
+#define AMDGPU_INFO_VRAM_USAGE 0x10
+#define AMDGPU_INFO_GTT_USAGE 0x11
+#define AMDGPU_INFO_GDS_CONFIG 0x13
+#define AMDGPU_INFO_VRAM_GTT 0x14
+#define AMDGPU_INFO_READ_MMR_REG 0x15
+#define AMDGPU_INFO_DEV_INFO 0x16
+#define AMDGPU_INFO_VIS_VRAM_USAGE 0x17
+#define AMDGPU_INFO_NUM_EVICTIONS 0x18
+#define AMDGPU_INFO_MEMORY 0x19
+#define AMDGPU_INFO_VCE_CLOCK_TABLE 0x1A
+#define AMDGPU_INFO_VBIOS 0x1B
+#define AMDGPU_INFO_VBIOS_SIZE 0x1
+#define AMDGPU_INFO_VBIOS_IMAGE 0x2
+#define AMDGPU_INFO_VBIOS_INFO 0x3
+#define AMDGPU_INFO_NUM_HANDLES 0x1C
+#define AMDGPU_INFO_SENSOR 0x1D
+#define AMDGPU_INFO_SENSOR_GFX_SCLK 0x1
+#define AMDGPU_INFO_SENSOR_GFX_MCLK 0x2
+#define AMDGPU_INFO_SENSOR_GPU_TEMP 0x3
+#define AMDGPU_INFO_SENSOR_GPU_LOAD 0x4
+#define AMDGPU_INFO_SENSOR_GPU_AVG_POWER 0x5
+#define AMDGPU_INFO_SENSOR_VDDNB 0x6
+#define AMDGPU_INFO_SENSOR_VDDGFX 0x7
+#define AMDGPU_INFO_SENSOR_STABLE_PSTATE_GFX_SCLK 0x8
+#define AMDGPU_INFO_SENSOR_STABLE_PSTATE_GFX_MCLK 0x9
+#define AMDGPU_INFO_NUM_VRAM_CPU_PAGE_FAULTS 0x1E
+#define AMDGPU_INFO_VRAM_LOST_COUNTER 0x1F
+#define AMDGPU_INFO_RAS_ENABLED_FEATURES 0x20
+#define AMDGPU_INFO_RAS_ENABLED_UMC (1 << 0)
+#define AMDGPU_INFO_RAS_ENABLED_SDMA (1 << 1)
+#define AMDGPU_INFO_RAS_ENABLED_GFX (1 << 2)
+#define AMDGPU_INFO_RAS_ENABLED_MMHUB (1 << 3)
+#define AMDGPU_INFO_RAS_ENABLED_ATHUB (1 << 4)
+#define AMDGPU_INFO_RAS_ENABLED_PCIE (1 << 5)
+#define AMDGPU_INFO_RAS_ENABLED_HDP (1 << 6)
+#define AMDGPU_INFO_RAS_ENABLED_XGMI (1 << 7)
+#define AMDGPU_INFO_RAS_ENABLED_DF (1 << 8)
+#define AMDGPU_INFO_RAS_ENABLED_SMN (1 << 9)
+#define AMDGPU_INFO_RAS_ENABLED_SEM (1 << 10)
+#define AMDGPU_INFO_RAS_ENABLED_MP0 (1 << 11)
+#define AMDGPU_INFO_RAS_ENABLED_MP1 (1 << 12)
+#define AMDGPU_INFO_RAS_ENABLED_FUSE (1 << 13)
+#define AMDGPU_INFO_VIDEO_CAPS 0x21
+#define AMDGPU_INFO_VIDEO_CAPS_DECODE 0
+#define AMDGPU_INFO_VIDEO_CAPS_ENCODE 1
+#define AMDGPU_INFO_MMR_SE_INDEX_SHIFT 0
+#define AMDGPU_INFO_MMR_SE_INDEX_MASK 0xff
+#define AMDGPU_INFO_MMR_SH_INDEX_SHIFT 8
+#define AMDGPU_INFO_MMR_SH_INDEX_MASK 0xff
+struct drm_amdgpu_query_fw {
+  __u32 fw_type;
+  __u32 ip_instance;
+  __u32 index;
+  __u32 _pad;
+};
+struct drm_amdgpu_info {
+  __u64 return_pointer;
+  __u32 return_size;
+  __u32 query;
+  union {
+    struct {
+      __u32 id;
+      __u32 _pad;
+    } mode_crtc;
+    struct {
+      __u32 type;
+      __u32 ip_instance;
+    } query_hw_ip;
+    struct {
+      __u32 dword_offset;
+      __u32 count;
+      __u32 instance;
+      __u32 flags;
+    } read_mmr_reg;
+    struct drm_amdgpu_query_fw query_fw;
+    struct {
+      __u32 type;
+      __u32 offset;
+    } vbios_info;
+    struct {
+      __u32 type;
+    } sensor_info;
+    struct {
+      __u32 type;
+    } video_cap;
+  };
+};
+struct drm_amdgpu_info_gds {
+  __u32 gds_gfx_partition_size;
+  __u32 compute_partition_size;
+  __u32 gds_total_size;
+  __u32 gws_per_gfx_partition;
+  __u32 gws_per_compute_partition;
+  __u32 oa_per_gfx_partition;
+  __u32 oa_per_compute_partition;
+  __u32 _pad;
+};
+struct drm_amdgpu_info_vram_gtt {
+  __u64 vram_size;
+  __u64 vram_cpu_accessible_size;
+  __u64 gtt_size;
+};
+struct drm_amdgpu_heap_info {
+  __u64 total_heap_size;
+  __u64 usable_heap_size;
+  __u64 heap_usage;
+  __u64 max_allocation;
+};
+struct drm_amdgpu_memory_info {
+  struct drm_amdgpu_heap_info vram;
+  struct drm_amdgpu_heap_info cpu_accessible_vram;
+  struct drm_amdgpu_heap_info gtt;
+};
+struct drm_amdgpu_info_firmware {
+  __u32 ver;
+  __u32 feature;
+};
+struct drm_amdgpu_info_vbios {
+  __u8 name[64];
+  __u8 vbios_pn[64];
+  __u32 version;
+  __u32 pad;
+  __u8 vbios_ver_str[32];
+  __u8 date[32];
+};
+#define AMDGPU_VRAM_TYPE_UNKNOWN 0
+#define AMDGPU_VRAM_TYPE_GDDR1 1
+#define AMDGPU_VRAM_TYPE_DDR2 2
+#define AMDGPU_VRAM_TYPE_GDDR3 3
+#define AMDGPU_VRAM_TYPE_GDDR4 4
+#define AMDGPU_VRAM_TYPE_GDDR5 5
+#define AMDGPU_VRAM_TYPE_HBM 6
+#define AMDGPU_VRAM_TYPE_DDR3 7
+#define AMDGPU_VRAM_TYPE_DDR4 8
+#define AMDGPU_VRAM_TYPE_GDDR6 9
+#define AMDGPU_VRAM_TYPE_DDR5 10
+struct drm_amdgpu_info_device {
+  __u32 device_id;
+  __u32 chip_rev;
+  __u32 external_rev;
+  __u32 pci_rev;
+  __u32 family;
+  __u32 num_shader_engines;
+  __u32 num_shader_arrays_per_engine;
+  __u32 gpu_counter_freq;
+  __u64 max_engine_clock;
+  __u64 max_memory_clock;
+  __u32 cu_active_number;
+  __u32 cu_ao_mask;
+  __u32 cu_bitmap[4][4];
+  __u32 enabled_rb_pipes_mask;
+  __u32 num_rb_pipes;
+  __u32 num_hw_gfx_contexts;
+  __u32 _pad;
+  __u64 ids_flags;
+  __u64 virtual_address_offset;
+  __u64 virtual_address_max;
+  __u32 virtual_address_alignment;
+  __u32 pte_fragment_size;
+  __u32 gart_page_size;
+  __u32 ce_ram_size;
+  __u32 vram_type;
+  __u32 vram_bit_width;
+  __u32 vce_harvest_config;
+  __u32 gc_double_offchip_lds_buf;
+  __u64 prim_buf_gpu_addr;
+  __u64 pos_buf_gpu_addr;
+  __u64 cntl_sb_buf_gpu_addr;
+  __u64 param_buf_gpu_addr;
+  __u32 prim_buf_size;
+  __u32 pos_buf_size;
+  __u32 cntl_sb_buf_size;
+  __u32 param_buf_size;
+  __u32 wave_front_size;
+  __u32 num_shader_visible_vgprs;
+  __u32 num_cu_per_sh;
+  __u32 num_tcc_blocks;
+  __u32 gs_vgt_table_depth;
+  __u32 gs_prim_buffer_depth;
+  __u32 max_gs_waves_per_vgt;
+  __u32 _pad1;
+  __u32 cu_ao_bitmap[4][4];
+  __u64 high_va_offset;
+  __u64 high_va_max;
+  __u32 pa_sc_tile_steering_override;
+  __u64 tcc_disabled_mask;
+};
+struct drm_amdgpu_info_hw_ip {
+  __u32 hw_ip_version_major;
+  __u32 hw_ip_version_minor;
+  __u64 capabilities_flags;
+  __u32 ib_start_alignment;
+  __u32 ib_size_alignment;
+  __u32 available_rings;
+  __u32 _pad;
+};
+struct drm_amdgpu_info_num_handles {
+  __u32 uvd_max_handles;
+  __u32 uvd_used_handles;
+};
+#define AMDGPU_VCE_CLOCK_TABLE_ENTRIES 6
+struct drm_amdgpu_info_vce_clock_table_entry {
+  __u32 sclk;
+  __u32 mclk;
+  __u32 eclk;
+  __u32 pad;
+};
+struct drm_amdgpu_info_vce_clock_table {
+  struct drm_amdgpu_info_vce_clock_table_entry entries[AMDGPU_VCE_CLOCK_TABLE_ENTRIES];
+  __u32 num_valid_entries;
+  __u32 pad;
+};
+#define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG2 0
+#define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4 1
+#define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VC1 2
+#define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC 3
+#define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC 4
+#define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG 5
+#define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VP9 6
+#define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_AV1 7
+#define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_COUNT 8
+struct drm_amdgpu_info_video_codec_info {
+  __u32 valid;
+  __u32 max_width;
+  __u32 max_height;
+  __u32 max_pixels_per_frame;
+  __u32 max_level;
+  __u32 pad;
+};
+struct drm_amdgpu_info_video_caps {
+  struct drm_amdgpu_info_video_codec_info codec_info[AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_COUNT];
+};
+#define AMDGPU_FAMILY_UNKNOWN 0
+#define AMDGPU_FAMILY_SI 110
+#define AMDGPU_FAMILY_CI 120
+#define AMDGPU_FAMILY_KV 125
+#define AMDGPU_FAMILY_VI 130
+#define AMDGPU_FAMILY_CZ 135
+#define AMDGPU_FAMILY_AI 141
+#define AMDGPU_FAMILY_RV 142
+#define AMDGPU_FAMILY_NV 143
+#define AMDGPU_FAMILY_VGH 144
+#define AMDGPU_FAMILY_YC 146
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/armada_drm.h b/x86_64-linux-musl/include/drm/armada_drm.h
new file mode 100644
index 0000000..aabd23b
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/armada_drm.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 DRM_ARMADA_IOCTL_H
+#define DRM_ARMADA_IOCTL_H
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_ARMADA_GEM_CREATE 0x00
+#define DRM_ARMADA_GEM_MMAP 0x02
+#define DRM_ARMADA_GEM_PWRITE 0x03
+#define ARMADA_IOCTL(dir,name,str) DRM_ ##dir(DRM_COMMAND_BASE + DRM_ARMADA_ ##name, struct drm_armada_ ##str)
+struct drm_armada_gem_create {
+  __u32 handle;
+  __u32 size;
+};
+#define DRM_IOCTL_ARMADA_GEM_CREATE ARMADA_IOCTL(IOWR, GEM_CREATE, gem_create)
+struct drm_armada_gem_mmap {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+  __u64 size;
+  __u64 addr;
+};
+#define DRM_IOCTL_ARMADA_GEM_MMAP ARMADA_IOCTL(IOWR, GEM_MMAP, gem_mmap)
+struct drm_armada_gem_pwrite {
+  __u64 ptr;
+  __u32 handle;
+  __u32 offset;
+  __u32 size;
+};
+#define DRM_IOCTL_ARMADA_GEM_PWRITE ARMADA_IOCTL(IOW, GEM_PWRITE, gem_pwrite)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/drm.h b/x86_64-linux-musl/include/drm/drm.h
new file mode 100644
index 0000000..878e899
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/drm.h
@@ -0,0 +1,643 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _DRM_H_
+#define _DRM_H_
+#ifdef __linux__
+#include <linux/types.h>
+#include <asm/ioctl.h>
+typedef unsigned int drm_handle_t;
+#else
+#include <stdint.h>
+#include <sys/ioccom.h>
+#include <sys/types.h>
+typedef int8_t __s8;
+typedef uint8_t __u8;
+typedef int16_t __s16;
+typedef uint16_t __u16;
+typedef int32_t __s32;
+typedef uint32_t __u32;
+typedef int64_t __s64;
+typedef uint64_t __u64;
+typedef size_t __kernel_size_t;
+typedef unsigned long drm_handle_t;
+#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_NAME "drm"
+#define DRM_MIN_ORDER 5
+#define DRM_MAX_ORDER 22
+#define DRM_RAM_PERCENT 10
+#define _DRM_LOCK_HELD 0x80000000U
+#define _DRM_LOCK_CONT 0x40000000U
+#define _DRM_LOCK_IS_HELD(lock) ((lock) & _DRM_LOCK_HELD)
+#define _DRM_LOCK_IS_CONT(lock) ((lock) & _DRM_LOCK_CONT)
+#define _DRM_LOCKING_CONTEXT(lock) ((lock) & ~(_DRM_LOCK_HELD | _DRM_LOCK_CONT))
+typedef unsigned int drm_context_t;
+typedef unsigned int drm_drawable_t;
+typedef unsigned int drm_magic_t;
+struct drm_clip_rect {
+  unsigned short x1;
+  unsigned short y1;
+  unsigned short x2;
+  unsigned short y2;
+};
+struct drm_drawable_info {
+  unsigned int num_rects;
+  struct drm_clip_rect * rects;
+};
+struct drm_tex_region {
+  unsigned char next;
+  unsigned char prev;
+  unsigned char in_use;
+  unsigned char padding;
+  unsigned int age;
+};
+struct drm_hw_lock {
+  __volatile__ unsigned int lock;
+  char padding[60];
+};
+struct drm_version {
+  int version_major;
+  int version_minor;
+  int version_patchlevel;
+  __kernel_size_t name_len;
+  char __user * name;
+  __kernel_size_t date_len;
+  char __user * date;
+  __kernel_size_t desc_len;
+  char __user * desc;
+};
+struct drm_unique {
+  __kernel_size_t unique_len;
+  char __user * unique;
+};
+struct drm_list {
+  int count;
+  struct drm_version __user * version;
+};
+struct drm_block {
+  int unused;
+};
+struct drm_control {
+  enum {
+    DRM_ADD_COMMAND,
+    DRM_RM_COMMAND,
+    DRM_INST_HANDLER,
+    DRM_UNINST_HANDLER
+  } func;
+  int irq;
+};
+enum drm_map_type {
+  _DRM_FRAME_BUFFER = 0,
+  _DRM_REGISTERS = 1,
+  _DRM_SHM = 2,
+  _DRM_AGP = 3,
+  _DRM_SCATTER_GATHER = 4,
+  _DRM_CONSISTENT = 5
+};
+enum drm_map_flags {
+  _DRM_RESTRICTED = 0x01,
+  _DRM_READ_ONLY = 0x02,
+  _DRM_LOCKED = 0x04,
+  _DRM_KERNEL = 0x08,
+  _DRM_WRITE_COMBINING = 0x10,
+  _DRM_CONTAINS_LOCK = 0x20,
+  _DRM_REMOVABLE = 0x40,
+  _DRM_DRIVER = 0x80
+};
+struct drm_ctx_priv_map {
+  unsigned int ctx_id;
+  void * handle;
+};
+struct drm_map {
+  unsigned long offset;
+  unsigned long size;
+  enum drm_map_type type;
+  enum drm_map_flags flags;
+  void * handle;
+  int mtrr;
+};
+struct drm_client {
+  int idx;
+  int auth;
+  unsigned long pid;
+  unsigned long uid;
+  unsigned long magic;
+  unsigned long iocs;
+};
+enum drm_stat_type {
+  _DRM_STAT_LOCK,
+  _DRM_STAT_OPENS,
+  _DRM_STAT_CLOSES,
+  _DRM_STAT_IOCTLS,
+  _DRM_STAT_LOCKS,
+  _DRM_STAT_UNLOCKS,
+  _DRM_STAT_VALUE,
+  _DRM_STAT_BYTE,
+  _DRM_STAT_COUNT,
+  _DRM_STAT_IRQ,
+  _DRM_STAT_PRIMARY,
+  _DRM_STAT_SECONDARY,
+  _DRM_STAT_DMA,
+  _DRM_STAT_SPECIAL,
+  _DRM_STAT_MISSED
+};
+struct drm_stats {
+  unsigned long count;
+  struct {
+    unsigned long value;
+    enum drm_stat_type type;
+  } data[15];
+};
+enum drm_lock_flags {
+  _DRM_LOCK_READY = 0x01,
+  _DRM_LOCK_QUIESCENT = 0x02,
+  _DRM_LOCK_FLUSH = 0x04,
+  _DRM_LOCK_FLUSH_ALL = 0x08,
+  _DRM_HALT_ALL_QUEUES = 0x10,
+  _DRM_HALT_CUR_QUEUES = 0x20
+};
+struct drm_lock {
+  int context;
+  enum drm_lock_flags flags;
+};
+enum drm_dma_flags {
+  _DRM_DMA_BLOCK = 0x01,
+  _DRM_DMA_WHILE_LOCKED = 0x02,
+  _DRM_DMA_PRIORITY = 0x04,
+  _DRM_DMA_WAIT = 0x10,
+  _DRM_DMA_SMALLER_OK = 0x20,
+  _DRM_DMA_LARGER_OK = 0x40
+};
+struct drm_buf_desc {
+  int count;
+  int size;
+  int low_mark;
+  int high_mark;
+  enum {
+    _DRM_PAGE_ALIGN = 0x01,
+    _DRM_AGP_BUFFER = 0x02,
+    _DRM_SG_BUFFER = 0x04,
+    _DRM_FB_BUFFER = 0x08,
+    _DRM_PCI_BUFFER_RO = 0x10
+  } flags;
+  unsigned long agp_start;
+};
+struct drm_buf_info {
+  int count;
+  struct drm_buf_desc __user * list;
+};
+struct drm_buf_free {
+  int count;
+  int __user * list;
+};
+struct drm_buf_pub {
+  int idx;
+  int total;
+  int used;
+  void __user * address;
+};
+struct drm_buf_map {
+  int count;
+#ifdef __cplusplus
+  void __user * virt;
+#else
+  void __user * __linux_virtual;
+#endif
+  struct drm_buf_pub __user * list;
+};
+struct drm_dma {
+  int context;
+  int send_count;
+  int __user * send_indices;
+  int __user * send_sizes;
+  enum drm_dma_flags flags;
+  int request_count;
+  int request_size;
+  int __user * request_indices;
+  int __user * request_sizes;
+  int granted_count;
+};
+enum drm_ctx_flags {
+  _DRM_CONTEXT_PRESERVED = 0x01,
+  _DRM_CONTEXT_2DONLY = 0x02
+};
+struct drm_ctx {
+  drm_context_t handle;
+  enum drm_ctx_flags flags;
+};
+struct drm_ctx_res {
+  int count;
+  struct drm_ctx __user * contexts;
+};
+struct drm_draw {
+  drm_drawable_t handle;
+};
+typedef enum {
+  DRM_DRAWABLE_CLIPRECTS
+} drm_drawable_info_type_t;
+struct drm_update_draw {
+  drm_drawable_t handle;
+  unsigned int type;
+  unsigned int num;
+  unsigned long long data;
+};
+struct drm_auth {
+  drm_magic_t magic;
+};
+struct drm_irq_busid {
+  int irq;
+  int busnum;
+  int devnum;
+  int funcnum;
+};
+enum drm_vblank_seq_type {
+  _DRM_VBLANK_ABSOLUTE = 0x0,
+  _DRM_VBLANK_RELATIVE = 0x1,
+  _DRM_VBLANK_HIGH_CRTC_MASK = 0x0000003e,
+  _DRM_VBLANK_EVENT = 0x4000000,
+  _DRM_VBLANK_FLIP = 0x8000000,
+  _DRM_VBLANK_NEXTONMISS = 0x10000000,
+  _DRM_VBLANK_SECONDARY = 0x20000000,
+  _DRM_VBLANK_SIGNAL = 0x40000000
+};
+#define _DRM_VBLANK_HIGH_CRTC_SHIFT 1
+#define _DRM_VBLANK_TYPES_MASK (_DRM_VBLANK_ABSOLUTE | _DRM_VBLANK_RELATIVE)
+#define _DRM_VBLANK_FLAGS_MASK (_DRM_VBLANK_EVENT | _DRM_VBLANK_SIGNAL | _DRM_VBLANK_SECONDARY | _DRM_VBLANK_NEXTONMISS)
+struct drm_wait_vblank_request {
+  enum drm_vblank_seq_type type;
+  unsigned int sequence;
+  unsigned long signal;
+};
+struct drm_wait_vblank_reply {
+  enum drm_vblank_seq_type type;
+  unsigned int sequence;
+  long tval_sec;
+  long tval_usec;
+};
+union drm_wait_vblank {
+  struct drm_wait_vblank_request request;
+  struct drm_wait_vblank_reply reply;
+};
+#define _DRM_PRE_MODESET 1
+#define _DRM_POST_MODESET 2
+struct drm_modeset_ctl {
+  __u32 crtc;
+  __u32 cmd;
+};
+struct drm_agp_mode {
+  unsigned long mode;
+};
+struct drm_agp_buffer {
+  unsigned long size;
+  unsigned long handle;
+  unsigned long type;
+  unsigned long physical;
+};
+struct drm_agp_binding {
+  unsigned long handle;
+  unsigned long offset;
+};
+struct drm_agp_info {
+  int agp_version_major;
+  int agp_version_minor;
+  unsigned long mode;
+  unsigned long aperture_base;
+  unsigned long aperture_size;
+  unsigned long memory_allowed;
+  unsigned long memory_used;
+  unsigned short id_vendor;
+  unsigned short id_device;
+};
+struct drm_scatter_gather {
+  unsigned long size;
+  unsigned long handle;
+};
+struct drm_set_version {
+  int drm_di_major;
+  int drm_di_minor;
+  int drm_dd_major;
+  int drm_dd_minor;
+};
+struct drm_gem_close {
+  __u32 handle;
+  __u32 pad;
+};
+struct drm_gem_flink {
+  __u32 handle;
+  __u32 name;
+};
+struct drm_gem_open {
+  __u32 name;
+  __u32 handle;
+  __u64 size;
+};
+#define DRM_CAP_DUMB_BUFFER 0x1
+#define DRM_CAP_VBLANK_HIGH_CRTC 0x2
+#define DRM_CAP_DUMB_PREFERRED_DEPTH 0x3
+#define DRM_CAP_DUMB_PREFER_SHADOW 0x4
+#define DRM_CAP_PRIME 0x5
+#define DRM_PRIME_CAP_IMPORT 0x1
+#define DRM_PRIME_CAP_EXPORT 0x2
+#define DRM_CAP_TIMESTAMP_MONOTONIC 0x6
+#define DRM_CAP_ASYNC_PAGE_FLIP 0x7
+#define DRM_CAP_CURSOR_WIDTH 0x8
+#define DRM_CAP_CURSOR_HEIGHT 0x9
+#define DRM_CAP_ADDFB2_MODIFIERS 0x10
+#define DRM_CAP_PAGE_FLIP_TARGET 0x11
+#define DRM_CAP_CRTC_IN_VBLANK_EVENT 0x12
+#define DRM_CAP_SYNCOBJ 0x13
+#define DRM_CAP_SYNCOBJ_TIMELINE 0x14
+struct drm_get_cap {
+  __u64 capability;
+  __u64 value;
+};
+#define DRM_CLIENT_CAP_STEREO_3D 1
+#define DRM_CLIENT_CAP_UNIVERSAL_PLANES 2
+#define DRM_CLIENT_CAP_ATOMIC 3
+#define DRM_CLIENT_CAP_ASPECT_RATIO 4
+#define DRM_CLIENT_CAP_WRITEBACK_CONNECTORS 5
+struct drm_set_client_cap {
+  __u64 capability;
+  __u64 value;
+};
+#define DRM_RDWR O_RDWR
+#define DRM_CLOEXEC O_CLOEXEC
+struct drm_prime_handle {
+  __u32 handle;
+  __u32 flags;
+  __s32 fd;
+};
+struct drm_syncobj_create {
+  __u32 handle;
+#define DRM_SYNCOBJ_CREATE_SIGNALED (1 << 0)
+  __u32 flags;
+};
+struct drm_syncobj_destroy {
+  __u32 handle;
+  __u32 pad;
+};
+#define DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE (1 << 0)
+#define DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE (1 << 0)
+struct drm_syncobj_handle {
+  __u32 handle;
+  __u32 flags;
+  __s32 fd;
+  __u32 pad;
+};
+struct drm_syncobj_transfer {
+  __u32 src_handle;
+  __u32 dst_handle;
+  __u64 src_point;
+  __u64 dst_point;
+  __u32 flags;
+  __u32 pad;
+};
+#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL (1 << 0)
+#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT (1 << 1)
+#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE (1 << 2)
+struct drm_syncobj_wait {
+  __u64 handles;
+  __s64 timeout_nsec;
+  __u32 count_handles;
+  __u32 flags;
+  __u32 first_signaled;
+  __u32 pad;
+};
+struct drm_syncobj_timeline_wait {
+  __u64 handles;
+  __u64 points;
+  __s64 timeout_nsec;
+  __u32 count_handles;
+  __u32 flags;
+  __u32 first_signaled;
+  __u32 pad;
+};
+struct drm_syncobj_array {
+  __u64 handles;
+  __u32 count_handles;
+  __u32 pad;
+};
+#define DRM_SYNCOBJ_QUERY_FLAGS_LAST_SUBMITTED (1 << 0)
+struct drm_syncobj_timeline_array {
+  __u64 handles;
+  __u64 points;
+  __u32 count_handles;
+  __u32 flags;
+};
+struct drm_crtc_get_sequence {
+  __u32 crtc_id;
+  __u32 active;
+  __u64 sequence;
+  __s64 sequence_ns;
+};
+#define DRM_CRTC_SEQUENCE_RELATIVE 0x00000001
+#define DRM_CRTC_SEQUENCE_NEXT_ON_MISS 0x00000002
+struct drm_crtc_queue_sequence {
+  __u32 crtc_id;
+  __u32 flags;
+  __u64 sequence;
+  __u64 user_data;
+};
+#ifdef __cplusplus
+}
+#endif
+#include "drm_mode.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_IOCTL_BASE 'd'
+#define DRM_IO(nr) _IO(DRM_IOCTL_BASE, nr)
+#define DRM_IOR(nr,type) _IOR(DRM_IOCTL_BASE, nr, type)
+#define DRM_IOW(nr,type) _IOW(DRM_IOCTL_BASE, nr, type)
+#define DRM_IOWR(nr,type) _IOWR(DRM_IOCTL_BASE, nr, type)
+#define DRM_IOCTL_VERSION DRM_IOWR(0x00, struct drm_version)
+#define DRM_IOCTL_GET_UNIQUE DRM_IOWR(0x01, struct drm_unique)
+#define DRM_IOCTL_GET_MAGIC DRM_IOR(0x02, struct drm_auth)
+#define DRM_IOCTL_IRQ_BUSID DRM_IOWR(0x03, struct drm_irq_busid)
+#define DRM_IOCTL_GET_MAP DRM_IOWR(0x04, struct drm_map)
+#define DRM_IOCTL_GET_CLIENT DRM_IOWR(0x05, struct drm_client)
+#define DRM_IOCTL_GET_STATS DRM_IOR(0x06, struct drm_stats)
+#define DRM_IOCTL_SET_VERSION DRM_IOWR(0x07, struct drm_set_version)
+#define DRM_IOCTL_MODESET_CTL DRM_IOW(0x08, struct drm_modeset_ctl)
+#define DRM_IOCTL_GEM_CLOSE DRM_IOW(0x09, struct drm_gem_close)
+#define DRM_IOCTL_GEM_FLINK DRM_IOWR(0x0a, struct drm_gem_flink)
+#define DRM_IOCTL_GEM_OPEN DRM_IOWR(0x0b, struct drm_gem_open)
+#define DRM_IOCTL_GET_CAP DRM_IOWR(0x0c, struct drm_get_cap)
+#define DRM_IOCTL_SET_CLIENT_CAP DRM_IOW(0x0d, struct drm_set_client_cap)
+#define DRM_IOCTL_SET_UNIQUE DRM_IOW(0x10, struct drm_unique)
+#define DRM_IOCTL_AUTH_MAGIC DRM_IOW(0x11, struct drm_auth)
+#define DRM_IOCTL_BLOCK DRM_IOWR(0x12, struct drm_block)
+#define DRM_IOCTL_UNBLOCK DRM_IOWR(0x13, struct drm_block)
+#define DRM_IOCTL_CONTROL DRM_IOW(0x14, struct drm_control)
+#define DRM_IOCTL_ADD_MAP DRM_IOWR(0x15, struct drm_map)
+#define DRM_IOCTL_ADD_BUFS DRM_IOWR(0x16, struct drm_buf_desc)
+#define DRM_IOCTL_MARK_BUFS DRM_IOW(0x17, struct drm_buf_desc)
+#define DRM_IOCTL_INFO_BUFS DRM_IOWR(0x18, struct drm_buf_info)
+#define DRM_IOCTL_MAP_BUFS DRM_IOWR(0x19, struct drm_buf_map)
+#define DRM_IOCTL_FREE_BUFS DRM_IOW(0x1a, struct drm_buf_free)
+#define DRM_IOCTL_RM_MAP DRM_IOW(0x1b, struct drm_map)
+#define DRM_IOCTL_SET_SAREA_CTX DRM_IOW(0x1c, struct drm_ctx_priv_map)
+#define DRM_IOCTL_GET_SAREA_CTX DRM_IOWR(0x1d, struct drm_ctx_priv_map)
+#define DRM_IOCTL_SET_MASTER DRM_IO(0x1e)
+#define DRM_IOCTL_DROP_MASTER DRM_IO(0x1f)
+#define DRM_IOCTL_ADD_CTX DRM_IOWR(0x20, struct drm_ctx)
+#define DRM_IOCTL_RM_CTX DRM_IOWR(0x21, struct drm_ctx)
+#define DRM_IOCTL_MOD_CTX DRM_IOW(0x22, struct drm_ctx)
+#define DRM_IOCTL_GET_CTX DRM_IOWR(0x23, struct drm_ctx)
+#define DRM_IOCTL_SWITCH_CTX DRM_IOW(0x24, struct drm_ctx)
+#define DRM_IOCTL_NEW_CTX DRM_IOW(0x25, struct drm_ctx)
+#define DRM_IOCTL_RES_CTX DRM_IOWR(0x26, struct drm_ctx_res)
+#define DRM_IOCTL_ADD_DRAW DRM_IOWR(0x27, struct drm_draw)
+#define DRM_IOCTL_RM_DRAW DRM_IOWR(0x28, struct drm_draw)
+#define DRM_IOCTL_DMA DRM_IOWR(0x29, struct drm_dma)
+#define DRM_IOCTL_LOCK DRM_IOW(0x2a, struct drm_lock)
+#define DRM_IOCTL_UNLOCK DRM_IOW(0x2b, struct drm_lock)
+#define DRM_IOCTL_FINISH DRM_IOW(0x2c, struct drm_lock)
+#define DRM_IOCTL_PRIME_HANDLE_TO_FD DRM_IOWR(0x2d, struct drm_prime_handle)
+#define DRM_IOCTL_PRIME_FD_TO_HANDLE DRM_IOWR(0x2e, struct drm_prime_handle)
+#define DRM_IOCTL_AGP_ACQUIRE DRM_IO(0x30)
+#define DRM_IOCTL_AGP_RELEASE DRM_IO(0x31)
+#define DRM_IOCTL_AGP_ENABLE DRM_IOW(0x32, struct drm_agp_mode)
+#define DRM_IOCTL_AGP_INFO DRM_IOR(0x33, struct drm_agp_info)
+#define DRM_IOCTL_AGP_ALLOC DRM_IOWR(0x34, struct drm_agp_buffer)
+#define DRM_IOCTL_AGP_FREE DRM_IOW(0x35, struct drm_agp_buffer)
+#define DRM_IOCTL_AGP_BIND DRM_IOW(0x36, struct drm_agp_binding)
+#define DRM_IOCTL_AGP_UNBIND DRM_IOW(0x37, struct drm_agp_binding)
+#define DRM_IOCTL_SG_ALLOC DRM_IOWR(0x38, struct drm_scatter_gather)
+#define DRM_IOCTL_SG_FREE DRM_IOW(0x39, struct drm_scatter_gather)
+#define DRM_IOCTL_WAIT_VBLANK DRM_IOWR(0x3a, union drm_wait_vblank)
+#define DRM_IOCTL_CRTC_GET_SEQUENCE DRM_IOWR(0x3b, struct drm_crtc_get_sequence)
+#define DRM_IOCTL_CRTC_QUEUE_SEQUENCE DRM_IOWR(0x3c, struct drm_crtc_queue_sequence)
+#define DRM_IOCTL_UPDATE_DRAW DRM_IOW(0x3f, struct drm_update_draw)
+#define DRM_IOCTL_MODE_GETRESOURCES DRM_IOWR(0xA0, struct drm_mode_card_res)
+#define DRM_IOCTL_MODE_GETCRTC DRM_IOWR(0xA1, struct drm_mode_crtc)
+#define DRM_IOCTL_MODE_SETCRTC DRM_IOWR(0xA2, struct drm_mode_crtc)
+#define DRM_IOCTL_MODE_CURSOR DRM_IOWR(0xA3, struct drm_mode_cursor)
+#define DRM_IOCTL_MODE_GETGAMMA DRM_IOWR(0xA4, struct drm_mode_crtc_lut)
+#define DRM_IOCTL_MODE_SETGAMMA DRM_IOWR(0xA5, struct drm_mode_crtc_lut)
+#define DRM_IOCTL_MODE_GETENCODER DRM_IOWR(0xA6, struct drm_mode_get_encoder)
+#define DRM_IOCTL_MODE_GETCONNECTOR DRM_IOWR(0xA7, struct drm_mode_get_connector)
+#define DRM_IOCTL_MODE_ATTACHMODE DRM_IOWR(0xA8, struct drm_mode_mode_cmd)
+#define DRM_IOCTL_MODE_DETACHMODE DRM_IOWR(0xA9, struct drm_mode_mode_cmd)
+#define DRM_IOCTL_MODE_GETPROPERTY DRM_IOWR(0xAA, struct drm_mode_get_property)
+#define DRM_IOCTL_MODE_SETPROPERTY DRM_IOWR(0xAB, struct drm_mode_connector_set_property)
+#define DRM_IOCTL_MODE_GETPROPBLOB DRM_IOWR(0xAC, struct drm_mode_get_blob)
+#define DRM_IOCTL_MODE_GETFB DRM_IOWR(0xAD, struct drm_mode_fb_cmd)
+#define DRM_IOCTL_MODE_ADDFB DRM_IOWR(0xAE, struct drm_mode_fb_cmd)
+#define DRM_IOCTL_MODE_RMFB DRM_IOWR(0xAF, unsigned int)
+#define DRM_IOCTL_MODE_PAGE_FLIP DRM_IOWR(0xB0, struct drm_mode_crtc_page_flip)
+#define DRM_IOCTL_MODE_DIRTYFB DRM_IOWR(0xB1, struct drm_mode_fb_dirty_cmd)
+#define DRM_IOCTL_MODE_CREATE_DUMB DRM_IOWR(0xB2, struct drm_mode_create_dumb)
+#define DRM_IOCTL_MODE_MAP_DUMB DRM_IOWR(0xB3, struct drm_mode_map_dumb)
+#define DRM_IOCTL_MODE_DESTROY_DUMB DRM_IOWR(0xB4, struct drm_mode_destroy_dumb)
+#define DRM_IOCTL_MODE_GETPLANERESOURCES DRM_IOWR(0xB5, struct drm_mode_get_plane_res)
+#define DRM_IOCTL_MODE_GETPLANE DRM_IOWR(0xB6, struct drm_mode_get_plane)
+#define DRM_IOCTL_MODE_SETPLANE DRM_IOWR(0xB7, struct drm_mode_set_plane)
+#define DRM_IOCTL_MODE_ADDFB2 DRM_IOWR(0xB8, struct drm_mode_fb_cmd2)
+#define DRM_IOCTL_MODE_OBJ_GETPROPERTIES DRM_IOWR(0xB9, struct drm_mode_obj_get_properties)
+#define DRM_IOCTL_MODE_OBJ_SETPROPERTY DRM_IOWR(0xBA, struct drm_mode_obj_set_property)
+#define DRM_IOCTL_MODE_CURSOR2 DRM_IOWR(0xBB, struct drm_mode_cursor2)
+#define DRM_IOCTL_MODE_ATOMIC DRM_IOWR(0xBC, struct drm_mode_atomic)
+#define DRM_IOCTL_MODE_CREATEPROPBLOB DRM_IOWR(0xBD, struct drm_mode_create_blob)
+#define DRM_IOCTL_MODE_DESTROYPROPBLOB DRM_IOWR(0xBE, struct drm_mode_destroy_blob)
+#define DRM_IOCTL_SYNCOBJ_CREATE DRM_IOWR(0xBF, struct drm_syncobj_create)
+#define DRM_IOCTL_SYNCOBJ_DESTROY DRM_IOWR(0xC0, struct drm_syncobj_destroy)
+#define DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD DRM_IOWR(0xC1, struct drm_syncobj_handle)
+#define DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE DRM_IOWR(0xC2, struct drm_syncobj_handle)
+#define DRM_IOCTL_SYNCOBJ_WAIT DRM_IOWR(0xC3, struct drm_syncobj_wait)
+#define DRM_IOCTL_SYNCOBJ_RESET DRM_IOWR(0xC4, struct drm_syncobj_array)
+#define DRM_IOCTL_SYNCOBJ_SIGNAL DRM_IOWR(0xC5, struct drm_syncobj_array)
+#define DRM_IOCTL_MODE_CREATE_LEASE DRM_IOWR(0xC6, struct drm_mode_create_lease)
+#define DRM_IOCTL_MODE_LIST_LESSEES DRM_IOWR(0xC7, struct drm_mode_list_lessees)
+#define DRM_IOCTL_MODE_GET_LEASE DRM_IOWR(0xC8, struct drm_mode_get_lease)
+#define DRM_IOCTL_MODE_REVOKE_LEASE DRM_IOWR(0xC9, struct drm_mode_revoke_lease)
+#define DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT DRM_IOWR(0xCA, struct drm_syncobj_timeline_wait)
+#define DRM_IOCTL_SYNCOBJ_QUERY DRM_IOWR(0xCB, struct drm_syncobj_timeline_array)
+#define DRM_IOCTL_SYNCOBJ_TRANSFER DRM_IOWR(0xCC, struct drm_syncobj_transfer)
+#define DRM_IOCTL_SYNCOBJ_TIMELINE_SIGNAL DRM_IOWR(0xCD, struct drm_syncobj_timeline_array)
+#define DRM_IOCTL_MODE_GETFB2 DRM_IOWR(0xCE, struct drm_mode_fb_cmd2)
+#define DRM_COMMAND_BASE 0x40
+#define DRM_COMMAND_END 0xA0
+struct drm_event {
+  __u32 type;
+  __u32 length;
+};
+#define DRM_EVENT_VBLANK 0x01
+#define DRM_EVENT_FLIP_COMPLETE 0x02
+#define DRM_EVENT_CRTC_SEQUENCE 0x03
+struct drm_event_vblank {
+  struct drm_event base;
+  __u64 user_data;
+  __u32 tv_sec;
+  __u32 tv_usec;
+  __u32 sequence;
+  __u32 crtc_id;
+};
+struct drm_event_crtc_sequence {
+  struct drm_event base;
+  __u64 user_data;
+  __s64 time_ns;
+  __u64 sequence;
+};
+typedef struct drm_clip_rect drm_clip_rect_t;
+typedef struct drm_drawable_info drm_drawable_info_t;
+typedef struct drm_tex_region drm_tex_region_t;
+typedef struct drm_hw_lock drm_hw_lock_t;
+typedef struct drm_version drm_version_t;
+typedef struct drm_unique drm_unique_t;
+typedef struct drm_list drm_list_t;
+typedef struct drm_block drm_block_t;
+typedef struct drm_control drm_control_t;
+typedef enum drm_map_type drm_map_type_t;
+typedef enum drm_map_flags drm_map_flags_t;
+typedef struct drm_ctx_priv_map drm_ctx_priv_map_t;
+typedef struct drm_map drm_map_t;
+typedef struct drm_client drm_client_t;
+typedef enum drm_stat_type drm_stat_type_t;
+typedef struct drm_stats drm_stats_t;
+typedef enum drm_lock_flags drm_lock_flags_t;
+typedef struct drm_lock drm_lock_t;
+typedef enum drm_dma_flags drm_dma_flags_t;
+typedef struct drm_buf_desc drm_buf_desc_t;
+typedef struct drm_buf_info drm_buf_info_t;
+typedef struct drm_buf_free drm_buf_free_t;
+typedef struct drm_buf_pub drm_buf_pub_t;
+typedef struct drm_buf_map drm_buf_map_t;
+typedef struct drm_dma drm_dma_t;
+typedef union drm_wait_vblank drm_wait_vblank_t;
+typedef struct drm_agp_mode drm_agp_mode_t;
+typedef enum drm_ctx_flags drm_ctx_flags_t;
+typedef struct drm_ctx drm_ctx_t;
+typedef struct drm_ctx_res drm_ctx_res_t;
+typedef struct drm_draw drm_draw_t;
+typedef struct drm_update_draw drm_update_draw_t;
+typedef struct drm_auth drm_auth_t;
+typedef struct drm_irq_busid drm_irq_busid_t;
+typedef enum drm_vblank_seq_type drm_vblank_seq_type_t;
+typedef struct drm_agp_buffer drm_agp_buffer_t;
+typedef struct drm_agp_binding drm_agp_binding_t;
+typedef struct drm_agp_info drm_agp_info_t;
+typedef struct drm_scatter_gather drm_scatter_gather_t;
+typedef struct drm_set_version drm_set_version_t;
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/drm_fourcc.h b/x86_64-linux-musl/include/drm/drm_fourcc.h
new file mode 100644
index 0000000..2b5d202
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/drm_fourcc.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 DRM_FOURCC_H
+#define DRM_FOURCC_H
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define fourcc_code(a,b,c,d) ((__u32) (a) | ((__u32) (b) << 8) | ((__u32) (c) << 16) | ((__u32) (d) << 24))
+#define DRM_FORMAT_BIG_ENDIAN (1U << 31)
+#define DRM_FORMAT_INVALID 0
+#define DRM_FORMAT_C8 fourcc_code('C', '8', ' ', ' ')
+#define DRM_FORMAT_R8 fourcc_code('R', '8', ' ', ' ')
+#define DRM_FORMAT_R10 fourcc_code('R', '1', '0', ' ')
+#define DRM_FORMAT_R12 fourcc_code('R', '1', '2', ' ')
+#define DRM_FORMAT_R16 fourcc_code('R', '1', '6', ' ')
+#define DRM_FORMAT_RG88 fourcc_code('R', 'G', '8', '8')
+#define DRM_FORMAT_GR88 fourcc_code('G', 'R', '8', '8')
+#define DRM_FORMAT_RG1616 fourcc_code('R', 'G', '3', '2')
+#define DRM_FORMAT_GR1616 fourcc_code('G', 'R', '3', '2')
+#define DRM_FORMAT_RGB332 fourcc_code('R', 'G', 'B', '8')
+#define DRM_FORMAT_BGR233 fourcc_code('B', 'G', 'R', '8')
+#define DRM_FORMAT_XRGB4444 fourcc_code('X', 'R', '1', '2')
+#define DRM_FORMAT_XBGR4444 fourcc_code('X', 'B', '1', '2')
+#define DRM_FORMAT_RGBX4444 fourcc_code('R', 'X', '1', '2')
+#define DRM_FORMAT_BGRX4444 fourcc_code('B', 'X', '1', '2')
+#define DRM_FORMAT_ARGB4444 fourcc_code('A', 'R', '1', '2')
+#define DRM_FORMAT_ABGR4444 fourcc_code('A', 'B', '1', '2')
+#define DRM_FORMAT_RGBA4444 fourcc_code('R', 'A', '1', '2')
+#define DRM_FORMAT_BGRA4444 fourcc_code('B', 'A', '1', '2')
+#define DRM_FORMAT_XRGB1555 fourcc_code('X', 'R', '1', '5')
+#define DRM_FORMAT_XBGR1555 fourcc_code('X', 'B', '1', '5')
+#define DRM_FORMAT_RGBX5551 fourcc_code('R', 'X', '1', '5')
+#define DRM_FORMAT_BGRX5551 fourcc_code('B', 'X', '1', '5')
+#define DRM_FORMAT_ARGB1555 fourcc_code('A', 'R', '1', '5')
+#define DRM_FORMAT_ABGR1555 fourcc_code('A', 'B', '1', '5')
+#define DRM_FORMAT_RGBA5551 fourcc_code('R', 'A', '1', '5')
+#define DRM_FORMAT_BGRA5551 fourcc_code('B', 'A', '1', '5')
+#define DRM_FORMAT_RGB565 fourcc_code('R', 'G', '1', '6')
+#define DRM_FORMAT_BGR565 fourcc_code('B', 'G', '1', '6')
+#define DRM_FORMAT_RGB888 fourcc_code('R', 'G', '2', '4')
+#define DRM_FORMAT_BGR888 fourcc_code('B', 'G', '2', '4')
+#define DRM_FORMAT_XRGB8888 fourcc_code('X', 'R', '2', '4')
+#define DRM_FORMAT_XBGR8888 fourcc_code('X', 'B', '2', '4')
+#define DRM_FORMAT_RGBX8888 fourcc_code('R', 'X', '2', '4')
+#define DRM_FORMAT_BGRX8888 fourcc_code('B', 'X', '2', '4')
+#define DRM_FORMAT_ARGB8888 fourcc_code('A', 'R', '2', '4')
+#define DRM_FORMAT_ABGR8888 fourcc_code('A', 'B', '2', '4')
+#define DRM_FORMAT_RGBA8888 fourcc_code('R', 'A', '2', '4')
+#define DRM_FORMAT_BGRA8888 fourcc_code('B', 'A', '2', '4')
+#define DRM_FORMAT_XRGB2101010 fourcc_code('X', 'R', '3', '0')
+#define DRM_FORMAT_XBGR2101010 fourcc_code('X', 'B', '3', '0')
+#define DRM_FORMAT_RGBX1010102 fourcc_code('R', 'X', '3', '0')
+#define DRM_FORMAT_BGRX1010102 fourcc_code('B', 'X', '3', '0')
+#define DRM_FORMAT_ARGB2101010 fourcc_code('A', 'R', '3', '0')
+#define DRM_FORMAT_ABGR2101010 fourcc_code('A', 'B', '3', '0')
+#define DRM_FORMAT_RGBA1010102 fourcc_code('R', 'A', '3', '0')
+#define DRM_FORMAT_BGRA1010102 fourcc_code('B', 'A', '3', '0')
+#define DRM_FORMAT_XRGB16161616 fourcc_code('X', 'R', '4', '8')
+#define DRM_FORMAT_XBGR16161616 fourcc_code('X', 'B', '4', '8')
+#define DRM_FORMAT_ARGB16161616 fourcc_code('A', 'R', '4', '8')
+#define DRM_FORMAT_ABGR16161616 fourcc_code('A', 'B', '4', '8')
+#define DRM_FORMAT_XRGB16161616F fourcc_code('X', 'R', '4', 'H')
+#define DRM_FORMAT_XBGR16161616F fourcc_code('X', 'B', '4', 'H')
+#define DRM_FORMAT_ARGB16161616F fourcc_code('A', 'R', '4', 'H')
+#define DRM_FORMAT_ABGR16161616F fourcc_code('A', 'B', '4', 'H')
+#define DRM_FORMAT_AXBXGXRX106106106106 fourcc_code('A', 'B', '1', '0')
+#define DRM_FORMAT_YUYV fourcc_code('Y', 'U', 'Y', 'V')
+#define DRM_FORMAT_YVYU fourcc_code('Y', 'V', 'Y', 'U')
+#define DRM_FORMAT_UYVY fourcc_code('U', 'Y', 'V', 'Y')
+#define DRM_FORMAT_VYUY fourcc_code('V', 'Y', 'U', 'Y')
+#define DRM_FORMAT_AYUV fourcc_code('A', 'Y', 'U', 'V')
+#define DRM_FORMAT_XYUV8888 fourcc_code('X', 'Y', 'U', 'V')
+#define DRM_FORMAT_VUY888 fourcc_code('V', 'U', '2', '4')
+#define DRM_FORMAT_VUY101010 fourcc_code('V', 'U', '3', '0')
+#define DRM_FORMAT_Y210 fourcc_code('Y', '2', '1', '0')
+#define DRM_FORMAT_Y212 fourcc_code('Y', '2', '1', '2')
+#define DRM_FORMAT_Y216 fourcc_code('Y', '2', '1', '6')
+#define DRM_FORMAT_Y410 fourcc_code('Y', '4', '1', '0')
+#define DRM_FORMAT_Y412 fourcc_code('Y', '4', '1', '2')
+#define DRM_FORMAT_Y416 fourcc_code('Y', '4', '1', '6')
+#define DRM_FORMAT_XVYU2101010 fourcc_code('X', 'V', '3', '0')
+#define DRM_FORMAT_XVYU12_16161616 fourcc_code('X', 'V', '3', '6')
+#define DRM_FORMAT_XVYU16161616 fourcc_code('X', 'V', '4', '8')
+#define DRM_FORMAT_Y0L0 fourcc_code('Y', '0', 'L', '0')
+#define DRM_FORMAT_X0L0 fourcc_code('X', '0', 'L', '0')
+#define DRM_FORMAT_Y0L2 fourcc_code('Y', '0', 'L', '2')
+#define DRM_FORMAT_X0L2 fourcc_code('X', '0', 'L', '2')
+#define DRM_FORMAT_YUV420_8BIT fourcc_code('Y', 'U', '0', '8')
+#define DRM_FORMAT_YUV420_10BIT fourcc_code('Y', 'U', '1', '0')
+#define DRM_FORMAT_XRGB8888_A8 fourcc_code('X', 'R', 'A', '8')
+#define DRM_FORMAT_XBGR8888_A8 fourcc_code('X', 'B', 'A', '8')
+#define DRM_FORMAT_RGBX8888_A8 fourcc_code('R', 'X', 'A', '8')
+#define DRM_FORMAT_BGRX8888_A8 fourcc_code('B', 'X', 'A', '8')
+#define DRM_FORMAT_RGB888_A8 fourcc_code('R', '8', 'A', '8')
+#define DRM_FORMAT_BGR888_A8 fourcc_code('B', '8', 'A', '8')
+#define DRM_FORMAT_RGB565_A8 fourcc_code('R', '5', 'A', '8')
+#define DRM_FORMAT_BGR565_A8 fourcc_code('B', '5', 'A', '8')
+#define DRM_FORMAT_NV12 fourcc_code('N', 'V', '1', '2')
+#define DRM_FORMAT_NV21 fourcc_code('N', 'V', '2', '1')
+#define DRM_FORMAT_NV16 fourcc_code('N', 'V', '1', '6')
+#define DRM_FORMAT_NV61 fourcc_code('N', 'V', '6', '1')
+#define DRM_FORMAT_NV24 fourcc_code('N', 'V', '2', '4')
+#define DRM_FORMAT_NV42 fourcc_code('N', 'V', '4', '2')
+#define DRM_FORMAT_NV15 fourcc_code('N', 'V', '1', '5')
+#define DRM_FORMAT_P210 fourcc_code('P', '2', '1', '0')
+#define DRM_FORMAT_P010 fourcc_code('P', '0', '1', '0')
+#define DRM_FORMAT_P012 fourcc_code('P', '0', '1', '2')
+#define DRM_FORMAT_P016 fourcc_code('P', '0', '1', '6')
+#define DRM_FORMAT_Q410 fourcc_code('Q', '4', '1', '0')
+#define DRM_FORMAT_Q401 fourcc_code('Q', '4', '0', '1')
+#define DRM_FORMAT_YUV410 fourcc_code('Y', 'U', 'V', '9')
+#define DRM_FORMAT_YVU410 fourcc_code('Y', 'V', 'U', '9')
+#define DRM_FORMAT_YUV411 fourcc_code('Y', 'U', '1', '1')
+#define DRM_FORMAT_YVU411 fourcc_code('Y', 'V', '1', '1')
+#define DRM_FORMAT_YUV420 fourcc_code('Y', 'U', '1', '2')
+#define DRM_FORMAT_YVU420 fourcc_code('Y', 'V', '1', '2')
+#define DRM_FORMAT_YUV422 fourcc_code('Y', 'U', '1', '6')
+#define DRM_FORMAT_YVU422 fourcc_code('Y', 'V', '1', '6')
+#define DRM_FORMAT_YUV444 fourcc_code('Y', 'U', '2', '4')
+#define DRM_FORMAT_YVU444 fourcc_code('Y', 'V', '2', '4')
+#define DRM_FORMAT_MOD_VENDOR_NONE 0
+#define DRM_FORMAT_MOD_VENDOR_INTEL 0x01
+#define DRM_FORMAT_MOD_VENDOR_AMD 0x02
+#define DRM_FORMAT_MOD_VENDOR_NVIDIA 0x03
+#define DRM_FORMAT_MOD_VENDOR_SAMSUNG 0x04
+#define DRM_FORMAT_MOD_VENDOR_QCOM 0x05
+#define DRM_FORMAT_MOD_VENDOR_VIVANTE 0x06
+#define DRM_FORMAT_MOD_VENDOR_BROADCOM 0x07
+#define DRM_FORMAT_MOD_VENDOR_ARM 0x08
+#define DRM_FORMAT_MOD_VENDOR_ALLWINNER 0x09
+#define DRM_FORMAT_MOD_VENDOR_AMLOGIC 0x0a
+#define DRM_FORMAT_RESERVED ((1ULL << 56) - 1)
+#define fourcc_mod_get_vendor(modifier) (((modifier) >> 56) & 0xff)
+#define fourcc_mod_is_vendor(modifier,vendor) (fourcc_mod_get_vendor(modifier) == DRM_FORMAT_MOD_VENDOR_ ##vendor)
+#define fourcc_mod_code(vendor,val) ((((__u64) DRM_FORMAT_MOD_VENDOR_ ##vendor) << 56) | ((val) & 0x00ffffffffffffffULL))
+#define DRM_FORMAT_MOD_GENERIC_16_16_TILE DRM_FORMAT_MOD_SAMSUNG_16_16_TILE
+#define DRM_FORMAT_MOD_INVALID fourcc_mod_code(NONE, DRM_FORMAT_RESERVED)
+#define DRM_FORMAT_MOD_LINEAR fourcc_mod_code(NONE, 0)
+#define DRM_FORMAT_MOD_NONE 0
+#define I915_FORMAT_MOD_X_TILED fourcc_mod_code(INTEL, 1)
+#define I915_FORMAT_MOD_Y_TILED fourcc_mod_code(INTEL, 2)
+#define I915_FORMAT_MOD_Yf_TILED fourcc_mod_code(INTEL, 3)
+#define I915_FORMAT_MOD_Y_TILED_CCS fourcc_mod_code(INTEL, 4)
+#define I915_FORMAT_MOD_Yf_TILED_CCS fourcc_mod_code(INTEL, 5)
+#define I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS fourcc_mod_code(INTEL, 6)
+#define I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS fourcc_mod_code(INTEL, 7)
+#define I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC fourcc_mod_code(INTEL, 8)
+#define DRM_FORMAT_MOD_SAMSUNG_64_32_TILE fourcc_mod_code(SAMSUNG, 1)
+#define DRM_FORMAT_MOD_SAMSUNG_16_16_TILE fourcc_mod_code(SAMSUNG, 2)
+#define DRM_FORMAT_MOD_QCOM_COMPRESSED fourcc_mod_code(QCOM, 1)
+#define DRM_FORMAT_MOD_VIVANTE_TILED fourcc_mod_code(VIVANTE, 1)
+#define DRM_FORMAT_MOD_VIVANTE_SUPER_TILED fourcc_mod_code(VIVANTE, 2)
+#define DRM_FORMAT_MOD_VIVANTE_SPLIT_TILED fourcc_mod_code(VIVANTE, 3)
+#define DRM_FORMAT_MOD_VIVANTE_SPLIT_SUPER_TILED fourcc_mod_code(VIVANTE, 4)
+#define DRM_FORMAT_MOD_NVIDIA_TEGRA_TILED fourcc_mod_code(NVIDIA, 1)
+#define DRM_FORMAT_MOD_NVIDIA_BLOCK_LINEAR_2D(c,s,g,k,h) fourcc_mod_code(NVIDIA, (0x10 | ((h) & 0xf) | (((k) & 0xff) << 12) | (((g) & 0x3) << 20) | (((s) & 0x1) << 22) | (((c) & 0x7) << 23)))
+#define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(v) DRM_FORMAT_MOD_NVIDIA_BLOCK_LINEAR_2D(0, 0, 0, 0, (v))
+#define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_ONE_GOB DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(0)
+#define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_TWO_GOB DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(1)
+#define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_FOUR_GOB DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(2)
+#define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_EIGHT_GOB DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(3)
+#define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_SIXTEEN_GOB DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(4)
+#define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_THIRTYTWO_GOB DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(5)
+#define __fourcc_mod_broadcom_param_shift 8
+#define __fourcc_mod_broadcom_param_bits 48
+#define fourcc_mod_broadcom_code(val,params) fourcc_mod_code(BROADCOM, ((((__u64) params) << __fourcc_mod_broadcom_param_shift) | val))
+#define fourcc_mod_broadcom_param(m) ((int) (((m) >> __fourcc_mod_broadcom_param_shift) & ((1ULL << __fourcc_mod_broadcom_param_bits) - 1)))
+#define fourcc_mod_broadcom_mod(m) ((m) & ~(((1ULL << __fourcc_mod_broadcom_param_bits) - 1) << __fourcc_mod_broadcom_param_shift))
+#define DRM_FORMAT_MOD_BROADCOM_VC4_T_TILED fourcc_mod_code(BROADCOM, 1)
+#define DRM_FORMAT_MOD_BROADCOM_SAND32_COL_HEIGHT(v) fourcc_mod_broadcom_code(2, v)
+#define DRM_FORMAT_MOD_BROADCOM_SAND64_COL_HEIGHT(v) fourcc_mod_broadcom_code(3, v)
+#define DRM_FORMAT_MOD_BROADCOM_SAND128_COL_HEIGHT(v) fourcc_mod_broadcom_code(4, v)
+#define DRM_FORMAT_MOD_BROADCOM_SAND256_COL_HEIGHT(v) fourcc_mod_broadcom_code(5, v)
+#define DRM_FORMAT_MOD_BROADCOM_SAND32 DRM_FORMAT_MOD_BROADCOM_SAND32_COL_HEIGHT(0)
+#define DRM_FORMAT_MOD_BROADCOM_SAND64 DRM_FORMAT_MOD_BROADCOM_SAND64_COL_HEIGHT(0)
+#define DRM_FORMAT_MOD_BROADCOM_SAND128 DRM_FORMAT_MOD_BROADCOM_SAND128_COL_HEIGHT(0)
+#define DRM_FORMAT_MOD_BROADCOM_SAND256 DRM_FORMAT_MOD_BROADCOM_SAND256_COL_HEIGHT(0)
+#define DRM_FORMAT_MOD_BROADCOM_UIF fourcc_mod_code(BROADCOM, 6)
+#define DRM_FORMAT_MOD_ARM_CODE(__type,__val) fourcc_mod_code(ARM, ((__u64) (__type) << 52) | ((__val) & 0x000fffffffffffffULL))
+#define DRM_FORMAT_MOD_ARM_TYPE_AFBC 0x00
+#define DRM_FORMAT_MOD_ARM_TYPE_MISC 0x01
+#define DRM_FORMAT_MOD_ARM_AFBC(__afbc_mode) DRM_FORMAT_MOD_ARM_CODE(DRM_FORMAT_MOD_ARM_TYPE_AFBC, __afbc_mode)
+#define AFBC_FORMAT_MOD_BLOCK_SIZE_MASK 0xf
+#define AFBC_FORMAT_MOD_BLOCK_SIZE_16x16 (1ULL)
+#define AFBC_FORMAT_MOD_BLOCK_SIZE_32x8 (2ULL)
+#define AFBC_FORMAT_MOD_BLOCK_SIZE_64x4 (3ULL)
+#define AFBC_FORMAT_MOD_BLOCK_SIZE_32x8_64x4 (4ULL)
+#define AFBC_FORMAT_MOD_YTR (1ULL << 4)
+#define AFBC_FORMAT_MOD_SPLIT (1ULL << 5)
+#define AFBC_FORMAT_MOD_SPARSE (1ULL << 6)
+#define AFBC_FORMAT_MOD_CBR (1ULL << 7)
+#define AFBC_FORMAT_MOD_TILED (1ULL << 8)
+#define AFBC_FORMAT_MOD_SC (1ULL << 9)
+#define AFBC_FORMAT_MOD_DB (1ULL << 10)
+#define AFBC_FORMAT_MOD_BCH (1ULL << 11)
+#define AFBC_FORMAT_MOD_USM (1ULL << 12)
+#define DRM_FORMAT_MOD_ARM_TYPE_AFRC 0x02
+#define DRM_FORMAT_MOD_ARM_AFRC(__afrc_mode) DRM_FORMAT_MOD_ARM_CODE(DRM_FORMAT_MOD_ARM_TYPE_AFRC, __afrc_mode)
+#define AFRC_FORMAT_MOD_CU_SIZE_MASK 0xf
+#define AFRC_FORMAT_MOD_CU_SIZE_16 (1ULL)
+#define AFRC_FORMAT_MOD_CU_SIZE_24 (2ULL)
+#define AFRC_FORMAT_MOD_CU_SIZE_32 (3ULL)
+#define AFRC_FORMAT_MOD_CU_SIZE_P0(__afrc_cu_size) (__afrc_cu_size)
+#define AFRC_FORMAT_MOD_CU_SIZE_P12(__afrc_cu_size) ((__afrc_cu_size) << 4)
+#define AFRC_FORMAT_MOD_LAYOUT_SCAN (1ULL << 8)
+#define DRM_FORMAT_MOD_ARM_16X16_BLOCK_U_INTERLEAVED DRM_FORMAT_MOD_ARM_CODE(DRM_FORMAT_MOD_ARM_TYPE_MISC, 1ULL)
+#define DRM_FORMAT_MOD_ALLWINNER_TILED fourcc_mod_code(ALLWINNER, 1)
+#define __fourcc_mod_amlogic_layout_mask 0xff
+#define __fourcc_mod_amlogic_options_shift 8
+#define __fourcc_mod_amlogic_options_mask 0xff
+#define DRM_FORMAT_MOD_AMLOGIC_FBC(__layout,__options) fourcc_mod_code(AMLOGIC, ((__layout) & __fourcc_mod_amlogic_layout_mask) | (((__options) & __fourcc_mod_amlogic_options_mask) << __fourcc_mod_amlogic_options_shift))
+#define AMLOGIC_FBC_LAYOUT_BASIC (1ULL)
+#define AMLOGIC_FBC_LAYOUT_SCATTER (2ULL)
+#define AMLOGIC_FBC_OPTION_MEM_SAVING (1ULL << 0)
+#define AMD_FMT_MOD fourcc_mod_code(AMD, 0)
+#define IS_AMD_FMT_MOD(val) (((val) >> 56) == DRM_FORMAT_MOD_VENDOR_AMD)
+#define AMD_FMT_MOD_TILE_VER_GFX9 1
+#define AMD_FMT_MOD_TILE_VER_GFX10 2
+#define AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS 3
+#define AMD_FMT_MOD_TILE_GFX9_64K_S 9
+#define AMD_FMT_MOD_TILE_GFX9_64K_D 10
+#define AMD_FMT_MOD_TILE_GFX9_64K_S_X 25
+#define AMD_FMT_MOD_TILE_GFX9_64K_D_X 26
+#define AMD_FMT_MOD_TILE_GFX9_64K_R_X 27
+#define AMD_FMT_MOD_DCC_BLOCK_64B 0
+#define AMD_FMT_MOD_DCC_BLOCK_128B 1
+#define AMD_FMT_MOD_DCC_BLOCK_256B 2
+#define AMD_FMT_MOD_TILE_VERSION_SHIFT 0
+#define AMD_FMT_MOD_TILE_VERSION_MASK 0xFF
+#define AMD_FMT_MOD_TILE_SHIFT 8
+#define AMD_FMT_MOD_TILE_MASK 0x1F
+#define AMD_FMT_MOD_DCC_SHIFT 13
+#define AMD_FMT_MOD_DCC_MASK 0x1
+#define AMD_FMT_MOD_DCC_RETILE_SHIFT 14
+#define AMD_FMT_MOD_DCC_RETILE_MASK 0x1
+#define AMD_FMT_MOD_DCC_PIPE_ALIGN_SHIFT 15
+#define AMD_FMT_MOD_DCC_PIPE_ALIGN_MASK 0x1
+#define AMD_FMT_MOD_DCC_INDEPENDENT_64B_SHIFT 16
+#define AMD_FMT_MOD_DCC_INDEPENDENT_64B_MASK 0x1
+#define AMD_FMT_MOD_DCC_INDEPENDENT_128B_SHIFT 17
+#define AMD_FMT_MOD_DCC_INDEPENDENT_128B_MASK 0x1
+#define AMD_FMT_MOD_DCC_MAX_COMPRESSED_BLOCK_SHIFT 18
+#define AMD_FMT_MOD_DCC_MAX_COMPRESSED_BLOCK_MASK 0x3
+#define AMD_FMT_MOD_DCC_CONSTANT_ENCODE_SHIFT 20
+#define AMD_FMT_MOD_DCC_CONSTANT_ENCODE_MASK 0x1
+#define AMD_FMT_MOD_PIPE_XOR_BITS_SHIFT 21
+#define AMD_FMT_MOD_PIPE_XOR_BITS_MASK 0x7
+#define AMD_FMT_MOD_BANK_XOR_BITS_SHIFT 24
+#define AMD_FMT_MOD_BANK_XOR_BITS_MASK 0x7
+#define AMD_FMT_MOD_PACKERS_SHIFT 27
+#define AMD_FMT_MOD_PACKERS_MASK 0x7
+#define AMD_FMT_MOD_RB_SHIFT 30
+#define AMD_FMT_MOD_RB_MASK 0x7
+#define AMD_FMT_MOD_PIPE_SHIFT 33
+#define AMD_FMT_MOD_PIPE_MASK 0x7
+#define AMD_FMT_MOD_SET(field,value) ((uint64_t) (value) << AMD_FMT_MOD_ ##field ##_SHIFT)
+#define AMD_FMT_MOD_GET(field,value) (((value) >> AMD_FMT_MOD_ ##field ##_SHIFT) & AMD_FMT_MOD_ ##field ##_MASK)
+#define AMD_FMT_MOD_CLEAR(field) (~((uint64_t) AMD_FMT_MOD_ ##field ##_MASK << AMD_FMT_MOD_ ##field ##_SHIFT))
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/drm_mode.h b/x86_64-linux-musl/include/drm/drm_mode.h
new file mode 100644
index 0000000..9a6a6d9
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/drm_mode.h
@@ -0,0 +1,501 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _DRM_MODE_H
+#define _DRM_MODE_H
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_CONNECTOR_NAME_LEN 32
+#define DRM_DISPLAY_MODE_LEN 32
+#define DRM_PROP_NAME_LEN 32
+#define DRM_MODE_TYPE_BUILTIN (1 << 0)
+#define DRM_MODE_TYPE_CLOCK_C ((1 << 1) | DRM_MODE_TYPE_BUILTIN)
+#define DRM_MODE_TYPE_CRTC_C ((1 << 2) | DRM_MODE_TYPE_BUILTIN)
+#define DRM_MODE_TYPE_PREFERRED (1 << 3)
+#define DRM_MODE_TYPE_DEFAULT (1 << 4)
+#define DRM_MODE_TYPE_USERDEF (1 << 5)
+#define DRM_MODE_TYPE_DRIVER (1 << 6)
+#define DRM_MODE_TYPE_ALL (DRM_MODE_TYPE_PREFERRED | DRM_MODE_TYPE_USERDEF | DRM_MODE_TYPE_DRIVER)
+#define DRM_MODE_FLAG_PHSYNC (1 << 0)
+#define DRM_MODE_FLAG_NHSYNC (1 << 1)
+#define DRM_MODE_FLAG_PVSYNC (1 << 2)
+#define DRM_MODE_FLAG_NVSYNC (1 << 3)
+#define DRM_MODE_FLAG_INTERLACE (1 << 4)
+#define DRM_MODE_FLAG_DBLSCAN (1 << 5)
+#define DRM_MODE_FLAG_CSYNC (1 << 6)
+#define DRM_MODE_FLAG_PCSYNC (1 << 7)
+#define DRM_MODE_FLAG_NCSYNC (1 << 8)
+#define DRM_MODE_FLAG_HSKEW (1 << 9)
+#define DRM_MODE_FLAG_BCAST (1 << 10)
+#define DRM_MODE_FLAG_PIXMUX (1 << 11)
+#define DRM_MODE_FLAG_DBLCLK (1 << 12)
+#define DRM_MODE_FLAG_CLKDIV2 (1 << 13)
+#define DRM_MODE_FLAG_3D_MASK (0x1f << 14)
+#define DRM_MODE_FLAG_3D_NONE (0 << 14)
+#define DRM_MODE_FLAG_3D_FRAME_PACKING (1 << 14)
+#define DRM_MODE_FLAG_3D_FIELD_ALTERNATIVE (2 << 14)
+#define DRM_MODE_FLAG_3D_LINE_ALTERNATIVE (3 << 14)
+#define DRM_MODE_FLAG_3D_SIDE_BY_SIDE_FULL (4 << 14)
+#define DRM_MODE_FLAG_3D_L_DEPTH (5 << 14)
+#define DRM_MODE_FLAG_3D_L_DEPTH_GFX_GFX_DEPTH (6 << 14)
+#define DRM_MODE_FLAG_3D_TOP_AND_BOTTOM (7 << 14)
+#define DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF (8 << 14)
+#define DRM_MODE_PICTURE_ASPECT_NONE 0
+#define DRM_MODE_PICTURE_ASPECT_4_3 1
+#define DRM_MODE_PICTURE_ASPECT_16_9 2
+#define DRM_MODE_PICTURE_ASPECT_64_27 3
+#define DRM_MODE_PICTURE_ASPECT_256_135 4
+#define DRM_MODE_CONTENT_TYPE_NO_DATA 0
+#define DRM_MODE_CONTENT_TYPE_GRAPHICS 1
+#define DRM_MODE_CONTENT_TYPE_PHOTO 2
+#define DRM_MODE_CONTENT_TYPE_CINEMA 3
+#define DRM_MODE_CONTENT_TYPE_GAME 4
+#define DRM_MODE_FLAG_PIC_AR_MASK (0x0F << 19)
+#define DRM_MODE_FLAG_PIC_AR_NONE (DRM_MODE_PICTURE_ASPECT_NONE << 19)
+#define DRM_MODE_FLAG_PIC_AR_4_3 (DRM_MODE_PICTURE_ASPECT_4_3 << 19)
+#define DRM_MODE_FLAG_PIC_AR_16_9 (DRM_MODE_PICTURE_ASPECT_16_9 << 19)
+#define DRM_MODE_FLAG_PIC_AR_64_27 (DRM_MODE_PICTURE_ASPECT_64_27 << 19)
+#define DRM_MODE_FLAG_PIC_AR_256_135 (DRM_MODE_PICTURE_ASPECT_256_135 << 19)
+#define DRM_MODE_FLAG_ALL (DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLSCAN | DRM_MODE_FLAG_CSYNC | DRM_MODE_FLAG_PCSYNC | DRM_MODE_FLAG_NCSYNC | DRM_MODE_FLAG_HSKEW | DRM_MODE_FLAG_DBLCLK | DRM_MODE_FLAG_CLKDIV2 | DRM_MODE_FLAG_3D_MASK)
+#define DRM_MODE_DPMS_ON 0
+#define DRM_MODE_DPMS_STANDBY 1
+#define DRM_MODE_DPMS_SUSPEND 2
+#define DRM_MODE_DPMS_OFF 3
+#define DRM_MODE_SCALE_NONE 0
+#define DRM_MODE_SCALE_FULLSCREEN 1
+#define DRM_MODE_SCALE_CENTER 2
+#define DRM_MODE_SCALE_ASPECT 3
+#define DRM_MODE_DITHERING_OFF 0
+#define DRM_MODE_DITHERING_ON 1
+#define DRM_MODE_DITHERING_AUTO 2
+#define DRM_MODE_DIRTY_OFF 0
+#define DRM_MODE_DIRTY_ON 1
+#define DRM_MODE_DIRTY_ANNOTATE 2
+#define DRM_MODE_LINK_STATUS_GOOD 0
+#define DRM_MODE_LINK_STATUS_BAD 1
+#define DRM_MODE_ROTATE_0 (1 << 0)
+#define DRM_MODE_ROTATE_90 (1 << 1)
+#define DRM_MODE_ROTATE_180 (1 << 2)
+#define DRM_MODE_ROTATE_270 (1 << 3)
+#define DRM_MODE_ROTATE_MASK (DRM_MODE_ROTATE_0 | DRM_MODE_ROTATE_90 | DRM_MODE_ROTATE_180 | DRM_MODE_ROTATE_270)
+#define DRM_MODE_REFLECT_X (1 << 4)
+#define DRM_MODE_REFLECT_Y (1 << 5)
+#define DRM_MODE_REFLECT_MASK (DRM_MODE_REFLECT_X | DRM_MODE_REFLECT_Y)
+#define DRM_MODE_CONTENT_PROTECTION_UNDESIRED 0
+#define DRM_MODE_CONTENT_PROTECTION_DESIRED 1
+#define DRM_MODE_CONTENT_PROTECTION_ENABLED 2
+struct drm_mode_modeinfo {
+  __u32 clock;
+  __u16 hdisplay;
+  __u16 hsync_start;
+  __u16 hsync_end;
+  __u16 htotal;
+  __u16 hskew;
+  __u16 vdisplay;
+  __u16 vsync_start;
+  __u16 vsync_end;
+  __u16 vtotal;
+  __u16 vscan;
+  __u32 vrefresh;
+  __u32 flags;
+  __u32 type;
+  char name[DRM_DISPLAY_MODE_LEN];
+};
+struct drm_mode_card_res {
+  __u64 fb_id_ptr;
+  __u64 crtc_id_ptr;
+  __u64 connector_id_ptr;
+  __u64 encoder_id_ptr;
+  __u32 count_fbs;
+  __u32 count_crtcs;
+  __u32 count_connectors;
+  __u32 count_encoders;
+  __u32 min_width;
+  __u32 max_width;
+  __u32 min_height;
+  __u32 max_height;
+};
+struct drm_mode_crtc {
+  __u64 set_connectors_ptr;
+  __u32 count_connectors;
+  __u32 crtc_id;
+  __u32 fb_id;
+  __u32 x;
+  __u32 y;
+  __u32 gamma_size;
+  __u32 mode_valid;
+  struct drm_mode_modeinfo mode;
+};
+#define DRM_MODE_PRESENT_TOP_FIELD (1 << 0)
+#define DRM_MODE_PRESENT_BOTTOM_FIELD (1 << 1)
+struct drm_mode_set_plane {
+  __u32 plane_id;
+  __u32 crtc_id;
+  __u32 fb_id;
+  __u32 flags;
+  __s32 crtc_x;
+  __s32 crtc_y;
+  __u32 crtc_w;
+  __u32 crtc_h;
+  __u32 src_x;
+  __u32 src_y;
+  __u32 src_h;
+  __u32 src_w;
+};
+struct drm_mode_get_plane {
+  __u32 plane_id;
+  __u32 crtc_id;
+  __u32 fb_id;
+  __u32 possible_crtcs;
+  __u32 gamma_size;
+  __u32 count_format_types;
+  __u64 format_type_ptr;
+};
+struct drm_mode_get_plane_res {
+  __u64 plane_id_ptr;
+  __u32 count_planes;
+};
+#define DRM_MODE_ENCODER_NONE 0
+#define DRM_MODE_ENCODER_DAC 1
+#define DRM_MODE_ENCODER_TMDS 2
+#define DRM_MODE_ENCODER_LVDS 3
+#define DRM_MODE_ENCODER_TVDAC 4
+#define DRM_MODE_ENCODER_VIRTUAL 5
+#define DRM_MODE_ENCODER_DSI 6
+#define DRM_MODE_ENCODER_DPMST 7
+#define DRM_MODE_ENCODER_DPI 8
+struct drm_mode_get_encoder {
+  __u32 encoder_id;
+  __u32 encoder_type;
+  __u32 crtc_id;
+  __u32 possible_crtcs;
+  __u32 possible_clones;
+};
+enum drm_mode_subconnector {
+  DRM_MODE_SUBCONNECTOR_Automatic = 0,
+  DRM_MODE_SUBCONNECTOR_Unknown = 0,
+  DRM_MODE_SUBCONNECTOR_VGA = 1,
+  DRM_MODE_SUBCONNECTOR_DVID = 3,
+  DRM_MODE_SUBCONNECTOR_DVIA = 4,
+  DRM_MODE_SUBCONNECTOR_Composite = 5,
+  DRM_MODE_SUBCONNECTOR_SVIDEO = 6,
+  DRM_MODE_SUBCONNECTOR_Component = 8,
+  DRM_MODE_SUBCONNECTOR_SCART = 9,
+  DRM_MODE_SUBCONNECTOR_DisplayPort = 10,
+  DRM_MODE_SUBCONNECTOR_HDMIA = 11,
+  DRM_MODE_SUBCONNECTOR_Native = 15,
+  DRM_MODE_SUBCONNECTOR_Wireless = 18,
+};
+#define DRM_MODE_CONNECTOR_Unknown 0
+#define DRM_MODE_CONNECTOR_VGA 1
+#define DRM_MODE_CONNECTOR_DVII 2
+#define DRM_MODE_CONNECTOR_DVID 3
+#define DRM_MODE_CONNECTOR_DVIA 4
+#define DRM_MODE_CONNECTOR_Composite 5
+#define DRM_MODE_CONNECTOR_SVIDEO 6
+#define DRM_MODE_CONNECTOR_LVDS 7
+#define DRM_MODE_CONNECTOR_Component 8
+#define DRM_MODE_CONNECTOR_9PinDIN 9
+#define DRM_MODE_CONNECTOR_DisplayPort 10
+#define DRM_MODE_CONNECTOR_HDMIA 11
+#define DRM_MODE_CONNECTOR_HDMIB 12
+#define DRM_MODE_CONNECTOR_TV 13
+#define DRM_MODE_CONNECTOR_eDP 14
+#define DRM_MODE_CONNECTOR_VIRTUAL 15
+#define DRM_MODE_CONNECTOR_DSI 16
+#define DRM_MODE_CONNECTOR_DPI 17
+#define DRM_MODE_CONNECTOR_WRITEBACK 18
+#define DRM_MODE_CONNECTOR_SPI 19
+#define DRM_MODE_CONNECTOR_USB 20
+struct drm_mode_get_connector {
+  __u64 encoders_ptr;
+  __u64 modes_ptr;
+  __u64 props_ptr;
+  __u64 prop_values_ptr;
+  __u32 count_modes;
+  __u32 count_props;
+  __u32 count_encoders;
+  __u32 encoder_id;
+  __u32 connector_id;
+  __u32 connector_type;
+  __u32 connector_type_id;
+  __u32 connection;
+  __u32 mm_width;
+  __u32 mm_height;
+  __u32 subpixel;
+  __u32 pad;
+};
+#define DRM_MODE_PROP_PENDING (1 << 0)
+#define DRM_MODE_PROP_RANGE (1 << 1)
+#define DRM_MODE_PROP_IMMUTABLE (1 << 2)
+#define DRM_MODE_PROP_ENUM (1 << 3)
+#define DRM_MODE_PROP_BLOB (1 << 4)
+#define DRM_MODE_PROP_BITMASK (1 << 5)
+#define DRM_MODE_PROP_LEGACY_TYPE (DRM_MODE_PROP_RANGE | DRM_MODE_PROP_ENUM | DRM_MODE_PROP_BLOB | DRM_MODE_PROP_BITMASK)
+#define DRM_MODE_PROP_EXTENDED_TYPE 0x0000ffc0
+#define DRM_MODE_PROP_TYPE(n) ((n) << 6)
+#define DRM_MODE_PROP_OBJECT DRM_MODE_PROP_TYPE(1)
+#define DRM_MODE_PROP_SIGNED_RANGE DRM_MODE_PROP_TYPE(2)
+#define DRM_MODE_PROP_ATOMIC 0x80000000
+struct drm_mode_property_enum {
+  __u64 value;
+  char name[DRM_PROP_NAME_LEN];
+};
+struct drm_mode_get_property {
+  __u64 values_ptr;
+  __u64 enum_blob_ptr;
+  __u32 prop_id;
+  __u32 flags;
+  char name[DRM_PROP_NAME_LEN];
+  __u32 count_values;
+  __u32 count_enum_blobs;
+};
+struct drm_mode_connector_set_property {
+  __u64 value;
+  __u32 prop_id;
+  __u32 connector_id;
+};
+#define DRM_MODE_OBJECT_CRTC 0xcccccccc
+#define DRM_MODE_OBJECT_CONNECTOR 0xc0c0c0c0
+#define DRM_MODE_OBJECT_ENCODER 0xe0e0e0e0
+#define DRM_MODE_OBJECT_MODE 0xdededede
+#define DRM_MODE_OBJECT_PROPERTY 0xb0b0b0b0
+#define DRM_MODE_OBJECT_FB 0xfbfbfbfb
+#define DRM_MODE_OBJECT_BLOB 0xbbbbbbbb
+#define DRM_MODE_OBJECT_PLANE 0xeeeeeeee
+#define DRM_MODE_OBJECT_ANY 0
+struct drm_mode_obj_get_properties {
+  __u64 props_ptr;
+  __u64 prop_values_ptr;
+  __u32 count_props;
+  __u32 obj_id;
+  __u32 obj_type;
+};
+struct drm_mode_obj_set_property {
+  __u64 value;
+  __u32 prop_id;
+  __u32 obj_id;
+  __u32 obj_type;
+};
+struct drm_mode_get_blob {
+  __u32 blob_id;
+  __u32 length;
+  __u64 data;
+};
+struct drm_mode_fb_cmd {
+  __u32 fb_id;
+  __u32 width;
+  __u32 height;
+  __u32 pitch;
+  __u32 bpp;
+  __u32 depth;
+  __u32 handle;
+};
+#define DRM_MODE_FB_INTERLACED (1 << 0)
+#define DRM_MODE_FB_MODIFIERS (1 << 1)
+struct drm_mode_fb_cmd2 {
+  __u32 fb_id;
+  __u32 width;
+  __u32 height;
+  __u32 pixel_format;
+  __u32 flags;
+  __u32 handles[4];
+  __u32 pitches[4];
+  __u32 offsets[4];
+  __u64 modifier[4];
+};
+#define DRM_MODE_FB_DIRTY_ANNOTATE_COPY 0x01
+#define DRM_MODE_FB_DIRTY_ANNOTATE_FILL 0x02
+#define DRM_MODE_FB_DIRTY_FLAGS 0x03
+#define DRM_MODE_FB_DIRTY_MAX_CLIPS 256
+struct drm_mode_fb_dirty_cmd {
+  __u32 fb_id;
+  __u32 flags;
+  __u32 color;
+  __u32 num_clips;
+  __u64 clips_ptr;
+};
+struct drm_mode_mode_cmd {
+  __u32 connector_id;
+  struct drm_mode_modeinfo mode;
+};
+#define DRM_MODE_CURSOR_BO 0x01
+#define DRM_MODE_CURSOR_MOVE 0x02
+#define DRM_MODE_CURSOR_FLAGS 0x03
+struct drm_mode_cursor {
+  __u32 flags;
+  __u32 crtc_id;
+  __s32 x;
+  __s32 y;
+  __u32 width;
+  __u32 height;
+  __u32 handle;
+};
+struct drm_mode_cursor2 {
+  __u32 flags;
+  __u32 crtc_id;
+  __s32 x;
+  __s32 y;
+  __u32 width;
+  __u32 height;
+  __u32 handle;
+  __s32 hot_x;
+  __s32 hot_y;
+};
+struct drm_mode_crtc_lut {
+  __u32 crtc_id;
+  __u32 gamma_size;
+  __u64 red;
+  __u64 green;
+  __u64 blue;
+};
+struct drm_color_ctm {
+  __u64 matrix[9];
+};
+struct drm_color_lut {
+  __u16 red;
+  __u16 green;
+  __u16 blue;
+  __u16 reserved;
+};
+struct hdr_metadata_infoframe {
+  __u8 eotf;
+  __u8 metadata_type;
+  struct {
+    __u16 x, y;
+  } display_primaries[3];
+  struct {
+    __u16 x, y;
+  } white_point;
+  __u16 max_display_mastering_luminance;
+  __u16 min_display_mastering_luminance;
+  __u16 max_cll;
+  __u16 max_fall;
+};
+struct hdr_output_metadata {
+  __u32 metadata_type;
+  union {
+    struct hdr_metadata_infoframe hdmi_metadata_type1;
+  };
+};
+#define DRM_MODE_PAGE_FLIP_EVENT 0x01
+#define DRM_MODE_PAGE_FLIP_ASYNC 0x02
+#define DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE 0x4
+#define DRM_MODE_PAGE_FLIP_TARGET_RELATIVE 0x8
+#define DRM_MODE_PAGE_FLIP_TARGET (DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE | DRM_MODE_PAGE_FLIP_TARGET_RELATIVE)
+#define DRM_MODE_PAGE_FLIP_FLAGS (DRM_MODE_PAGE_FLIP_EVENT | DRM_MODE_PAGE_FLIP_ASYNC | DRM_MODE_PAGE_FLIP_TARGET)
+struct drm_mode_crtc_page_flip {
+  __u32 crtc_id;
+  __u32 fb_id;
+  __u32 flags;
+  __u32 reserved;
+  __u64 user_data;
+};
+struct drm_mode_crtc_page_flip_target {
+  __u32 crtc_id;
+  __u32 fb_id;
+  __u32 flags;
+  __u32 sequence;
+  __u64 user_data;
+};
+struct drm_mode_create_dumb {
+  __u32 height;
+  __u32 width;
+  __u32 bpp;
+  __u32 flags;
+  __u32 handle;
+  __u32 pitch;
+  __u64 size;
+};
+struct drm_mode_map_dumb {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+};
+struct drm_mode_destroy_dumb {
+  __u32 handle;
+};
+#define DRM_MODE_ATOMIC_TEST_ONLY 0x0100
+#define DRM_MODE_ATOMIC_NONBLOCK 0x0200
+#define DRM_MODE_ATOMIC_ALLOW_MODESET 0x0400
+#define DRM_MODE_ATOMIC_FLAGS (DRM_MODE_PAGE_FLIP_EVENT | DRM_MODE_PAGE_FLIP_ASYNC | DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_NONBLOCK | DRM_MODE_ATOMIC_ALLOW_MODESET)
+struct drm_mode_atomic {
+  __u32 flags;
+  __u32 count_objs;
+  __u64 objs_ptr;
+  __u64 count_props_ptr;
+  __u64 props_ptr;
+  __u64 prop_values_ptr;
+  __u64 reserved;
+  __u64 user_data;
+};
+struct drm_format_modifier_blob {
+#define FORMAT_BLOB_CURRENT 1
+  __u32 version;
+  __u32 flags;
+  __u32 count_formats;
+  __u32 formats_offset;
+  __u32 count_modifiers;
+  __u32 modifiers_offset;
+};
+struct drm_format_modifier {
+  __u64 formats;
+  __u32 offset;
+  __u32 pad;
+  __u64 modifier;
+};
+struct drm_mode_create_blob {
+  __u64 data;
+  __u32 length;
+  __u32 blob_id;
+};
+struct drm_mode_destroy_blob {
+  __u32 blob_id;
+};
+struct drm_mode_create_lease {
+  __u64 object_ids;
+  __u32 object_count;
+  __u32 flags;
+  __u32 lessee_id;
+  __u32 fd;
+};
+struct drm_mode_list_lessees {
+  __u32 count_lessees;
+  __u32 pad;
+  __u64 lessees_ptr;
+};
+struct drm_mode_get_lease {
+  __u32 count_objects;
+  __u32 pad;
+  __u64 objects_ptr;
+};
+struct drm_mode_revoke_lease {
+  __u32 lessee_id;
+};
+struct drm_mode_rect {
+  __s32 x1;
+  __s32 y1;
+  __s32 x2;
+  __s32 y2;
+};
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/drm_sarea.h b/x86_64-linux-musl/include/drm/drm_sarea.h
new file mode 100644
index 0000000..a0c7f3a
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/drm_sarea.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 _DRM_SAREA_H_
+#define _DRM_SAREA_H_
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifdef __alpha__
+#define SAREA_MAX 0x2000U
+#elif defined(__mips__)
+#define SAREA_MAX 0x4000U
+#elif defined(__ia64__)
+#define SAREA_MAX 0x10000U
+#else
+#define SAREA_MAX 0x2000U
+#endif
+#define SAREA_MAX_DRAWABLES 256
+#define SAREA_DRAWABLE_CLAIMED_ENTRY 0x80000000
+struct drm_sarea_drawable {
+  unsigned int stamp;
+  unsigned int flags;
+};
+struct drm_sarea_frame {
+  unsigned int x;
+  unsigned int y;
+  unsigned int width;
+  unsigned int height;
+  unsigned int fullscreen;
+};
+struct drm_sarea {
+  struct drm_hw_lock lock;
+  struct drm_hw_lock drawable_lock;
+  struct drm_sarea_drawable drawableTable[SAREA_MAX_DRAWABLES];
+  struct drm_sarea_frame frame;
+  drm_context_t dummy_context;
+};
+typedef struct drm_sarea_drawable drm_sarea_drawable_t;
+typedef struct drm_sarea_frame drm_sarea_frame_t;
+typedef struct drm_sarea drm_sarea_t;
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/etnaviv_drm.h b/x86_64-linux-musl/include/drm/etnaviv_drm.h
new file mode 100644
index 0000000..7f8d5fa
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/etnaviv_drm.h
@@ -0,0 +1,204 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ETNAVIV_DRM_H__
+#define __ETNAVIV_DRM_H__
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+struct drm_etnaviv_timespec {
+  __s64 tv_sec;
+  __s64 tv_nsec;
+};
+#define ETNAVIV_PARAM_GPU_MODEL 0x01
+#define ETNAVIV_PARAM_GPU_REVISION 0x02
+#define ETNAVIV_PARAM_GPU_FEATURES_0 0x03
+#define ETNAVIV_PARAM_GPU_FEATURES_1 0x04
+#define ETNAVIV_PARAM_GPU_FEATURES_2 0x05
+#define ETNAVIV_PARAM_GPU_FEATURES_3 0x06
+#define ETNAVIV_PARAM_GPU_FEATURES_4 0x07
+#define ETNAVIV_PARAM_GPU_FEATURES_5 0x08
+#define ETNAVIV_PARAM_GPU_FEATURES_6 0x09
+#define ETNAVIV_PARAM_GPU_FEATURES_7 0x0a
+#define ETNAVIV_PARAM_GPU_FEATURES_8 0x0b
+#define ETNAVIV_PARAM_GPU_FEATURES_9 0x0c
+#define ETNAVIV_PARAM_GPU_FEATURES_10 0x0d
+#define ETNAVIV_PARAM_GPU_FEATURES_11 0x0e
+#define ETNAVIV_PARAM_GPU_FEATURES_12 0x0f
+#define ETNAVIV_PARAM_GPU_STREAM_COUNT 0x10
+#define ETNAVIV_PARAM_GPU_REGISTER_MAX 0x11
+#define ETNAVIV_PARAM_GPU_THREAD_COUNT 0x12
+#define ETNAVIV_PARAM_GPU_VERTEX_CACHE_SIZE 0x13
+#define ETNAVIV_PARAM_GPU_SHADER_CORE_COUNT 0x14
+#define ETNAVIV_PARAM_GPU_PIXEL_PIPES 0x15
+#define ETNAVIV_PARAM_GPU_VERTEX_OUTPUT_BUFFER_SIZE 0x16
+#define ETNAVIV_PARAM_GPU_BUFFER_SIZE 0x17
+#define ETNAVIV_PARAM_GPU_INSTRUCTION_COUNT 0x18
+#define ETNAVIV_PARAM_GPU_NUM_CONSTANTS 0x19
+#define ETNAVIV_PARAM_GPU_NUM_VARYINGS 0x1a
+#define ETNAVIV_PARAM_SOFTPIN_START_ADDR 0x1b
+#define ETNAVIV_PARAM_GPU_PRODUCT_ID 0x1c
+#define ETNAVIV_PARAM_GPU_CUSTOMER_ID 0x1d
+#define ETNAVIV_PARAM_GPU_ECO_ID 0x1e
+#define ETNA_MAX_PIPES 4
+struct drm_etnaviv_param {
+  __u32 pipe;
+  __u32 param;
+  __u64 value;
+};
+#define ETNA_BO_CACHE_MASK 0x000f0000
+#define ETNA_BO_CACHED 0x00010000
+#define ETNA_BO_WC 0x00020000
+#define ETNA_BO_UNCACHED 0x00040000
+#define ETNA_BO_FORCE_MMU 0x00100000
+struct drm_etnaviv_gem_new {
+  __u64 size;
+  __u32 flags;
+  __u32 handle;
+};
+struct drm_etnaviv_gem_info {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+};
+#define ETNA_PREP_READ 0x01
+#define ETNA_PREP_WRITE 0x02
+#define ETNA_PREP_NOSYNC 0x04
+struct drm_etnaviv_gem_cpu_prep {
+  __u32 handle;
+  __u32 op;
+  struct drm_etnaviv_timespec timeout;
+};
+struct drm_etnaviv_gem_cpu_fini {
+  __u32 handle;
+  __u32 flags;
+};
+struct drm_etnaviv_gem_submit_reloc {
+  __u32 submit_offset;
+  __u32 reloc_idx;
+  __u64 reloc_offset;
+  __u32 flags;
+};
+#define ETNA_SUBMIT_BO_READ 0x0001
+#define ETNA_SUBMIT_BO_WRITE 0x0002
+struct drm_etnaviv_gem_submit_bo {
+  __u32 flags;
+  __u32 handle;
+  __u64 presumed;
+};
+#define ETNA_PM_PROCESS_PRE 0x0001
+#define ETNA_PM_PROCESS_POST 0x0002
+struct drm_etnaviv_gem_submit_pmr {
+  __u32 flags;
+  __u8 domain;
+  __u8 pad;
+  __u16 signal;
+  __u32 sequence;
+  __u32 read_offset;
+  __u32 read_idx;
+};
+#define ETNA_SUBMIT_NO_IMPLICIT 0x0001
+#define ETNA_SUBMIT_FENCE_FD_IN 0x0002
+#define ETNA_SUBMIT_FENCE_FD_OUT 0x0004
+#define ETNA_SUBMIT_SOFTPIN 0x0008
+#define ETNA_SUBMIT_FLAGS (ETNA_SUBMIT_NO_IMPLICIT | ETNA_SUBMIT_FENCE_FD_IN | ETNA_SUBMIT_FENCE_FD_OUT | ETNA_SUBMIT_SOFTPIN)
+#define ETNA_PIPE_3D 0x00
+#define ETNA_PIPE_2D 0x01
+#define ETNA_PIPE_VG 0x02
+struct drm_etnaviv_gem_submit {
+  __u32 fence;
+  __u32 pipe;
+  __u32 exec_state;
+  __u32 nr_bos;
+  __u32 nr_relocs;
+  __u32 stream_size;
+  __u64 bos;
+  __u64 relocs;
+  __u64 stream;
+  __u32 flags;
+  __s32 fence_fd;
+  __u64 pmrs;
+  __u32 nr_pmrs;
+  __u32 pad;
+};
+#define ETNA_WAIT_NONBLOCK 0x01
+struct drm_etnaviv_wait_fence {
+  __u32 pipe;
+  __u32 fence;
+  __u32 flags;
+  __u32 pad;
+  struct drm_etnaviv_timespec timeout;
+};
+#define ETNA_USERPTR_READ 0x01
+#define ETNA_USERPTR_WRITE 0x02
+struct drm_etnaviv_gem_userptr {
+  __u64 user_ptr;
+  __u64 user_size;
+  __u32 flags;
+  __u32 handle;
+};
+struct drm_etnaviv_gem_wait {
+  __u32 pipe;
+  __u32 handle;
+  __u32 flags;
+  __u32 pad;
+  struct drm_etnaviv_timespec timeout;
+};
+struct drm_etnaviv_pm_domain {
+  __u32 pipe;
+  __u8 iter;
+  __u8 id;
+  __u16 nr_signals;
+  char name[64];
+};
+struct drm_etnaviv_pm_signal {
+  __u32 pipe;
+  __u8 domain;
+  __u8 pad;
+  __u16 iter;
+  __u16 id;
+  char name[64];
+};
+#define DRM_ETNAVIV_GET_PARAM 0x00
+#define DRM_ETNAVIV_GEM_NEW 0x02
+#define DRM_ETNAVIV_GEM_INFO 0x03
+#define DRM_ETNAVIV_GEM_CPU_PREP 0x04
+#define DRM_ETNAVIV_GEM_CPU_FINI 0x05
+#define DRM_ETNAVIV_GEM_SUBMIT 0x06
+#define DRM_ETNAVIV_WAIT_FENCE 0x07
+#define DRM_ETNAVIV_GEM_USERPTR 0x08
+#define DRM_ETNAVIV_GEM_WAIT 0x09
+#define DRM_ETNAVIV_PM_QUERY_DOM 0x0a
+#define DRM_ETNAVIV_PM_QUERY_SIG 0x0b
+#define DRM_ETNAVIV_NUM_IOCTLS 0x0c
+#define DRM_IOCTL_ETNAVIV_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_ETNAVIV_GET_PARAM, struct drm_etnaviv_param)
+#define DRM_IOCTL_ETNAVIV_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_ETNAVIV_GEM_NEW, struct drm_etnaviv_gem_new)
+#define DRM_IOCTL_ETNAVIV_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_ETNAVIV_GEM_INFO, struct drm_etnaviv_gem_info)
+#define DRM_IOCTL_ETNAVIV_GEM_CPU_PREP DRM_IOW(DRM_COMMAND_BASE + DRM_ETNAVIV_GEM_CPU_PREP, struct drm_etnaviv_gem_cpu_prep)
+#define DRM_IOCTL_ETNAVIV_GEM_CPU_FINI DRM_IOW(DRM_COMMAND_BASE + DRM_ETNAVIV_GEM_CPU_FINI, struct drm_etnaviv_gem_cpu_fini)
+#define DRM_IOCTL_ETNAVIV_GEM_SUBMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_ETNAVIV_GEM_SUBMIT, struct drm_etnaviv_gem_submit)
+#define DRM_IOCTL_ETNAVIV_WAIT_FENCE DRM_IOW(DRM_COMMAND_BASE + DRM_ETNAVIV_WAIT_FENCE, struct drm_etnaviv_wait_fence)
+#define DRM_IOCTL_ETNAVIV_GEM_USERPTR DRM_IOWR(DRM_COMMAND_BASE + DRM_ETNAVIV_GEM_USERPTR, struct drm_etnaviv_gem_userptr)
+#define DRM_IOCTL_ETNAVIV_GEM_WAIT DRM_IOW(DRM_COMMAND_BASE + DRM_ETNAVIV_GEM_WAIT, struct drm_etnaviv_gem_wait)
+#define DRM_IOCTL_ETNAVIV_PM_QUERY_DOM DRM_IOWR(DRM_COMMAND_BASE + DRM_ETNAVIV_PM_QUERY_DOM, struct drm_etnaviv_pm_domain)
+#define DRM_IOCTL_ETNAVIV_PM_QUERY_SIG DRM_IOWR(DRM_COMMAND_BASE + DRM_ETNAVIV_PM_QUERY_SIG, struct drm_etnaviv_pm_signal)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/exynos_drm.h b/x86_64-linux-musl/include/drm/exynos_drm.h
new file mode 100644
index 0000000..4918035
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/exynos_drm.h
@@ -0,0 +1,231 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_EXYNOS_DRM_H_
+#define _UAPI_EXYNOS_DRM_H_
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+struct drm_exynos_gem_create {
+  __u64 size;
+  __u32 flags;
+  __u32 handle;
+};
+struct drm_exynos_gem_map {
+  __u32 handle;
+  __u32 reserved;
+  __u64 offset;
+};
+struct drm_exynos_gem_info {
+  __u32 handle;
+  __u32 flags;
+  __u64 size;
+};
+struct drm_exynos_vidi_connection {
+  __u32 connection;
+  __u32 extensions;
+  __u64 edid;
+};
+enum e_drm_exynos_gem_mem_type {
+  EXYNOS_BO_CONTIG = 0 << 0,
+  EXYNOS_BO_NONCONTIG = 1 << 0,
+  EXYNOS_BO_NONCACHABLE = 0 << 1,
+  EXYNOS_BO_CACHABLE = 1 << 1,
+  EXYNOS_BO_WC = 1 << 2,
+  EXYNOS_BO_MASK = EXYNOS_BO_NONCONTIG | EXYNOS_BO_CACHABLE | EXYNOS_BO_WC
+};
+struct drm_exynos_g2d_get_ver {
+  __u32 major;
+  __u32 minor;
+};
+struct drm_exynos_g2d_cmd {
+  __u32 offset;
+  __u32 data;
+};
+enum drm_exynos_g2d_buf_type {
+  G2D_BUF_USERPTR = 1 << 31,
+};
+enum drm_exynos_g2d_event_type {
+  G2D_EVENT_NOT,
+  G2D_EVENT_NONSTOP,
+  G2D_EVENT_STOP,
+};
+struct drm_exynos_g2d_userptr {
+  unsigned long userptr;
+  unsigned long size;
+};
+struct drm_exynos_g2d_set_cmdlist {
+  __u64 cmd;
+  __u64 cmd_buf;
+  __u32 cmd_nr;
+  __u32 cmd_buf_nr;
+  __u64 event_type;
+  __u64 user_data;
+};
+struct drm_exynos_g2d_exec {
+  __u64 async;
+};
+struct drm_exynos_ioctl_ipp_get_res {
+  __u32 count_ipps;
+  __u32 reserved;
+  __u64 ipp_id_ptr;
+};
+enum drm_exynos_ipp_format_type {
+  DRM_EXYNOS_IPP_FORMAT_SOURCE = 0x01,
+  DRM_EXYNOS_IPP_FORMAT_DESTINATION = 0x02,
+};
+struct drm_exynos_ipp_format {
+  __u32 fourcc;
+  __u32 type;
+  __u64 modifier;
+};
+enum drm_exynos_ipp_capability {
+  DRM_EXYNOS_IPP_CAP_CROP = 0x01,
+  DRM_EXYNOS_IPP_CAP_ROTATE = 0x02,
+  DRM_EXYNOS_IPP_CAP_SCALE = 0x04,
+  DRM_EXYNOS_IPP_CAP_CONVERT = 0x08,
+};
+struct drm_exynos_ioctl_ipp_get_caps {
+  __u32 ipp_id;
+  __u32 capabilities;
+  __u32 reserved;
+  __u32 formats_count;
+  __u64 formats_ptr;
+};
+enum drm_exynos_ipp_limit_type {
+  DRM_EXYNOS_IPP_LIMIT_TYPE_SIZE = 0x0001,
+  DRM_EXYNOS_IPP_LIMIT_TYPE_SCALE = 0x0002,
+  DRM_EXYNOS_IPP_LIMIT_SIZE_BUFFER = 0x0001 << 16,
+  DRM_EXYNOS_IPP_LIMIT_SIZE_AREA = 0x0002 << 16,
+  DRM_EXYNOS_IPP_LIMIT_SIZE_ROTATED = 0x0003 << 16,
+  DRM_EXYNOS_IPP_LIMIT_TYPE_MASK = 0x000f,
+  DRM_EXYNOS_IPP_LIMIT_SIZE_MASK = 0x000f << 16,
+};
+struct drm_exynos_ipp_limit_val {
+  __u32 min;
+  __u32 max;
+  __u32 align;
+  __u32 reserved;
+};
+struct drm_exynos_ipp_limit {
+  __u32 type;
+  __u32 reserved;
+  struct drm_exynos_ipp_limit_val h;
+  struct drm_exynos_ipp_limit_val v;
+};
+struct drm_exynos_ioctl_ipp_get_limits {
+  __u32 ipp_id;
+  __u32 fourcc;
+  __u64 modifier;
+  __u32 type;
+  __u32 limits_count;
+  __u64 limits_ptr;
+};
+enum drm_exynos_ipp_task_id {
+  DRM_EXYNOS_IPP_TASK_BUFFER = 0x0001,
+  DRM_EXYNOS_IPP_TASK_RECTANGLE = 0x0002,
+  DRM_EXYNOS_IPP_TASK_TRANSFORM = 0x0003,
+  DRM_EXYNOS_IPP_TASK_ALPHA = 0x0004,
+  DRM_EXYNOS_IPP_TASK_TYPE_SOURCE = 0x0001 << 16,
+  DRM_EXYNOS_IPP_TASK_TYPE_DESTINATION = 0x0002 << 16,
+};
+struct drm_exynos_ipp_task_buffer {
+  __u32 id;
+  __u32 fourcc;
+  __u32 width, height;
+  __u32 gem_id[4];
+  __u32 offset[4];
+  __u32 pitch[4];
+  __u64 modifier;
+};
+struct drm_exynos_ipp_task_rect {
+  __u32 id;
+  __u32 reserved;
+  __u32 x;
+  __u32 y;
+  __u32 w;
+  __u32 h;
+};
+struct drm_exynos_ipp_task_transform {
+  __u32 id;
+  __u32 rotation;
+};
+struct drm_exynos_ipp_task_alpha {
+  __u32 id;
+  __u32 value;
+};
+enum drm_exynos_ipp_flag {
+  DRM_EXYNOS_IPP_FLAG_EVENT = 0x01,
+  DRM_EXYNOS_IPP_FLAG_TEST_ONLY = 0x02,
+  DRM_EXYNOS_IPP_FLAG_NONBLOCK = 0x04,
+};
+#define DRM_EXYNOS_IPP_FLAGS (DRM_EXYNOS_IPP_FLAG_EVENT | DRM_EXYNOS_IPP_FLAG_TEST_ONLY | DRM_EXYNOS_IPP_FLAG_NONBLOCK)
+struct drm_exynos_ioctl_ipp_commit {
+  __u32 ipp_id;
+  __u32 flags;
+  __u32 reserved;
+  __u32 params_size;
+  __u64 params_ptr;
+  __u64 user_data;
+};
+#define DRM_EXYNOS_GEM_CREATE 0x00
+#define DRM_EXYNOS_GEM_MAP 0x01
+#define DRM_EXYNOS_GEM_GET 0x04
+#define DRM_EXYNOS_VIDI_CONNECTION 0x07
+#define DRM_EXYNOS_G2D_GET_VER 0x20
+#define DRM_EXYNOS_G2D_SET_CMDLIST 0x21
+#define DRM_EXYNOS_G2D_EXEC 0x22
+#define DRM_EXYNOS_IPP_GET_RESOURCES 0x40
+#define DRM_EXYNOS_IPP_GET_CAPS 0x41
+#define DRM_EXYNOS_IPP_GET_LIMITS 0x42
+#define DRM_EXYNOS_IPP_COMMIT 0x43
+#define DRM_IOCTL_EXYNOS_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_GEM_CREATE, struct drm_exynos_gem_create)
+#define DRM_IOCTL_EXYNOS_GEM_MAP DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_GEM_MAP, struct drm_exynos_gem_map)
+#define DRM_IOCTL_EXYNOS_GEM_GET DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_GEM_GET, struct drm_exynos_gem_info)
+#define DRM_IOCTL_EXYNOS_VIDI_CONNECTION DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_VIDI_CONNECTION, struct drm_exynos_vidi_connection)
+#define DRM_IOCTL_EXYNOS_G2D_GET_VER DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_G2D_GET_VER, struct drm_exynos_g2d_get_ver)
+#define DRM_IOCTL_EXYNOS_G2D_SET_CMDLIST DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_G2D_SET_CMDLIST, struct drm_exynos_g2d_set_cmdlist)
+#define DRM_IOCTL_EXYNOS_G2D_EXEC DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_G2D_EXEC, struct drm_exynos_g2d_exec)
+#define DRM_IOCTL_EXYNOS_IPP_GET_RESOURCES DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_IPP_GET_RESOURCES, struct drm_exynos_ioctl_ipp_get_res)
+#define DRM_IOCTL_EXYNOS_IPP_GET_CAPS DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_IPP_GET_CAPS, struct drm_exynos_ioctl_ipp_get_caps)
+#define DRM_IOCTL_EXYNOS_IPP_GET_LIMITS DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_IPP_GET_LIMITS, struct drm_exynos_ioctl_ipp_get_limits)
+#define DRM_IOCTL_EXYNOS_IPP_COMMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_EXYNOS_IPP_COMMIT, struct drm_exynos_ioctl_ipp_commit)
+#define DRM_EXYNOS_G2D_EVENT 0x80000000
+#define DRM_EXYNOS_IPP_EVENT 0x80000002
+struct drm_exynos_g2d_event {
+  struct drm_event base;
+  __u64 user_data;
+  __u32 tv_sec;
+  __u32 tv_usec;
+  __u32 cmdlist_no;
+  __u32 reserved;
+};
+struct drm_exynos_ipp_event {
+  struct drm_event base;
+  __u64 user_data;
+  __u32 tv_sec;
+  __u32 tv_usec;
+  __u32 ipp_id;
+  __u32 sequence;
+  __u64 reserved;
+};
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/i810_drm.h b/x86_64-linux-musl/include/drm/i810_drm.h
new file mode 100644
index 0000000..e33387d
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/i810_drm.h
@@ -0,0 +1,220 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _I810_DRM_H_
+#define _I810_DRM_H_
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef _I810_DEFINES_
+#define _I810_DEFINES_
+#define I810_DMA_BUF_ORDER 12
+#define I810_DMA_BUF_SZ (1 << I810_DMA_BUF_ORDER)
+#define I810_DMA_BUF_NR 256
+#define I810_NR_SAREA_CLIPRECTS 8
+#define I810_NR_TEX_REGIONS 64
+#define I810_LOG_MIN_TEX_REGION_SIZE 16
+#endif
+#define I810_UPLOAD_TEX0IMAGE 0x1
+#define I810_UPLOAD_TEX1IMAGE 0x2
+#define I810_UPLOAD_CTX 0x4
+#define I810_UPLOAD_BUFFERS 0x8
+#define I810_UPLOAD_TEX0 0x10
+#define I810_UPLOAD_TEX1 0x20
+#define I810_UPLOAD_CLIPRECTS 0x40
+#define I810_DESTREG_DI0 0
+#define I810_DESTREG_DI1 1
+#define I810_DESTREG_DV0 2
+#define I810_DESTREG_DV1 3
+#define I810_DESTREG_DR0 4
+#define I810_DESTREG_DR1 5
+#define I810_DESTREG_DR2 6
+#define I810_DESTREG_DR3 7
+#define I810_DESTREG_DR4 8
+#define I810_DEST_SETUP_SIZE 10
+#define I810_CTXREG_CF0 0
+#define I810_CTXREG_CF1 1
+#define I810_CTXREG_ST0 2
+#define I810_CTXREG_ST1 3
+#define I810_CTXREG_VF 4
+#define I810_CTXREG_MT 5
+#define I810_CTXREG_MC0 6
+#define I810_CTXREG_MC1 7
+#define I810_CTXREG_MC2 8
+#define I810_CTXREG_MA0 9
+#define I810_CTXREG_MA1 10
+#define I810_CTXREG_MA2 11
+#define I810_CTXREG_SDM 12
+#define I810_CTXREG_FOG 13
+#define I810_CTXREG_B1 14
+#define I810_CTXREG_B2 15
+#define I810_CTXREG_LCS 16
+#define I810_CTXREG_PV 17
+#define I810_CTXREG_ZA 18
+#define I810_CTXREG_AA 19
+#define I810_CTX_SETUP_SIZE 20
+#define I810_TEXREG_MI0 0
+#define I810_TEXREG_MI1 1
+#define I810_TEXREG_MI2 2
+#define I810_TEXREG_MI3 3
+#define I810_TEXREG_MF 4
+#define I810_TEXREG_MLC 5
+#define I810_TEXREG_MLL 6
+#define I810_TEXREG_MCS 7
+#define I810_TEX_SETUP_SIZE 8
+#define I810_FRONT 0x1
+#define I810_BACK 0x2
+#define I810_DEPTH 0x4
+typedef enum _drm_i810_init_func {
+  I810_INIT_DMA = 0x01,
+  I810_CLEANUP_DMA = 0x02,
+  I810_INIT_DMA_1_4 = 0x03
+} drm_i810_init_func_t;
+typedef struct _drm_i810_init {
+  drm_i810_init_func_t func;
+  unsigned int mmio_offset;
+  unsigned int buffers_offset;
+  int sarea_priv_offset;
+  unsigned int ring_start;
+  unsigned int ring_end;
+  unsigned int ring_size;
+  unsigned int front_offset;
+  unsigned int back_offset;
+  unsigned int depth_offset;
+  unsigned int overlay_offset;
+  unsigned int overlay_physical;
+  unsigned int w;
+  unsigned int h;
+  unsigned int pitch;
+  unsigned int pitch_bits;
+} drm_i810_init_t;
+typedef struct _drm_i810_pre12_init {
+  drm_i810_init_func_t func;
+  unsigned int mmio_offset;
+  unsigned int buffers_offset;
+  int sarea_priv_offset;
+  unsigned int ring_start;
+  unsigned int ring_end;
+  unsigned int ring_size;
+  unsigned int front_offset;
+  unsigned int back_offset;
+  unsigned int depth_offset;
+  unsigned int w;
+  unsigned int h;
+  unsigned int pitch;
+  unsigned int pitch_bits;
+} drm_i810_pre12_init_t;
+typedef struct _drm_i810_tex_region {
+  unsigned char next, prev;
+  unsigned char in_use;
+  int age;
+} drm_i810_tex_region_t;
+typedef struct _drm_i810_sarea {
+  unsigned int ContextState[I810_CTX_SETUP_SIZE];
+  unsigned int BufferState[I810_DEST_SETUP_SIZE];
+  unsigned int TexState[2][I810_TEX_SETUP_SIZE];
+  unsigned int dirty;
+  unsigned int nbox;
+  struct drm_clip_rect boxes[I810_NR_SAREA_CLIPRECTS];
+  drm_i810_tex_region_t texList[I810_NR_TEX_REGIONS + 1];
+  int texAge;
+  int last_enqueue;
+  int last_dispatch;
+  int last_quiescent;
+  int ctxOwner;
+  int vertex_prim;
+  int pf_enabled;
+  int pf_active;
+  int pf_current_page;
+} drm_i810_sarea_t;
+#define DRM_I810_INIT 0x00
+#define DRM_I810_VERTEX 0x01
+#define DRM_I810_CLEAR 0x02
+#define DRM_I810_FLUSH 0x03
+#define DRM_I810_GETAGE 0x04
+#define DRM_I810_GETBUF 0x05
+#define DRM_I810_SWAP 0x06
+#define DRM_I810_COPY 0x07
+#define DRM_I810_DOCOPY 0x08
+#define DRM_I810_OV0INFO 0x09
+#define DRM_I810_FSTATUS 0x0a
+#define DRM_I810_OV0FLIP 0x0b
+#define DRM_I810_MC 0x0c
+#define DRM_I810_RSTATUS 0x0d
+#define DRM_I810_FLIP 0x0e
+#define DRM_IOCTL_I810_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_I810_INIT, drm_i810_init_t)
+#define DRM_IOCTL_I810_VERTEX DRM_IOW(DRM_COMMAND_BASE + DRM_I810_VERTEX, drm_i810_vertex_t)
+#define DRM_IOCTL_I810_CLEAR DRM_IOW(DRM_COMMAND_BASE + DRM_I810_CLEAR, drm_i810_clear_t)
+#define DRM_IOCTL_I810_FLUSH DRM_IO(DRM_COMMAND_BASE + DRM_I810_FLUSH)
+#define DRM_IOCTL_I810_GETAGE DRM_IO(DRM_COMMAND_BASE + DRM_I810_GETAGE)
+#define DRM_IOCTL_I810_GETBUF DRM_IOWR(DRM_COMMAND_BASE + DRM_I810_GETBUF, drm_i810_dma_t)
+#define DRM_IOCTL_I810_SWAP DRM_IO(DRM_COMMAND_BASE + DRM_I810_SWAP)
+#define DRM_IOCTL_I810_COPY DRM_IOW(DRM_COMMAND_BASE + DRM_I810_COPY, drm_i810_copy_t)
+#define DRM_IOCTL_I810_DOCOPY DRM_IO(DRM_COMMAND_BASE + DRM_I810_DOCOPY)
+#define DRM_IOCTL_I810_OV0INFO DRM_IOR(DRM_COMMAND_BASE + DRM_I810_OV0INFO, drm_i810_overlay_t)
+#define DRM_IOCTL_I810_FSTATUS DRM_IO(DRM_COMMAND_BASE + DRM_I810_FSTATUS)
+#define DRM_IOCTL_I810_OV0FLIP DRM_IO(DRM_COMMAND_BASE + DRM_I810_OV0FLIP)
+#define DRM_IOCTL_I810_MC DRM_IOW(DRM_COMMAND_BASE + DRM_I810_MC, drm_i810_mc_t)
+#define DRM_IOCTL_I810_RSTATUS DRM_IO(DRM_COMMAND_BASE + DRM_I810_RSTATUS)
+#define DRM_IOCTL_I810_FLIP DRM_IO(DRM_COMMAND_BASE + DRM_I810_FLIP)
+typedef struct _drm_i810_clear {
+  int clear_color;
+  int clear_depth;
+  int flags;
+} drm_i810_clear_t;
+typedef struct _drm_i810_vertex {
+  int idx;
+  int used;
+  int discard;
+} drm_i810_vertex_t;
+typedef struct _drm_i810_copy_t {
+  int idx;
+  int used;
+  void * address;
+} drm_i810_copy_t;
+#define PR_TRIANGLES (0x0 << 18)
+#define PR_TRISTRIP_0 (0x1 << 18)
+#define PR_TRISTRIP_1 (0x2 << 18)
+#define PR_TRIFAN (0x3 << 18)
+#define PR_POLYGON (0x4 << 18)
+#define PR_LINES (0x5 << 18)
+#define PR_LINESTRIP (0x6 << 18)
+#define PR_RECTS (0x7 << 18)
+#define PR_MASK (0x7 << 18)
+typedef struct drm_i810_dma {
+  void * __linux_virtual;
+  int request_idx;
+  int request_size;
+  int granted;
+} drm_i810_dma_t;
+typedef struct _drm_i810_overlay_t {
+  unsigned int offset;
+  unsigned int physical;
+} drm_i810_overlay_t;
+typedef struct _drm_i810_mc {
+  int idx;
+  int used;
+  int num_blocks;
+  int * length;
+  unsigned int last_render;
+} drm_i810_mc_t;
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/i915_drm.h b/x86_64-linux-musl/include/drm/i915_drm.h
new file mode 100644
index 0000000..52bfad2
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/i915_drm.h
@@ -0,0 +1,988 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_I915_DRM_H_
+#define _UAPI_I915_DRM_H_
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define I915_L3_PARITY_UEVENT "L3_PARITY_ERROR"
+#define I915_ERROR_UEVENT "ERROR"
+#define I915_RESET_UEVENT "RESET"
+struct i915_user_extension {
+  __u64 next_extension;
+  __u32 name;
+  __u32 flags;
+  __u32 rsvd[4];
+};
+enum i915_mocs_table_index {
+  I915_MOCS_UNCACHED,
+  I915_MOCS_PTE,
+  I915_MOCS_CACHED,
+};
+enum drm_i915_gem_engine_class {
+  I915_ENGINE_CLASS_RENDER = 0,
+  I915_ENGINE_CLASS_COPY = 1,
+  I915_ENGINE_CLASS_VIDEO = 2,
+  I915_ENGINE_CLASS_VIDEO_ENHANCE = 3,
+  I915_ENGINE_CLASS_INVALID = - 1
+};
+struct i915_engine_class_instance {
+  __u16 engine_class;
+  __u16 engine_instance;
+#define I915_ENGINE_CLASS_INVALID_NONE - 1
+#define I915_ENGINE_CLASS_INVALID_VIRTUAL - 2
+};
+enum drm_i915_pmu_engine_sample {
+  I915_SAMPLE_BUSY = 0,
+  I915_SAMPLE_WAIT = 1,
+  I915_SAMPLE_SEMA = 2
+};
+#define I915_PMU_SAMPLE_BITS (4)
+#define I915_PMU_SAMPLE_MASK (0xf)
+#define I915_PMU_SAMPLE_INSTANCE_BITS (8)
+#define I915_PMU_CLASS_SHIFT (I915_PMU_SAMPLE_BITS + I915_PMU_SAMPLE_INSTANCE_BITS)
+#define __I915_PMU_ENGINE(class,instance,sample) ((class) << I915_PMU_CLASS_SHIFT | (instance) << I915_PMU_SAMPLE_BITS | (sample))
+#define I915_PMU_ENGINE_BUSY(class,instance) __I915_PMU_ENGINE(class, instance, I915_SAMPLE_BUSY)
+#define I915_PMU_ENGINE_WAIT(class,instance) __I915_PMU_ENGINE(class, instance, I915_SAMPLE_WAIT)
+#define I915_PMU_ENGINE_SEMA(class,instance) __I915_PMU_ENGINE(class, instance, I915_SAMPLE_SEMA)
+#define __I915_PMU_OTHER(x) (__I915_PMU_ENGINE(0xff, 0xff, 0xf) + 1 + (x))
+#define I915_PMU_ACTUAL_FREQUENCY __I915_PMU_OTHER(0)
+#define I915_PMU_REQUESTED_FREQUENCY __I915_PMU_OTHER(1)
+#define I915_PMU_INTERRUPTS __I915_PMU_OTHER(2)
+#define I915_PMU_RC6_RESIDENCY __I915_PMU_OTHER(3)
+#define I915_PMU_SOFTWARE_GT_AWAKE_TIME __I915_PMU_OTHER(4)
+#define I915_PMU_LAST I915_PMU_RC6_RESIDENCY
+#define I915_NR_TEX_REGIONS 255
+#define I915_LOG_MIN_TEX_REGION_SIZE 14
+typedef struct _drm_i915_init {
+  enum {
+    I915_INIT_DMA = 0x01,
+    I915_CLEANUP_DMA = 0x02,
+    I915_RESUME_DMA = 0x03
+  } func;
+  unsigned int mmio_offset;
+  int sarea_priv_offset;
+  unsigned int ring_start;
+  unsigned int ring_end;
+  unsigned int ring_size;
+  unsigned int front_offset;
+  unsigned int back_offset;
+  unsigned int depth_offset;
+  unsigned int w;
+  unsigned int h;
+  unsigned int pitch;
+  unsigned int pitch_bits;
+  unsigned int back_pitch;
+  unsigned int depth_pitch;
+  unsigned int cpp;
+  unsigned int chipset;
+} drm_i915_init_t;
+typedef struct _drm_i915_sarea {
+  struct drm_tex_region texList[I915_NR_TEX_REGIONS + 1];
+  int last_upload;
+  int last_enqueue;
+  int last_dispatch;
+  int ctxOwner;
+  int texAge;
+  int pf_enabled;
+  int pf_active;
+  int pf_current_page;
+  int perf_boxes;
+  int width, height;
+  drm_handle_t front_handle;
+  int front_offset;
+  int front_size;
+  drm_handle_t back_handle;
+  int back_offset;
+  int back_size;
+  drm_handle_t depth_handle;
+  int depth_offset;
+  int depth_size;
+  drm_handle_t tex_handle;
+  int tex_offset;
+  int tex_size;
+  int log_tex_granularity;
+  int pitch;
+  int rotation;
+  int rotated_offset;
+  int rotated_size;
+  int rotated_pitch;
+  int virtualX, virtualY;
+  unsigned int front_tiled;
+  unsigned int back_tiled;
+  unsigned int depth_tiled;
+  unsigned int rotated_tiled;
+  unsigned int rotated2_tiled;
+  int pipeA_x;
+  int pipeA_y;
+  int pipeA_w;
+  int pipeA_h;
+  int pipeB_x;
+  int pipeB_y;
+  int pipeB_w;
+  int pipeB_h;
+  drm_handle_t unused_handle;
+  __u32 unused1, unused2, unused3;
+  __u32 front_bo_handle;
+  __u32 back_bo_handle;
+  __u32 unused_bo_handle;
+  __u32 depth_bo_handle;
+} drm_i915_sarea_t;
+#define planeA_x pipeA_x
+#define planeA_y pipeA_y
+#define planeA_w pipeA_w
+#define planeA_h pipeA_h
+#define planeB_x pipeB_x
+#define planeB_y pipeB_y
+#define planeB_w pipeB_w
+#define planeB_h pipeB_h
+#define I915_BOX_RING_EMPTY 0x1
+#define I915_BOX_FLIP 0x2
+#define I915_BOX_WAIT 0x4
+#define I915_BOX_TEXTURE_LOAD 0x8
+#define I915_BOX_LOST_CONTEXT 0x10
+#define DRM_I915_INIT 0x00
+#define DRM_I915_FLUSH 0x01
+#define DRM_I915_FLIP 0x02
+#define DRM_I915_BATCHBUFFER 0x03
+#define DRM_I915_IRQ_EMIT 0x04
+#define DRM_I915_IRQ_WAIT 0x05
+#define DRM_I915_GETPARAM 0x06
+#define DRM_I915_SETPARAM 0x07
+#define DRM_I915_ALLOC 0x08
+#define DRM_I915_FREE 0x09
+#define DRM_I915_INIT_HEAP 0x0a
+#define DRM_I915_CMDBUFFER 0x0b
+#define DRM_I915_DESTROY_HEAP 0x0c
+#define DRM_I915_SET_VBLANK_PIPE 0x0d
+#define DRM_I915_GET_VBLANK_PIPE 0x0e
+#define DRM_I915_VBLANK_SWAP 0x0f
+#define DRM_I915_HWS_ADDR 0x11
+#define DRM_I915_GEM_INIT 0x13
+#define DRM_I915_GEM_EXECBUFFER 0x14
+#define DRM_I915_GEM_PIN 0x15
+#define DRM_I915_GEM_UNPIN 0x16
+#define DRM_I915_GEM_BUSY 0x17
+#define DRM_I915_GEM_THROTTLE 0x18
+#define DRM_I915_GEM_ENTERVT 0x19
+#define DRM_I915_GEM_LEAVEVT 0x1a
+#define DRM_I915_GEM_CREATE 0x1b
+#define DRM_I915_GEM_PREAD 0x1c
+#define DRM_I915_GEM_PWRITE 0x1d
+#define DRM_I915_GEM_MMAP 0x1e
+#define DRM_I915_GEM_SET_DOMAIN 0x1f
+#define DRM_I915_GEM_SW_FINISH 0x20
+#define DRM_I915_GEM_SET_TILING 0x21
+#define DRM_I915_GEM_GET_TILING 0x22
+#define DRM_I915_GEM_GET_APERTURE 0x23
+#define DRM_I915_GEM_MMAP_GTT 0x24
+#define DRM_I915_GET_PIPE_FROM_CRTC_ID 0x25
+#define DRM_I915_GEM_MADVISE 0x26
+#define DRM_I915_OVERLAY_PUT_IMAGE 0x27
+#define DRM_I915_OVERLAY_ATTRS 0x28
+#define DRM_I915_GEM_EXECBUFFER2 0x29
+#define DRM_I915_GEM_EXECBUFFER2_WR DRM_I915_GEM_EXECBUFFER2
+#define DRM_I915_GET_SPRITE_COLORKEY 0x2a
+#define DRM_I915_SET_SPRITE_COLORKEY 0x2b
+#define DRM_I915_GEM_WAIT 0x2c
+#define DRM_I915_GEM_CONTEXT_CREATE 0x2d
+#define DRM_I915_GEM_CONTEXT_DESTROY 0x2e
+#define DRM_I915_GEM_SET_CACHING 0x2f
+#define DRM_I915_GEM_GET_CACHING 0x30
+#define DRM_I915_REG_READ 0x31
+#define DRM_I915_GET_RESET_STATS 0x32
+#define DRM_I915_GEM_USERPTR 0x33
+#define DRM_I915_GEM_CONTEXT_GETPARAM 0x34
+#define DRM_I915_GEM_CONTEXT_SETPARAM 0x35
+#define DRM_I915_PERF_OPEN 0x36
+#define DRM_I915_PERF_ADD_CONFIG 0x37
+#define DRM_I915_PERF_REMOVE_CONFIG 0x38
+#define DRM_I915_QUERY 0x39
+#define DRM_I915_GEM_VM_CREATE 0x3a
+#define DRM_I915_GEM_VM_DESTROY 0x3b
+#define DRM_I915_GEM_CREATE_EXT 0x3c
+#define DRM_IOCTL_I915_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t)
+#define DRM_IOCTL_I915_FLUSH DRM_IO(DRM_COMMAND_BASE + DRM_I915_FLUSH)
+#define DRM_IOCTL_I915_FLIP DRM_IO(DRM_COMMAND_BASE + DRM_I915_FLIP)
+#define DRM_IOCTL_I915_BATCHBUFFER DRM_IOW(DRM_COMMAND_BASE + DRM_I915_BATCHBUFFER, drm_i915_batchbuffer_t)
+#define DRM_IOCTL_I915_IRQ_EMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_IRQ_EMIT, drm_i915_irq_emit_t)
+#define DRM_IOCTL_I915_IRQ_WAIT DRM_IOW(DRM_COMMAND_BASE + DRM_I915_IRQ_WAIT, drm_i915_irq_wait_t)
+#define DRM_IOCTL_I915_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GETPARAM, drm_i915_getparam_t)
+#define DRM_IOCTL_I915_SETPARAM DRM_IOW(DRM_COMMAND_BASE + DRM_I915_SETPARAM, drm_i915_setparam_t)
+#define DRM_IOCTL_I915_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_ALLOC, drm_i915_mem_alloc_t)
+#define DRM_IOCTL_I915_FREE DRM_IOW(DRM_COMMAND_BASE + DRM_I915_FREE, drm_i915_mem_free_t)
+#define DRM_IOCTL_I915_INIT_HEAP DRM_IOW(DRM_COMMAND_BASE + DRM_I915_INIT_HEAP, drm_i915_mem_init_heap_t)
+#define DRM_IOCTL_I915_CMDBUFFER DRM_IOW(DRM_COMMAND_BASE + DRM_I915_CMDBUFFER, drm_i915_cmdbuffer_t)
+#define DRM_IOCTL_I915_DESTROY_HEAP DRM_IOW(DRM_COMMAND_BASE + DRM_I915_DESTROY_HEAP, drm_i915_mem_destroy_heap_t)
+#define DRM_IOCTL_I915_SET_VBLANK_PIPE DRM_IOW(DRM_COMMAND_BASE + DRM_I915_SET_VBLANK_PIPE, drm_i915_vblank_pipe_t)
+#define DRM_IOCTL_I915_GET_VBLANK_PIPE DRM_IOR(DRM_COMMAND_BASE + DRM_I915_GET_VBLANK_PIPE, drm_i915_vblank_pipe_t)
+#define DRM_IOCTL_I915_VBLANK_SWAP DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_VBLANK_SWAP, drm_i915_vblank_swap_t)
+#define DRM_IOCTL_I915_HWS_ADDR DRM_IOW(DRM_COMMAND_BASE + DRM_I915_HWS_ADDR, struct drm_i915_gem_init)
+#define DRM_IOCTL_I915_GEM_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_INIT, struct drm_i915_gem_init)
+#define DRM_IOCTL_I915_GEM_EXECBUFFER DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER, struct drm_i915_gem_execbuffer)
+#define DRM_IOCTL_I915_GEM_EXECBUFFER2 DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER2, struct drm_i915_gem_execbuffer2)
+#define DRM_IOCTL_I915_GEM_EXECBUFFER2_WR DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER2_WR, struct drm_i915_gem_execbuffer2)
+#define DRM_IOCTL_I915_GEM_PIN DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_PIN, struct drm_i915_gem_pin)
+#define DRM_IOCTL_I915_GEM_UNPIN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_UNPIN, struct drm_i915_gem_unpin)
+#define DRM_IOCTL_I915_GEM_BUSY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_BUSY, struct drm_i915_gem_busy)
+#define DRM_IOCTL_I915_GEM_SET_CACHING DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_SET_CACHING, struct drm_i915_gem_caching)
+#define DRM_IOCTL_I915_GEM_GET_CACHING DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_GET_CACHING, struct drm_i915_gem_caching)
+#define DRM_IOCTL_I915_GEM_THROTTLE DRM_IO(DRM_COMMAND_BASE + DRM_I915_GEM_THROTTLE)
+#define DRM_IOCTL_I915_GEM_ENTERVT DRM_IO(DRM_COMMAND_BASE + DRM_I915_GEM_ENTERVT)
+#define DRM_IOCTL_I915_GEM_LEAVEVT DRM_IO(DRM_COMMAND_BASE + DRM_I915_GEM_LEAVEVT)
+#define DRM_IOCTL_I915_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CREATE, struct drm_i915_gem_create)
+#define DRM_IOCTL_I915_GEM_CREATE_EXT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CREATE_EXT, struct drm_i915_gem_create_ext)
+#define DRM_IOCTL_I915_GEM_PREAD DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_PREAD, struct drm_i915_gem_pread)
+#define DRM_IOCTL_I915_GEM_PWRITE DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_PWRITE, struct drm_i915_gem_pwrite)
+#define DRM_IOCTL_I915_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MMAP, struct drm_i915_gem_mmap)
+#define DRM_IOCTL_I915_GEM_MMAP_GTT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MMAP_GTT, struct drm_i915_gem_mmap_gtt)
+#define DRM_IOCTL_I915_GEM_MMAP_OFFSET DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MMAP_GTT, struct drm_i915_gem_mmap_offset)
+#define DRM_IOCTL_I915_GEM_SET_DOMAIN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_SET_DOMAIN, struct drm_i915_gem_set_domain)
+#define DRM_IOCTL_I915_GEM_SW_FINISH DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_SW_FINISH, struct drm_i915_gem_sw_finish)
+#define DRM_IOCTL_I915_GEM_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_SET_TILING, struct drm_i915_gem_set_tiling)
+#define DRM_IOCTL_I915_GEM_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_GET_TILING, struct drm_i915_gem_get_tiling)
+#define DRM_IOCTL_I915_GEM_GET_APERTURE DRM_IOR(DRM_COMMAND_BASE + DRM_I915_GEM_GET_APERTURE, struct drm_i915_gem_get_aperture)
+#define DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GET_PIPE_FROM_CRTC_ID, struct drm_i915_get_pipe_from_crtc_id)
+#define DRM_IOCTL_I915_GEM_MADVISE DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MADVISE, struct drm_i915_gem_madvise)
+#define DRM_IOCTL_I915_OVERLAY_PUT_IMAGE DRM_IOW(DRM_COMMAND_BASE + DRM_I915_OVERLAY_PUT_IMAGE, struct drm_intel_overlay_put_image)
+#define DRM_IOCTL_I915_OVERLAY_ATTRS DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_OVERLAY_ATTRS, struct drm_intel_overlay_attrs)
+#define DRM_IOCTL_I915_SET_SPRITE_COLORKEY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_SET_SPRITE_COLORKEY, struct drm_intel_sprite_colorkey)
+#define DRM_IOCTL_I915_GET_SPRITE_COLORKEY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GET_SPRITE_COLORKEY, struct drm_intel_sprite_colorkey)
+#define DRM_IOCTL_I915_GEM_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_WAIT, struct drm_i915_gem_wait)
+#define DRM_IOCTL_I915_GEM_CONTEXT_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_CREATE, struct drm_i915_gem_context_create)
+#define DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_CREATE, struct drm_i915_gem_context_create_ext)
+#define DRM_IOCTL_I915_GEM_CONTEXT_DESTROY DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_DESTROY, struct drm_i915_gem_context_destroy)
+#define DRM_IOCTL_I915_REG_READ DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_REG_READ, struct drm_i915_reg_read)
+#define DRM_IOCTL_I915_GET_RESET_STATS DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GET_RESET_STATS, struct drm_i915_reset_stats)
+#define DRM_IOCTL_I915_GEM_USERPTR DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_USERPTR, struct drm_i915_gem_userptr)
+#define DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_GETPARAM, struct drm_i915_gem_context_param)
+#define DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_SETPARAM, struct drm_i915_gem_context_param)
+#define DRM_IOCTL_I915_PERF_OPEN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_OPEN, struct drm_i915_perf_open_param)
+#define DRM_IOCTL_I915_PERF_ADD_CONFIG DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_ADD_CONFIG, struct drm_i915_perf_oa_config)
+#define DRM_IOCTL_I915_PERF_REMOVE_CONFIG DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_REMOVE_CONFIG, __u64)
+#define DRM_IOCTL_I915_QUERY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_QUERY, struct drm_i915_query)
+#define DRM_IOCTL_I915_GEM_VM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_VM_CREATE, struct drm_i915_gem_vm_control)
+#define DRM_IOCTL_I915_GEM_VM_DESTROY DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_VM_DESTROY, struct drm_i915_gem_vm_control)
+typedef struct drm_i915_batchbuffer {
+  int start;
+  int used;
+  int DR1;
+  int DR4;
+  int num_cliprects;
+  struct drm_clip_rect __user * cliprects;
+} drm_i915_batchbuffer_t;
+typedef struct _drm_i915_cmdbuffer {
+  char __user * buf;
+  int sz;
+  int DR1;
+  int DR4;
+  int num_cliprects;
+  struct drm_clip_rect __user * cliprects;
+} drm_i915_cmdbuffer_t;
+typedef struct drm_i915_irq_emit {
+  int __user * irq_seq;
+} drm_i915_irq_emit_t;
+typedef struct drm_i915_irq_wait {
+  int irq_seq;
+} drm_i915_irq_wait_t;
+#define I915_GEM_PPGTT_NONE 0
+#define I915_GEM_PPGTT_ALIASING 1
+#define I915_GEM_PPGTT_FULL 2
+#define I915_PARAM_IRQ_ACTIVE 1
+#define I915_PARAM_ALLOW_BATCHBUFFER 2
+#define I915_PARAM_LAST_DISPATCH 3
+#define I915_PARAM_CHIPSET_ID 4
+#define I915_PARAM_HAS_GEM 5
+#define I915_PARAM_NUM_FENCES_AVAIL 6
+#define I915_PARAM_HAS_OVERLAY 7
+#define I915_PARAM_HAS_PAGEFLIPPING 8
+#define I915_PARAM_HAS_EXECBUF2 9
+#define I915_PARAM_HAS_BSD 10
+#define I915_PARAM_HAS_BLT 11
+#define I915_PARAM_HAS_RELAXED_FENCING 12
+#define I915_PARAM_HAS_COHERENT_RINGS 13
+#define I915_PARAM_HAS_EXEC_CONSTANTS 14
+#define I915_PARAM_HAS_RELAXED_DELTA 15
+#define I915_PARAM_HAS_GEN7_SOL_RESET 16
+#define I915_PARAM_HAS_LLC 17
+#define I915_PARAM_HAS_ALIASING_PPGTT 18
+#define I915_PARAM_HAS_WAIT_TIMEOUT 19
+#define I915_PARAM_HAS_SEMAPHORES 20
+#define I915_PARAM_HAS_PRIME_VMAP_FLUSH 21
+#define I915_PARAM_HAS_VEBOX 22
+#define I915_PARAM_HAS_SECURE_BATCHES 23
+#define I915_PARAM_HAS_PINNED_BATCHES 24
+#define I915_PARAM_HAS_EXEC_NO_RELOC 25
+#define I915_PARAM_HAS_EXEC_HANDLE_LUT 26
+#define I915_PARAM_HAS_WT 27
+#define I915_PARAM_CMD_PARSER_VERSION 28
+#define I915_PARAM_HAS_COHERENT_PHYS_GTT 29
+#define I915_PARAM_MMAP_VERSION 30
+#define I915_PARAM_HAS_BSD2 31
+#define I915_PARAM_REVISION 32
+#define I915_PARAM_SUBSLICE_TOTAL 33
+#define I915_PARAM_EU_TOTAL 34
+#define I915_PARAM_HAS_GPU_RESET 35
+#define I915_PARAM_HAS_RESOURCE_STREAMER 36
+#define I915_PARAM_HAS_EXEC_SOFTPIN 37
+#define I915_PARAM_HAS_POOLED_EU 38
+#define I915_PARAM_MIN_EU_IN_POOL 39
+#define I915_PARAM_MMAP_GTT_VERSION 40
+#define I915_PARAM_HAS_SCHEDULER 41
+#define I915_SCHEDULER_CAP_ENABLED (1ul << 0)
+#define I915_SCHEDULER_CAP_PRIORITY (1ul << 1)
+#define I915_SCHEDULER_CAP_PREEMPTION (1ul << 2)
+#define I915_SCHEDULER_CAP_SEMAPHORES (1ul << 3)
+#define I915_SCHEDULER_CAP_ENGINE_BUSY_STATS (1ul << 4)
+#define I915_SCHEDULER_CAP_STATIC_PRIORITY_MAP (1ul << 5)
+#define I915_PARAM_HUC_STATUS 42
+#define I915_PARAM_HAS_EXEC_ASYNC 43
+#define I915_PARAM_HAS_EXEC_FENCE 44
+#define I915_PARAM_HAS_EXEC_CAPTURE 45
+#define I915_PARAM_SLICE_MASK 46
+#define I915_PARAM_SUBSLICE_MASK 47
+#define I915_PARAM_HAS_EXEC_BATCH_FIRST 48
+#define I915_PARAM_HAS_EXEC_FENCE_ARRAY 49
+#define I915_PARAM_HAS_CONTEXT_ISOLATION 50
+#define I915_PARAM_CS_TIMESTAMP_FREQUENCY 51
+#define I915_PARAM_MMAP_GTT_COHERENT 52
+#define I915_PARAM_HAS_EXEC_SUBMIT_FENCE 53
+#define I915_PARAM_PERF_REVISION 54
+#define I915_PARAM_HAS_EXEC_TIMELINE_FENCES 55
+#define I915_PARAM_HAS_USERPTR_PROBE 56
+typedef struct drm_i915_getparam {
+  __s32 param;
+  int __user * value;
+} drm_i915_getparam_t;
+#define I915_SETPARAM_USE_MI_BATCHBUFFER_START 1
+#define I915_SETPARAM_TEX_LRU_LOG_GRANULARITY 2
+#define I915_SETPARAM_ALLOW_BATCHBUFFER 3
+#define I915_SETPARAM_NUM_USED_FENCES 4
+typedef struct drm_i915_setparam {
+  int param;
+  int value;
+} drm_i915_setparam_t;
+#define I915_MEM_REGION_AGP 1
+typedef struct drm_i915_mem_alloc {
+  int region;
+  int alignment;
+  int size;
+  int __user * region_offset;
+} drm_i915_mem_alloc_t;
+typedef struct drm_i915_mem_free {
+  int region;
+  int region_offset;
+} drm_i915_mem_free_t;
+typedef struct drm_i915_mem_init_heap {
+  int region;
+  int size;
+  int start;
+} drm_i915_mem_init_heap_t;
+typedef struct drm_i915_mem_destroy_heap {
+  int region;
+} drm_i915_mem_destroy_heap_t;
+#define DRM_I915_VBLANK_PIPE_A 1
+#define DRM_I915_VBLANK_PIPE_B 2
+typedef struct drm_i915_vblank_pipe {
+  int pipe;
+} drm_i915_vblank_pipe_t;
+typedef struct drm_i915_vblank_swap {
+  drm_drawable_t drawable;
+  enum drm_vblank_seq_type seqtype;
+  unsigned int sequence;
+} drm_i915_vblank_swap_t;
+typedef struct drm_i915_hws_addr {
+  __u64 addr;
+} drm_i915_hws_addr_t;
+struct drm_i915_gem_init {
+  __u64 gtt_start;
+  __u64 gtt_end;
+};
+struct drm_i915_gem_create {
+  __u64 size;
+  __u32 handle;
+  __u32 pad;
+};
+struct drm_i915_gem_pread {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+  __u64 size;
+  __u64 data_ptr;
+};
+struct drm_i915_gem_pwrite {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+  __u64 size;
+  __u64 data_ptr;
+};
+struct drm_i915_gem_mmap {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+  __u64 size;
+  __u64 addr_ptr;
+  __u64 flags;
+#define I915_MMAP_WC 0x1
+};
+struct drm_i915_gem_mmap_gtt {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+};
+struct drm_i915_gem_mmap_offset {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+  __u64 flags;
+#define I915_MMAP_OFFSET_GTT 0
+#define I915_MMAP_OFFSET_WC 1
+#define I915_MMAP_OFFSET_WB 2
+#define I915_MMAP_OFFSET_UC 3
+#define I915_MMAP_OFFSET_FIXED 4
+  __u64 extensions;
+};
+struct drm_i915_gem_set_domain {
+  __u32 handle;
+  __u32 read_domains;
+  __u32 write_domain;
+};
+struct drm_i915_gem_sw_finish {
+  __u32 handle;
+};
+struct drm_i915_gem_relocation_entry {
+  __u32 target_handle;
+  __u32 delta;
+  __u64 offset;
+  __u64 presumed_offset;
+  __u32 read_domains;
+  __u32 write_domain;
+};
+#define I915_GEM_DOMAIN_CPU 0x00000001
+#define I915_GEM_DOMAIN_RENDER 0x00000002
+#define I915_GEM_DOMAIN_SAMPLER 0x00000004
+#define I915_GEM_DOMAIN_COMMAND 0x00000008
+#define I915_GEM_DOMAIN_INSTRUCTION 0x00000010
+#define I915_GEM_DOMAIN_VERTEX 0x00000020
+#define I915_GEM_DOMAIN_GTT 0x00000040
+#define I915_GEM_DOMAIN_WC 0x00000080
+struct drm_i915_gem_exec_object {
+  __u32 handle;
+  __u32 relocation_count;
+  __u64 relocs_ptr;
+  __u64 alignment;
+  __u64 offset;
+};
+struct drm_i915_gem_execbuffer {
+  __u64 buffers_ptr;
+  __u32 buffer_count;
+  __u32 batch_start_offset;
+  __u32 batch_len;
+  __u32 DR1;
+  __u32 DR4;
+  __u32 num_cliprects;
+  __u64 cliprects_ptr;
+};
+struct drm_i915_gem_exec_object2 {
+  __u32 handle;
+  __u32 relocation_count;
+  __u64 relocs_ptr;
+  __u64 alignment;
+  __u64 offset;
+#define EXEC_OBJECT_NEEDS_FENCE (1 << 0)
+#define EXEC_OBJECT_NEEDS_GTT (1 << 1)
+#define EXEC_OBJECT_WRITE (1 << 2)
+#define EXEC_OBJECT_SUPPORTS_48B_ADDRESS (1 << 3)
+#define EXEC_OBJECT_PINNED (1 << 4)
+#define EXEC_OBJECT_PAD_TO_SIZE (1 << 5)
+#define EXEC_OBJECT_ASYNC (1 << 6)
+#define EXEC_OBJECT_CAPTURE (1 << 7)
+#define __EXEC_OBJECT_UNKNOWN_FLAGS - (EXEC_OBJECT_CAPTURE << 1)
+  __u64 flags;
+  union {
+    __u64 rsvd1;
+    __u64 pad_to_size;
+  };
+  __u64 rsvd2;
+};
+struct drm_i915_gem_exec_fence {
+  __u32 handle;
+#define I915_EXEC_FENCE_WAIT (1 << 0)
+#define I915_EXEC_FENCE_SIGNAL (1 << 1)
+#define __I915_EXEC_FENCE_UNKNOWN_FLAGS (- (I915_EXEC_FENCE_SIGNAL << 1))
+  __u32 flags;
+};
+#define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0
+struct drm_i915_gem_execbuffer_ext_timeline_fences {
+  struct i915_user_extension base;
+  __u64 fence_count;
+  __u64 handles_ptr;
+  __u64 values_ptr;
+};
+struct drm_i915_gem_execbuffer2 {
+  __u64 buffers_ptr;
+  __u32 buffer_count;
+  __u32 batch_start_offset;
+  __u32 batch_len;
+  __u32 DR1;
+  __u32 DR4;
+  __u32 num_cliprects;
+  __u64 cliprects_ptr;
+#define I915_EXEC_RING_MASK (0x3f)
+#define I915_EXEC_DEFAULT (0 << 0)
+#define I915_EXEC_RENDER (1 << 0)
+#define I915_EXEC_BSD (2 << 0)
+#define I915_EXEC_BLT (3 << 0)
+#define I915_EXEC_VEBOX (4 << 0)
+#define I915_EXEC_CONSTANTS_MASK (3 << 6)
+#define I915_EXEC_CONSTANTS_REL_GENERAL (0 << 6)
+#define I915_EXEC_CONSTANTS_ABSOLUTE (1 << 6)
+#define I915_EXEC_CONSTANTS_REL_SURFACE (2 << 6)
+  __u64 flags;
+  __u64 rsvd1;
+  __u64 rsvd2;
+};
+#define I915_EXEC_GEN7_SOL_RESET (1 << 8)
+#define I915_EXEC_SECURE (1 << 9)
+#define I915_EXEC_IS_PINNED (1 << 10)
+#define I915_EXEC_NO_RELOC (1 << 11)
+#define I915_EXEC_HANDLE_LUT (1 << 12)
+#define I915_EXEC_BSD_SHIFT (13)
+#define I915_EXEC_BSD_MASK (3 << I915_EXEC_BSD_SHIFT)
+#define I915_EXEC_BSD_DEFAULT (0 << I915_EXEC_BSD_SHIFT)
+#define I915_EXEC_BSD_RING1 (1 << I915_EXEC_BSD_SHIFT)
+#define I915_EXEC_BSD_RING2 (2 << I915_EXEC_BSD_SHIFT)
+#define I915_EXEC_RESOURCE_STREAMER (1 << 15)
+#define I915_EXEC_FENCE_IN (1 << 16)
+#define I915_EXEC_FENCE_OUT (1 << 17)
+#define I915_EXEC_BATCH_FIRST (1 << 18)
+#define I915_EXEC_FENCE_ARRAY (1 << 19)
+#define I915_EXEC_FENCE_SUBMIT (1 << 20)
+#define I915_EXEC_USE_EXTENSIONS (1 << 21)
+#define __I915_EXEC_UNKNOWN_FLAGS (- (I915_EXEC_USE_EXTENSIONS << 1))
+#define I915_EXEC_CONTEXT_ID_MASK (0xffffffff)
+#define i915_execbuffer2_set_context_id(eb2,context) (eb2).rsvd1 = context & I915_EXEC_CONTEXT_ID_MASK
+#define i915_execbuffer2_get_context_id(eb2) ((eb2).rsvd1 & I915_EXEC_CONTEXT_ID_MASK)
+struct drm_i915_gem_pin {
+  __u32 handle;
+  __u32 pad;
+  __u64 alignment;
+  __u64 offset;
+};
+struct drm_i915_gem_unpin {
+  __u32 handle;
+  __u32 pad;
+};
+struct drm_i915_gem_busy {
+  __u32 handle;
+  __u32 busy;
+};
+struct drm_i915_gem_caching {
+  __u32 handle;
+#define I915_CACHING_NONE 0
+#define I915_CACHING_CACHED 1
+#define I915_CACHING_DISPLAY 2
+  __u32 caching;
+};
+#define I915_TILING_NONE 0
+#define I915_TILING_X 1
+#define I915_TILING_Y 2
+#define I915_TILING_LAST I915_TILING_Y
+#define I915_BIT_6_SWIZZLE_NONE 0
+#define I915_BIT_6_SWIZZLE_9 1
+#define I915_BIT_6_SWIZZLE_9_10 2
+#define I915_BIT_6_SWIZZLE_9_11 3
+#define I915_BIT_6_SWIZZLE_9_10_11 4
+#define I915_BIT_6_SWIZZLE_UNKNOWN 5
+#define I915_BIT_6_SWIZZLE_9_17 6
+#define I915_BIT_6_SWIZZLE_9_10_17 7
+struct drm_i915_gem_set_tiling {
+  __u32 handle;
+  __u32 tiling_mode;
+  __u32 stride;
+  __u32 swizzle_mode;
+};
+struct drm_i915_gem_get_tiling {
+  __u32 handle;
+  __u32 tiling_mode;
+  __u32 swizzle_mode;
+  __u32 phys_swizzle_mode;
+};
+struct drm_i915_gem_get_aperture {
+  __u64 aper_size;
+  __u64 aper_available_size;
+};
+struct drm_i915_get_pipe_from_crtc_id {
+  __u32 crtc_id;
+  __u32 pipe;
+};
+#define I915_MADV_WILLNEED 0
+#define I915_MADV_DONTNEED 1
+#define __I915_MADV_PURGED 2
+struct drm_i915_gem_madvise {
+  __u32 handle;
+  __u32 madv;
+  __u32 retained;
+};
+#define I915_OVERLAY_TYPE_MASK 0xff
+#define I915_OVERLAY_YUV_PLANAR 0x01
+#define I915_OVERLAY_YUV_PACKED 0x02
+#define I915_OVERLAY_RGB 0x03
+#define I915_OVERLAY_DEPTH_MASK 0xff00
+#define I915_OVERLAY_RGB24 0x1000
+#define I915_OVERLAY_RGB16 0x2000
+#define I915_OVERLAY_RGB15 0x3000
+#define I915_OVERLAY_YUV422 0x0100
+#define I915_OVERLAY_YUV411 0x0200
+#define I915_OVERLAY_YUV420 0x0300
+#define I915_OVERLAY_YUV410 0x0400
+#define I915_OVERLAY_SWAP_MASK 0xff0000
+#define I915_OVERLAY_NO_SWAP 0x000000
+#define I915_OVERLAY_UV_SWAP 0x010000
+#define I915_OVERLAY_Y_SWAP 0x020000
+#define I915_OVERLAY_Y_AND_UV_SWAP 0x030000
+#define I915_OVERLAY_FLAGS_MASK 0xff000000
+#define I915_OVERLAY_ENABLE 0x01000000
+struct drm_intel_overlay_put_image {
+  __u32 flags;
+  __u32 bo_handle;
+  __u16 stride_Y;
+  __u16 stride_UV;
+  __u32 offset_Y;
+  __u32 offset_U;
+  __u32 offset_V;
+  __u16 src_width;
+  __u16 src_height;
+  __u16 src_scan_width;
+  __u16 src_scan_height;
+  __u32 crtc_id;
+  __u16 dst_x;
+  __u16 dst_y;
+  __u16 dst_width;
+  __u16 dst_height;
+};
+#define I915_OVERLAY_UPDATE_ATTRS (1 << 0)
+#define I915_OVERLAY_UPDATE_GAMMA (1 << 1)
+#define I915_OVERLAY_DISABLE_DEST_COLORKEY (1 << 2)
+struct drm_intel_overlay_attrs {
+  __u32 flags;
+  __u32 color_key;
+  __s32 brightness;
+  __u32 contrast;
+  __u32 saturation;
+  __u32 gamma0;
+  __u32 gamma1;
+  __u32 gamma2;
+  __u32 gamma3;
+  __u32 gamma4;
+  __u32 gamma5;
+};
+#define I915_SET_COLORKEY_NONE (1 << 0)
+#define I915_SET_COLORKEY_DESTINATION (1 << 1)
+#define I915_SET_COLORKEY_SOURCE (1 << 2)
+struct drm_intel_sprite_colorkey {
+  __u32 plane_id;
+  __u32 min_value;
+  __u32 channel_mask;
+  __u32 max_value;
+  __u32 flags;
+};
+struct drm_i915_gem_wait {
+  __u32 bo_handle;
+  __u32 flags;
+  __s64 timeout_ns;
+};
+struct drm_i915_gem_context_create {
+  __u32 ctx_id;
+  __u32 pad;
+};
+struct drm_i915_gem_context_create_ext {
+  __u32 ctx_id;
+  __u32 flags;
+#define I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS (1u << 0)
+#define I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE (1u << 1)
+#define I915_CONTEXT_CREATE_FLAGS_UNKNOWN (- (I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE << 1))
+  __u64 extensions;
+};
+struct drm_i915_gem_context_param {
+  __u32 ctx_id;
+  __u32 size;
+  __u64 param;
+#define I915_CONTEXT_PARAM_BAN_PERIOD 0x1
+#define I915_CONTEXT_PARAM_NO_ZEROMAP 0x2
+#define I915_CONTEXT_PARAM_GTT_SIZE 0x3
+#define I915_CONTEXT_PARAM_NO_ERROR_CAPTURE 0x4
+#define I915_CONTEXT_PARAM_BANNABLE 0x5
+#define I915_CONTEXT_PARAM_PRIORITY 0x6
+#define I915_CONTEXT_MAX_USER_PRIORITY 1023
+#define I915_CONTEXT_DEFAULT_PRIORITY 0
+#define I915_CONTEXT_MIN_USER_PRIORITY - 1023
+#define I915_CONTEXT_PARAM_SSEU 0x7
+#define I915_CONTEXT_PARAM_RECOVERABLE 0x8
+#define I915_CONTEXT_PARAM_VM 0x9
+#define I915_CONTEXT_PARAM_ENGINES 0xa
+#define I915_CONTEXT_PARAM_PERSISTENCE 0xb
+#define I915_CONTEXT_PARAM_RINGSIZE 0xc
+#define I915_CONTEXT_PARAM_PROTECTED_CONTENT 0xd
+  __u64 value;
+};
+struct drm_i915_gem_context_param_sseu {
+  struct i915_engine_class_instance engine;
+  __u32 flags;
+#define I915_CONTEXT_SSEU_FLAG_ENGINE_INDEX (1u << 0)
+  __u64 slice_mask;
+  __u64 subslice_mask;
+  __u16 min_eus_per_subslice;
+  __u16 max_eus_per_subslice;
+  __u32 rsvd;
+};
+struct i915_context_engines_load_balance {
+  struct i915_user_extension base;
+  __u16 engine_index;
+  __u16 num_siblings;
+  __u32 flags;
+  __u64 mbz64;
+  struct i915_engine_class_instance engines[0];
+} __attribute__((packed));
+#define I915_DEFINE_CONTEXT_ENGINES_LOAD_BALANCE(name__,N__) struct { struct i915_user_extension base; __u16 engine_index; __u16 num_siblings; __u32 flags; __u64 mbz64; struct i915_engine_class_instance engines[N__]; \
+} __attribute__((packed)) name__
+struct i915_context_engines_bond {
+  struct i915_user_extension base;
+  struct i915_engine_class_instance master;
+  __u16 virtual_index;
+  __u16 num_bonds;
+  __u64 flags;
+  __u64 mbz64[4];
+  struct i915_engine_class_instance engines[0];
+} __attribute__((packed));
+#define I915_DEFINE_CONTEXT_ENGINES_BOND(name__,N__) struct { struct i915_user_extension base; struct i915_engine_class_instance master; __u16 virtual_index; __u16 num_bonds; __u64 flags; __u64 mbz64[4]; struct i915_engine_class_instance engines[N__]; \
+} __attribute__((packed)) name__
+struct i915_context_engines_parallel_submit {
+  struct i915_user_extension base;
+  __u16 engine_index;
+  __u16 width;
+  __u16 num_siblings;
+  __u16 mbz16;
+  __u64 flags;
+  __u64 mbz64[3];
+  struct i915_engine_class_instance engines[0];
+} __packed;
+#define I915_DEFINE_CONTEXT_ENGINES_PARALLEL_SUBMIT(name__,N__) struct { struct i915_user_extension base; __u16 engine_index; __u16 width; __u16 num_siblings; __u16 mbz16; __u64 flags; __u64 mbz64[3]; struct i915_engine_class_instance engines[N__]; \
+} __attribute__((packed)) name__
+struct i915_context_param_engines {
+  __u64 extensions;
+#define I915_CONTEXT_ENGINES_EXT_LOAD_BALANCE 0
+#define I915_CONTEXT_ENGINES_EXT_BOND 1
+#define I915_CONTEXT_ENGINES_EXT_PARALLEL_SUBMIT 2
+  struct i915_engine_class_instance engines[0];
+} __attribute__((packed));
+#define I915_DEFINE_CONTEXT_PARAM_ENGINES(name__,N__) struct { __u64 extensions; struct i915_engine_class_instance engines[N__]; \
+} __attribute__((packed)) name__
+struct drm_i915_gem_context_create_ext_setparam {
+#define I915_CONTEXT_CREATE_EXT_SETPARAM 0
+  struct i915_user_extension base;
+  struct drm_i915_gem_context_param param;
+};
+#define I915_CONTEXT_CREATE_EXT_CLONE 1
+struct drm_i915_gem_context_destroy {
+  __u32 ctx_id;
+  __u32 pad;
+};
+struct drm_i915_gem_vm_control {
+  __u64 extensions;
+  __u32 flags;
+  __u32 vm_id;
+};
+struct drm_i915_reg_read {
+  __u64 offset;
+#define I915_REG_READ_8B_WA (1ul << 0)
+  __u64 val;
+};
+struct drm_i915_reset_stats {
+  __u32 ctx_id;
+  __u32 flags;
+  __u32 reset_count;
+  __u32 batch_active;
+  __u32 batch_pending;
+  __u32 pad;
+};
+struct drm_i915_gem_userptr {
+  __u64 user_ptr;
+  __u64 user_size;
+  __u32 flags;
+#define I915_USERPTR_READ_ONLY 0x1
+#define I915_USERPTR_PROBE 0x2
+#define I915_USERPTR_UNSYNCHRONIZED 0x80000000
+  __u32 handle;
+};
+enum drm_i915_oa_format {
+  I915_OA_FORMAT_A13 = 1,
+  I915_OA_FORMAT_A29,
+  I915_OA_FORMAT_A13_B8_C8,
+  I915_OA_FORMAT_B4_C8,
+  I915_OA_FORMAT_A45_B8_C8,
+  I915_OA_FORMAT_B4_C8_A16,
+  I915_OA_FORMAT_C4_B8,
+  I915_OA_FORMAT_A12,
+  I915_OA_FORMAT_A12_B8_C8,
+  I915_OA_FORMAT_A32u40_A4u32_B8_C8,
+  I915_OA_FORMAT_MAX
+};
+enum drm_i915_perf_property_id {
+  DRM_I915_PERF_PROP_CTX_HANDLE = 1,
+  DRM_I915_PERF_PROP_SAMPLE_OA,
+  DRM_I915_PERF_PROP_OA_METRICS_SET,
+  DRM_I915_PERF_PROP_OA_FORMAT,
+  DRM_I915_PERF_PROP_OA_EXPONENT,
+  DRM_I915_PERF_PROP_HOLD_PREEMPTION,
+  DRM_I915_PERF_PROP_GLOBAL_SSEU,
+  DRM_I915_PERF_PROP_POLL_OA_PERIOD,
+  DRM_I915_PERF_PROP_MAX
+};
+struct drm_i915_perf_open_param {
+  __u32 flags;
+#define I915_PERF_FLAG_FD_CLOEXEC (1 << 0)
+#define I915_PERF_FLAG_FD_NONBLOCK (1 << 1)
+#define I915_PERF_FLAG_DISABLED (1 << 2)
+  __u32 num_properties;
+  __u64 properties_ptr;
+};
+#define I915_PERF_IOCTL_ENABLE _IO('i', 0x0)
+#define I915_PERF_IOCTL_DISABLE _IO('i', 0x1)
+#define I915_PERF_IOCTL_CONFIG _IO('i', 0x2)
+struct drm_i915_perf_record_header {
+  __u32 type;
+  __u16 pad;
+  __u16 size;
+};
+enum drm_i915_perf_record_type {
+  DRM_I915_PERF_RECORD_SAMPLE = 1,
+  DRM_I915_PERF_RECORD_OA_REPORT_LOST = 2,
+  DRM_I915_PERF_RECORD_OA_BUFFER_LOST = 3,
+  DRM_I915_PERF_RECORD_MAX
+};
+struct drm_i915_perf_oa_config {
+  char uuid[36];
+  __u32 n_mux_regs;
+  __u32 n_boolean_regs;
+  __u32 n_flex_regs;
+  __u64 mux_regs_ptr;
+  __u64 boolean_regs_ptr;
+  __u64 flex_regs_ptr;
+};
+struct drm_i915_query_item {
+  __u64 query_id;
+#define DRM_I915_QUERY_TOPOLOGY_INFO 1
+#define DRM_I915_QUERY_ENGINE_INFO 2
+#define DRM_I915_QUERY_PERF_CONFIG 3
+#define DRM_I915_QUERY_MEMORY_REGIONS 4
+  __s32 length;
+  __u32 flags;
+#define DRM_I915_QUERY_PERF_CONFIG_LIST 1
+#define DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID 2
+#define DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_ID 3
+  __u64 data_ptr;
+};
+struct drm_i915_query {
+  __u32 num_items;
+  __u32 flags;
+  __u64 items_ptr;
+};
+struct drm_i915_query_topology_info {
+  __u16 flags;
+  __u16 max_slices;
+  __u16 max_subslices;
+  __u16 max_eus_per_subslice;
+  __u16 subslice_offset;
+  __u16 subslice_stride;
+  __u16 eu_offset;
+  __u16 eu_stride;
+  __u8 data[];
+};
+struct drm_i915_engine_info {
+  struct i915_engine_class_instance engine;
+  __u32 rsvd0;
+  __u64 flags;
+#define I915_ENGINE_INFO_HAS_LOGICAL_INSTANCE (1 << 0)
+  __u64 capabilities;
+#define I915_VIDEO_CLASS_CAPABILITY_HEVC (1 << 0)
+#define I915_VIDEO_AND_ENHANCE_CLASS_CAPABILITY_SFC (1 << 1)
+  __u16 logical_instance;
+  __u16 rsvd1[3];
+  __u64 rsvd2[3];
+};
+struct drm_i915_query_engine_info {
+  __u32 num_engines;
+  __u32 rsvd[3];
+  struct drm_i915_engine_info engines[];
+};
+struct drm_i915_query_perf_config {
+  union {
+    __u64 n_configs;
+    __u64 config;
+    char uuid[36];
+  };
+  __u32 flags;
+  __u8 data[];
+};
+enum drm_i915_gem_memory_class {
+  I915_MEMORY_CLASS_SYSTEM = 0,
+  I915_MEMORY_CLASS_DEVICE,
+};
+struct drm_i915_gem_memory_class_instance {
+  __u16 memory_class;
+  __u16 memory_instance;
+};
+struct drm_i915_memory_region_info {
+  struct drm_i915_gem_memory_class_instance region;
+  __u32 rsvd0;
+  __u64 probed_size;
+  __u64 unallocated_size;
+  __u64 rsvd1[8];
+};
+struct drm_i915_query_memory_regions {
+  __u32 num_regions;
+  __u32 rsvd[3];
+  struct drm_i915_memory_region_info regions[];
+};
+struct drm_i915_gem_create_ext {
+  __u64 size;
+  __u32 handle;
+  __u32 flags;
+#define I915_GEM_CREATE_EXT_MEMORY_REGIONS 0
+#define I915_GEM_CREATE_EXT_PROTECTED_CONTENT 1
+  __u64 extensions;
+};
+struct drm_i915_gem_create_ext_memory_regions {
+  struct i915_user_extension base;
+  __u32 pad;
+  __u32 num_regions;
+  __u64 regions;
+};
+struct drm_i915_gem_create_ext_protected_content {
+  struct i915_user_extension base;
+  __u32 flags;
+};
+#define I915_PROTECTED_CONTENT_DEFAULT_SESSION 0xf
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/lima_drm.h b/x86_64-linux-musl/include/drm/lima_drm.h
new file mode 100644
index 0000000..bd8ba9c
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/lima_drm.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 __LIMA_DRM_H__
+#define __LIMA_DRM_H__
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+enum drm_lima_param_gpu_id {
+  DRM_LIMA_PARAM_GPU_ID_UNKNOWN,
+  DRM_LIMA_PARAM_GPU_ID_MALI400,
+  DRM_LIMA_PARAM_GPU_ID_MALI450,
+};
+enum drm_lima_param {
+  DRM_LIMA_PARAM_GPU_ID,
+  DRM_LIMA_PARAM_NUM_PP,
+  DRM_LIMA_PARAM_GP_VERSION,
+  DRM_LIMA_PARAM_PP_VERSION,
+};
+struct drm_lima_get_param {
+  __u32 param;
+  __u32 pad;
+  __u64 value;
+};
+#define LIMA_BO_FLAG_HEAP (1 << 0)
+struct drm_lima_gem_create {
+  __u32 size;
+  __u32 flags;
+  __u32 handle;
+  __u32 pad;
+};
+struct drm_lima_gem_info {
+  __u32 handle;
+  __u32 va;
+  __u64 offset;
+};
+#define LIMA_SUBMIT_BO_READ 0x01
+#define LIMA_SUBMIT_BO_WRITE 0x02
+struct drm_lima_gem_submit_bo {
+  __u32 handle;
+  __u32 flags;
+};
+#define LIMA_GP_FRAME_REG_NUM 6
+struct drm_lima_gp_frame {
+  __u32 frame[LIMA_GP_FRAME_REG_NUM];
+};
+#define LIMA_PP_FRAME_REG_NUM 23
+#define LIMA_PP_WB_REG_NUM 12
+struct drm_lima_m400_pp_frame {
+  __u32 frame[LIMA_PP_FRAME_REG_NUM];
+  __u32 num_pp;
+  __u32 wb[3 * LIMA_PP_WB_REG_NUM];
+  __u32 plbu_array_address[4];
+  __u32 fragment_stack_address[4];
+};
+struct drm_lima_m450_pp_frame {
+  __u32 frame[LIMA_PP_FRAME_REG_NUM];
+  __u32 num_pp;
+  __u32 wb[3 * LIMA_PP_WB_REG_NUM];
+  __u32 use_dlbu;
+  __u32 _pad;
+  union {
+    __u32 plbu_array_address[8];
+    __u32 dlbu_regs[4];
+  };
+  __u32 fragment_stack_address[8];
+};
+#define LIMA_PIPE_GP 0x00
+#define LIMA_PIPE_PP 0x01
+#define LIMA_SUBMIT_FLAG_EXPLICIT_FENCE (1 << 0)
+struct drm_lima_gem_submit {
+  __u32 ctx;
+  __u32 pipe;
+  __u32 nr_bos;
+  __u32 frame_size;
+  __u64 bos;
+  __u64 frame;
+  __u32 flags;
+  __u32 out_sync;
+  __u32 in_sync[2];
+};
+#define LIMA_GEM_WAIT_READ 0x01
+#define LIMA_GEM_WAIT_WRITE 0x02
+struct drm_lima_gem_wait {
+  __u32 handle;
+  __u32 op;
+  __s64 timeout_ns;
+};
+struct drm_lima_ctx_create {
+  __u32 id;
+  __u32 _pad;
+};
+struct drm_lima_ctx_free {
+  __u32 id;
+  __u32 _pad;
+};
+#define DRM_LIMA_GET_PARAM 0x00
+#define DRM_LIMA_GEM_CREATE 0x01
+#define DRM_LIMA_GEM_INFO 0x02
+#define DRM_LIMA_GEM_SUBMIT 0x03
+#define DRM_LIMA_GEM_WAIT 0x04
+#define DRM_LIMA_CTX_CREATE 0x05
+#define DRM_LIMA_CTX_FREE 0x06
+#define DRM_IOCTL_LIMA_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_LIMA_GET_PARAM, struct drm_lima_get_param)
+#define DRM_IOCTL_LIMA_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_LIMA_GEM_CREATE, struct drm_lima_gem_create)
+#define DRM_IOCTL_LIMA_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_LIMA_GEM_INFO, struct drm_lima_gem_info)
+#define DRM_IOCTL_LIMA_GEM_SUBMIT DRM_IOW(DRM_COMMAND_BASE + DRM_LIMA_GEM_SUBMIT, struct drm_lima_gem_submit)
+#define DRM_IOCTL_LIMA_GEM_WAIT DRM_IOW(DRM_COMMAND_BASE + DRM_LIMA_GEM_WAIT, struct drm_lima_gem_wait)
+#define DRM_IOCTL_LIMA_CTX_CREATE DRM_IOR(DRM_COMMAND_BASE + DRM_LIMA_CTX_CREATE, struct drm_lima_ctx_create)
+#define DRM_IOCTL_LIMA_CTX_FREE DRM_IOW(DRM_COMMAND_BASE + DRM_LIMA_CTX_FREE, struct drm_lima_ctx_free)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/mga_drm.h b/x86_64-linux-musl/include/drm/mga_drm.h
new file mode 100644
index 0000000..dc62961
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/mga_drm.h
@@ -0,0 +1,247 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __MGA_DRM_H__
+#define __MGA_DRM_H__
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef __MGA_SAREA_DEFINES__
+#define __MGA_SAREA_DEFINES__
+#define MGA_F 0x1
+#define MGA_A 0x2
+#define MGA_S 0x4
+#define MGA_T2 0x8
+#define MGA_WARP_TGZ 0
+#define MGA_WARP_TGZF (MGA_F)
+#define MGA_WARP_TGZA (MGA_A)
+#define MGA_WARP_TGZAF (MGA_F | MGA_A)
+#define MGA_WARP_TGZS (MGA_S)
+#define MGA_WARP_TGZSF (MGA_S | MGA_F)
+#define MGA_WARP_TGZSA (MGA_S | MGA_A)
+#define MGA_WARP_TGZSAF (MGA_S | MGA_F | MGA_A)
+#define MGA_WARP_T2GZ (MGA_T2)
+#define MGA_WARP_T2GZF (MGA_T2 | MGA_F)
+#define MGA_WARP_T2GZA (MGA_T2 | MGA_A)
+#define MGA_WARP_T2GZAF (MGA_T2 | MGA_A | MGA_F)
+#define MGA_WARP_T2GZS (MGA_T2 | MGA_S)
+#define MGA_WARP_T2GZSF (MGA_T2 | MGA_S | MGA_F)
+#define MGA_WARP_T2GZSA (MGA_T2 | MGA_S | MGA_A)
+#define MGA_WARP_T2GZSAF (MGA_T2 | MGA_S | MGA_F | MGA_A)
+#define MGA_MAX_G200_PIPES 8
+#define MGA_MAX_G400_PIPES 16
+#define MGA_MAX_WARP_PIPES MGA_MAX_G400_PIPES
+#define MGA_WARP_UCODE_SIZE 32768
+#define MGA_CARD_TYPE_G200 1
+#define MGA_CARD_TYPE_G400 2
+#define MGA_CARD_TYPE_G450 3
+#define MGA_CARD_TYPE_G550 4
+#define MGA_FRONT 0x1
+#define MGA_BACK 0x2
+#define MGA_DEPTH 0x4
+#define MGA_UPLOAD_CONTEXT 0x1
+#define MGA_UPLOAD_TEX0 0x2
+#define MGA_UPLOAD_TEX1 0x4
+#define MGA_UPLOAD_PIPE 0x8
+#define MGA_UPLOAD_TEX0IMAGE 0x10
+#define MGA_UPLOAD_TEX1IMAGE 0x20
+#define MGA_UPLOAD_2D 0x40
+#define MGA_WAIT_AGE 0x80
+#define MGA_UPLOAD_CLIPRECTS 0x100
+#define MGA_BUFFER_SIZE (1 << 16)
+#define MGA_NUM_BUFFERS 128
+#define MGA_NR_SAREA_CLIPRECTS 8
+#define MGA_CARD_HEAP 0
+#define MGA_AGP_HEAP 1
+#define MGA_NR_TEX_HEAPS 2
+#define MGA_NR_TEX_REGIONS 16
+#define MGA_LOG_MIN_TEX_REGION_SIZE 16
+#define DRM_MGA_IDLE_RETRY 2048
+#endif
+typedef struct {
+  unsigned int dstorg;
+  unsigned int maccess;
+  unsigned int plnwt;
+  unsigned int dwgctl;
+  unsigned int alphactrl;
+  unsigned int fogcolor;
+  unsigned int wflag;
+  unsigned int tdualstage0;
+  unsigned int tdualstage1;
+  unsigned int fcol;
+  unsigned int stencil;
+  unsigned int stencilctl;
+} drm_mga_context_regs_t;
+typedef struct {
+  unsigned int pitch;
+} drm_mga_server_regs_t;
+typedef struct {
+  unsigned int texctl;
+  unsigned int texctl2;
+  unsigned int texfilter;
+  unsigned int texbordercol;
+  unsigned int texorg;
+  unsigned int texwidth;
+  unsigned int texheight;
+  unsigned int texorg1;
+  unsigned int texorg2;
+  unsigned int texorg3;
+  unsigned int texorg4;
+} drm_mga_texture_regs_t;
+typedef struct {
+  unsigned int head;
+  unsigned int wrap;
+} drm_mga_age_t;
+typedef struct _drm_mga_sarea {
+  drm_mga_context_regs_t context_state;
+  drm_mga_server_regs_t server_state;
+  drm_mga_texture_regs_t tex_state[2];
+  unsigned int warp_pipe;
+  unsigned int dirty;
+  unsigned int vertsize;
+  struct drm_clip_rect boxes[MGA_NR_SAREA_CLIPRECTS];
+  unsigned int nbox;
+  unsigned int req_drawable;
+  unsigned int req_draw_buffer;
+  unsigned int exported_drawable;
+  unsigned int exported_index;
+  unsigned int exported_stamp;
+  unsigned int exported_buffers;
+  unsigned int exported_nfront;
+  unsigned int exported_nback;
+  int exported_back_x, exported_front_x, exported_w;
+  int exported_back_y, exported_front_y, exported_h;
+  struct drm_clip_rect exported_boxes[MGA_NR_SAREA_CLIPRECTS];
+  unsigned int status[4];
+  unsigned int last_wrap;
+  drm_mga_age_t last_frame;
+  unsigned int last_enqueue;
+  unsigned int last_dispatch;
+  unsigned int last_quiescent;
+  struct drm_tex_region texList[MGA_NR_TEX_HEAPS][MGA_NR_TEX_REGIONS + 1];
+  unsigned int texAge[MGA_NR_TEX_HEAPS];
+  int ctxOwner;
+} drm_mga_sarea_t;
+#define DRM_MGA_INIT 0x00
+#define DRM_MGA_FLUSH 0x01
+#define DRM_MGA_RESET 0x02
+#define DRM_MGA_SWAP 0x03
+#define DRM_MGA_CLEAR 0x04
+#define DRM_MGA_VERTEX 0x05
+#define DRM_MGA_INDICES 0x06
+#define DRM_MGA_ILOAD 0x07
+#define DRM_MGA_BLIT 0x08
+#define DRM_MGA_GETPARAM 0x09
+#define DRM_MGA_SET_FENCE 0x0a
+#define DRM_MGA_WAIT_FENCE 0x0b
+#define DRM_MGA_DMA_BOOTSTRAP 0x0c
+#define DRM_IOCTL_MGA_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_INIT, drm_mga_init_t)
+#define DRM_IOCTL_MGA_FLUSH DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_FLUSH, struct drm_lock)
+#define DRM_IOCTL_MGA_RESET DRM_IO(DRM_COMMAND_BASE + DRM_MGA_RESET)
+#define DRM_IOCTL_MGA_SWAP DRM_IO(DRM_COMMAND_BASE + DRM_MGA_SWAP)
+#define DRM_IOCTL_MGA_CLEAR DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_CLEAR, drm_mga_clear_t)
+#define DRM_IOCTL_MGA_VERTEX DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_VERTEX, drm_mga_vertex_t)
+#define DRM_IOCTL_MGA_INDICES DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_INDICES, drm_mga_indices_t)
+#define DRM_IOCTL_MGA_ILOAD DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_ILOAD, drm_mga_iload_t)
+#define DRM_IOCTL_MGA_BLIT DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_BLIT, drm_mga_blit_t)
+#define DRM_IOCTL_MGA_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_MGA_GETPARAM, drm_mga_getparam_t)
+#define DRM_IOCTL_MGA_SET_FENCE DRM_IOW(DRM_COMMAND_BASE + DRM_MGA_SET_FENCE, __u32)
+#define DRM_IOCTL_MGA_WAIT_FENCE DRM_IOWR(DRM_COMMAND_BASE + DRM_MGA_WAIT_FENCE, __u32)
+#define DRM_IOCTL_MGA_DMA_BOOTSTRAP DRM_IOWR(DRM_COMMAND_BASE + DRM_MGA_DMA_BOOTSTRAP, drm_mga_dma_bootstrap_t)
+typedef struct _drm_mga_warp_index {
+  int installed;
+  unsigned long phys_addr;
+  int size;
+} drm_mga_warp_index_t;
+typedef struct drm_mga_init {
+  enum {
+    MGA_INIT_DMA = 0x01,
+    MGA_CLEANUP_DMA = 0x02
+  } func;
+  unsigned long sarea_priv_offset;
+  __struct_group(, always32bit,, int chipset;
+  int sgram;
+  unsigned int maccess;
+  unsigned int fb_cpp;
+  unsigned int front_offset, front_pitch;
+  unsigned int back_offset, back_pitch;
+  unsigned int depth_cpp;
+  unsigned int depth_offset, depth_pitch;
+  unsigned int texture_offset[MGA_NR_TEX_HEAPS];
+  unsigned int texture_size[MGA_NR_TEX_HEAPS];
+ );
+  unsigned long fb_offset;
+  unsigned long mmio_offset;
+  unsigned long status_offset;
+  unsigned long warp_offset;
+  unsigned long primary_offset;
+  unsigned long buffers_offset;
+} drm_mga_init_t;
+typedef struct drm_mga_dma_bootstrap {
+  unsigned long texture_handle;
+  __u32 texture_size;
+  __u32 primary_size;
+  __u32 secondary_bin_count;
+  __u32 secondary_bin_size;
+  __u32 agp_mode;
+  __u8 agp_size;
+} drm_mga_dma_bootstrap_t;
+typedef struct drm_mga_clear {
+  unsigned int flags;
+  unsigned int clear_color;
+  unsigned int clear_depth;
+  unsigned int color_mask;
+  unsigned int depth_mask;
+} drm_mga_clear_t;
+typedef struct drm_mga_vertex {
+  int idx;
+  int used;
+  int discard;
+} drm_mga_vertex_t;
+typedef struct drm_mga_indices {
+  int idx;
+  unsigned int start;
+  unsigned int end;
+  int discard;
+} drm_mga_indices_t;
+typedef struct drm_mga_iload {
+  int idx;
+  unsigned int dstorg;
+  unsigned int length;
+} drm_mga_iload_t;
+typedef struct _drm_mga_blit {
+  unsigned int planemask;
+  unsigned int srcorg;
+  unsigned int dstorg;
+  int src_pitch, dst_pitch;
+  int delta_sx, delta_sy;
+  int delta_dx, delta_dy;
+  int height, ydir;
+  int source_pitch, dest_pitch;
+} drm_mga_blit_t;
+#define MGA_PARAM_IRQ_NR 1
+#define MGA_PARAM_CARD_TYPE 2
+typedef struct drm_mga_getparam {
+  int param;
+  void __user * value;
+} drm_mga_getparam_t;
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/msm_drm.h b/x86_64-linux-musl/include/drm/msm_drm.h
new file mode 100644
index 0000000..b4ba1d0
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/msm_drm.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 __MSM_DRM_H__
+#define __MSM_DRM_H__
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define MSM_PIPE_NONE 0x00
+#define MSM_PIPE_2D0 0x01
+#define MSM_PIPE_2D1 0x02
+#define MSM_PIPE_3D0 0x10
+#define MSM_PIPE_ID_MASK 0xffff
+#define MSM_PIPE_ID(x) ((x) & MSM_PIPE_ID_MASK)
+#define MSM_PIPE_FLAGS(x) ((x) & ~MSM_PIPE_ID_MASK)
+struct drm_msm_timespec {
+  __s64 tv_sec;
+  __s64 tv_nsec;
+};
+#define MSM_PARAM_GPU_ID 0x01
+#define MSM_PARAM_GMEM_SIZE 0x02
+#define MSM_PARAM_CHIP_ID 0x03
+#define MSM_PARAM_MAX_FREQ 0x04
+#define MSM_PARAM_TIMESTAMP 0x05
+#define MSM_PARAM_GMEM_BASE 0x06
+#define MSM_PARAM_PRIORITIES 0x07
+#define MSM_PARAM_PP_PGTABLE 0x08
+#define MSM_PARAM_FAULTS 0x09
+#define MSM_PARAM_SUSPENDS 0x0a
+#define MSM_PARAM_NR_RINGS MSM_PARAM_PRIORITIES
+struct drm_msm_param {
+  __u32 pipe;
+  __u32 param;
+  __u64 value;
+};
+#define MSM_BO_SCANOUT 0x00000001
+#define MSM_BO_GPU_READONLY 0x00000002
+#define MSM_BO_CACHE_MASK 0x000f0000
+#define MSM_BO_CACHED 0x00010000
+#define MSM_BO_WC 0x00020000
+#define MSM_BO_UNCACHED 0x00040000
+#define MSM_BO_CACHED_COHERENT 0x080000
+#define MSM_BO_FLAGS (MSM_BO_SCANOUT | MSM_BO_GPU_READONLY | MSM_BO_CACHE_MASK)
+struct drm_msm_gem_new {
+  __u64 size;
+  __u32 flags;
+  __u32 handle;
+};
+#define MSM_INFO_GET_OFFSET 0x00
+#define MSM_INFO_GET_IOVA 0x01
+#define MSM_INFO_SET_NAME 0x02
+#define MSM_INFO_GET_NAME 0x03
+struct drm_msm_gem_info {
+  __u32 handle;
+  __u32 info;
+  __u64 value;
+  __u32 len;
+  __u32 pad;
+};
+#define MSM_PREP_READ 0x01
+#define MSM_PREP_WRITE 0x02
+#define MSM_PREP_NOSYNC 0x04
+#define MSM_PREP_FLAGS (MSM_PREP_READ | MSM_PREP_WRITE | MSM_PREP_NOSYNC)
+struct drm_msm_gem_cpu_prep {
+  __u32 handle;
+  __u32 op;
+  struct drm_msm_timespec timeout;
+};
+struct drm_msm_gem_cpu_fini {
+  __u32 handle;
+};
+struct drm_msm_gem_submit_reloc {
+  __u32 submit_offset;
+  __u32 or;
+  __s32 shift;
+  __u32 reloc_idx;
+  __u64 reloc_offset;
+};
+#define MSM_SUBMIT_CMD_BUF 0x0001
+#define MSM_SUBMIT_CMD_IB_TARGET_BUF 0x0002
+#define MSM_SUBMIT_CMD_CTX_RESTORE_BUF 0x0003
+struct drm_msm_gem_submit_cmd {
+  __u32 type;
+  __u32 submit_idx;
+  __u32 submit_offset;
+  __u32 size;
+  __u32 pad;
+  __u32 nr_relocs;
+  __u64 relocs;
+};
+#define MSM_SUBMIT_BO_READ 0x0001
+#define MSM_SUBMIT_BO_WRITE 0x0002
+#define MSM_SUBMIT_BO_DUMP 0x0004
+#define MSM_SUBMIT_BO_FLAGS (MSM_SUBMIT_BO_READ | MSM_SUBMIT_BO_WRITE | MSM_SUBMIT_BO_DUMP)
+struct drm_msm_gem_submit_bo {
+  __u32 flags;
+  __u32 handle;
+  __u64 presumed;
+};
+#define MSM_SUBMIT_NO_IMPLICIT 0x80000000
+#define MSM_SUBMIT_FENCE_FD_IN 0x40000000
+#define MSM_SUBMIT_FENCE_FD_OUT 0x20000000
+#define MSM_SUBMIT_SUDO 0x10000000
+#define MSM_SUBMIT_SYNCOBJ_IN 0x08000000
+#define MSM_SUBMIT_SYNCOBJ_OUT 0x04000000
+#define MSM_SUBMIT_FLAGS (MSM_SUBMIT_NO_IMPLICIT | MSM_SUBMIT_FENCE_FD_IN | MSM_SUBMIT_FENCE_FD_OUT | MSM_SUBMIT_SUDO | MSM_SUBMIT_SYNCOBJ_IN | MSM_SUBMIT_SYNCOBJ_OUT | 0)
+#define MSM_SUBMIT_SYNCOBJ_RESET 0x00000001
+#define MSM_SUBMIT_SYNCOBJ_FLAGS (MSM_SUBMIT_SYNCOBJ_RESET | 0)
+struct drm_msm_gem_submit_syncobj {
+  __u32 handle;
+  __u32 flags;
+  __u64 point;
+};
+struct drm_msm_gem_submit {
+  __u32 flags;
+  __u32 fence;
+  __u32 nr_bos;
+  __u32 nr_cmds;
+  __u64 bos;
+  __u64 cmds;
+  __s32 fence_fd;
+  __u32 queueid;
+  __u64 in_syncobjs;
+  __u64 out_syncobjs;
+  __u32 nr_in_syncobjs;
+  __u32 nr_out_syncobjs;
+  __u32 syncobj_stride;
+  __u32 pad;
+};
+struct drm_msm_wait_fence {
+  __u32 fence;
+  __u32 pad;
+  struct drm_msm_timespec timeout;
+  __u32 queueid;
+};
+#define MSM_MADV_WILLNEED 0
+#define MSM_MADV_DONTNEED 1
+#define __MSM_MADV_PURGED 2
+struct drm_msm_gem_madvise {
+  __u32 handle;
+  __u32 madv;
+  __u32 retained;
+};
+#define MSM_SUBMITQUEUE_FLAGS (0)
+struct drm_msm_submitqueue {
+  __u32 flags;
+  __u32 prio;
+  __u32 id;
+};
+#define MSM_SUBMITQUEUE_PARAM_FAULTS 0
+struct drm_msm_submitqueue_query {
+  __u64 data;
+  __u32 id;
+  __u32 param;
+  __u32 len;
+  __u32 pad;
+};
+#define DRM_MSM_GET_PARAM 0x00
+#define DRM_MSM_GEM_NEW 0x02
+#define DRM_MSM_GEM_INFO 0x03
+#define DRM_MSM_GEM_CPU_PREP 0x04
+#define DRM_MSM_GEM_CPU_FINI 0x05
+#define DRM_MSM_GEM_SUBMIT 0x06
+#define DRM_MSM_WAIT_FENCE 0x07
+#define DRM_MSM_GEM_MADVISE 0x08
+#define DRM_MSM_SUBMITQUEUE_NEW 0x0A
+#define DRM_MSM_SUBMITQUEUE_CLOSE 0x0B
+#define DRM_MSM_SUBMITQUEUE_QUERY 0x0C
+#define DRM_IOCTL_MSM_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GET_PARAM, struct drm_msm_param)
+#define DRM_IOCTL_MSM_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_NEW, struct drm_msm_gem_new)
+#define DRM_IOCTL_MSM_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_INFO, struct drm_msm_gem_info)
+#define DRM_IOCTL_MSM_GEM_CPU_PREP DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_GEM_CPU_PREP, struct drm_msm_gem_cpu_prep)
+#define DRM_IOCTL_MSM_GEM_CPU_FINI DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_GEM_CPU_FINI, struct drm_msm_gem_cpu_fini)
+#define DRM_IOCTL_MSM_GEM_SUBMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_SUBMIT, struct drm_msm_gem_submit)
+#define DRM_IOCTL_MSM_WAIT_FENCE DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_WAIT_FENCE, struct drm_msm_wait_fence)
+#define DRM_IOCTL_MSM_GEM_MADVISE DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_MADVISE, struct drm_msm_gem_madvise)
+#define DRM_IOCTL_MSM_SUBMITQUEUE_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_NEW, struct drm_msm_submitqueue)
+#define DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_CLOSE, __u32)
+#define DRM_IOCTL_MSM_SUBMITQUEUE_QUERY DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_QUERY, struct drm_msm_submitqueue_query)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/nouveau_drm.h b/x86_64-linux-musl/include/drm/nouveau_drm.h
new file mode 100644
index 0000000..150f729
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/nouveau_drm.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 __NOUVEAU_DRM_H__
+#define __NOUVEAU_DRM_H__
+#define DRM_NOUVEAU_EVENT_NVIF 0x80000000
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define NOUVEAU_GEM_DOMAIN_CPU (1 << 0)
+#define NOUVEAU_GEM_DOMAIN_VRAM (1 << 1)
+#define NOUVEAU_GEM_DOMAIN_GART (1 << 2)
+#define NOUVEAU_GEM_DOMAIN_MAPPABLE (1 << 3)
+#define NOUVEAU_GEM_DOMAIN_COHERENT (1 << 4)
+#define NOUVEAU_GEM_TILE_COMP 0x00030000
+#define NOUVEAU_GEM_TILE_LAYOUT_MASK 0x0000ff00
+#define NOUVEAU_GEM_TILE_16BPP 0x00000001
+#define NOUVEAU_GEM_TILE_32BPP 0x00000002
+#define NOUVEAU_GEM_TILE_ZETA 0x00000004
+#define NOUVEAU_GEM_TILE_NONCONTIG 0x00000008
+struct drm_nouveau_gem_info {
+  __u32 handle;
+  __u32 domain;
+  __u64 size;
+  __u64 offset;
+  __u64 map_handle;
+  __u32 tile_mode;
+  __u32 tile_flags;
+};
+struct drm_nouveau_gem_new {
+  struct drm_nouveau_gem_info info;
+  __u32 channel_hint;
+  __u32 align;
+};
+#define NOUVEAU_GEM_MAX_BUFFERS 1024
+struct drm_nouveau_gem_pushbuf_bo_presumed {
+  __u32 valid;
+  __u32 domain;
+  __u64 offset;
+};
+struct drm_nouveau_gem_pushbuf_bo {
+  __u64 user_priv;
+  __u32 handle;
+  __u32 read_domains;
+  __u32 write_domains;
+  __u32 valid_domains;
+  struct drm_nouveau_gem_pushbuf_bo_presumed presumed;
+};
+#define NOUVEAU_GEM_RELOC_LOW (1 << 0)
+#define NOUVEAU_GEM_RELOC_HIGH (1 << 1)
+#define NOUVEAU_GEM_RELOC_OR (1 << 2)
+#define NOUVEAU_GEM_MAX_RELOCS 1024
+struct drm_nouveau_gem_pushbuf_reloc {
+  __u32 reloc_bo_index;
+  __u32 reloc_bo_offset;
+  __u32 bo_index;
+  __u32 flags;
+  __u32 data;
+  __u32 vor;
+  __u32 tor;
+};
+#define NOUVEAU_GEM_MAX_PUSH 512
+struct drm_nouveau_gem_pushbuf_push {
+  __u32 bo_index;
+  __u32 pad;
+  __u64 offset;
+  __u64 length;
+};
+struct drm_nouveau_gem_pushbuf {
+  __u32 channel;
+  __u32 nr_buffers;
+  __u64 buffers;
+  __u32 nr_relocs;
+  __u32 nr_push;
+  __u64 relocs;
+  __u64 push;
+  __u32 suffix0;
+  __u32 suffix1;
+#define NOUVEAU_GEM_PUSHBUF_SYNC (1ULL << 0)
+  __u64 vram_available;
+  __u64 gart_available;
+};
+#define NOUVEAU_GEM_CPU_PREP_NOWAIT 0x00000001
+#define NOUVEAU_GEM_CPU_PREP_WRITE 0x00000004
+struct drm_nouveau_gem_cpu_prep {
+  __u32 handle;
+  __u32 flags;
+};
+struct drm_nouveau_gem_cpu_fini {
+  __u32 handle;
+};
+#define DRM_NOUVEAU_GETPARAM 0x00
+#define DRM_NOUVEAU_SETPARAM 0x01
+#define DRM_NOUVEAU_CHANNEL_ALLOC 0x02
+#define DRM_NOUVEAU_CHANNEL_FREE 0x03
+#define DRM_NOUVEAU_GROBJ_ALLOC 0x04
+#define DRM_NOUVEAU_NOTIFIEROBJ_ALLOC 0x05
+#define DRM_NOUVEAU_GPUOBJ_FREE 0x06
+#define DRM_NOUVEAU_NVIF 0x07
+#define DRM_NOUVEAU_SVM_INIT 0x08
+#define DRM_NOUVEAU_SVM_BIND 0x09
+#define DRM_NOUVEAU_GEM_NEW 0x40
+#define DRM_NOUVEAU_GEM_PUSHBUF 0x41
+#define DRM_NOUVEAU_GEM_CPU_PREP 0x42
+#define DRM_NOUVEAU_GEM_CPU_FINI 0x43
+#define DRM_NOUVEAU_GEM_INFO 0x44
+struct drm_nouveau_svm_init {
+  __u64 unmanaged_addr;
+  __u64 unmanaged_size;
+};
+struct drm_nouveau_svm_bind {
+  __u64 header;
+  __u64 va_start;
+  __u64 va_end;
+  __u64 npages;
+  __u64 stride;
+  __u64 result;
+  __u64 reserved0;
+  __u64 reserved1;
+};
+#define NOUVEAU_SVM_BIND_COMMAND_SHIFT 0
+#define NOUVEAU_SVM_BIND_COMMAND_BITS 8
+#define NOUVEAU_SVM_BIND_COMMAND_MASK ((1 << 8) - 1)
+#define NOUVEAU_SVM_BIND_PRIORITY_SHIFT 8
+#define NOUVEAU_SVM_BIND_PRIORITY_BITS 8
+#define NOUVEAU_SVM_BIND_PRIORITY_MASK ((1 << 8) - 1)
+#define NOUVEAU_SVM_BIND_TARGET_SHIFT 16
+#define NOUVEAU_SVM_BIND_TARGET_BITS 32
+#define NOUVEAU_SVM_BIND_TARGET_MASK 0xffffffff
+#define NOUVEAU_SVM_BIND_VALID_BITS 48
+#define NOUVEAU_SVM_BIND_VALID_MASK ((1ULL << NOUVEAU_SVM_BIND_VALID_BITS) - 1)
+#define NOUVEAU_SVM_BIND_COMMAND__MIGRATE 0
+#define NOUVEAU_SVM_BIND_TARGET__GPU_VRAM (1UL << 31)
+#define DRM_IOCTL_NOUVEAU_SVM_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SVM_INIT, struct drm_nouveau_svm_init)
+#define DRM_IOCTL_NOUVEAU_SVM_BIND DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SVM_BIND, struct drm_nouveau_svm_bind)
+#define DRM_IOCTL_NOUVEAU_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_NEW, struct drm_nouveau_gem_new)
+#define DRM_IOCTL_NOUVEAU_GEM_PUSHBUF DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_PUSHBUF, struct drm_nouveau_gem_pushbuf)
+#define DRM_IOCTL_NOUVEAU_GEM_CPU_PREP DRM_IOW(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_PREP, struct drm_nouveau_gem_cpu_prep)
+#define DRM_IOCTL_NOUVEAU_GEM_CPU_FINI DRM_IOW(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_FINI, struct drm_nouveau_gem_cpu_fini)
+#define DRM_IOCTL_NOUVEAU_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_INFO, struct drm_nouveau_gem_info)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/omap_drm.h b/x86_64-linux-musl/include/drm/omap_drm.h
new file mode 100644
index 0000000..72d949d
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/omap_drm.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 __OMAP_DRM_H__
+#define __OMAP_DRM_H__
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define OMAP_PARAM_CHIPSET_ID 1
+struct drm_omap_param {
+  __u64 param;
+  __u64 value;
+};
+#define OMAP_BO_SCANOUT 0x00000001
+#define OMAP_BO_CACHED 0x00000000
+#define OMAP_BO_WC 0x00000002
+#define OMAP_BO_UNCACHED 0x00000004
+#define OMAP_BO_CACHE_MASK 0x00000006
+#define OMAP_BO_TILED_8 0x00000100
+#define OMAP_BO_TILED_16 0x00000200
+#define OMAP_BO_TILED_32 0x00000300
+#define OMAP_BO_TILED_MASK 0x00000f00
+union omap_gem_size {
+  __u32 bytes;
+  struct {
+    __u16 width;
+    __u16 height;
+  } tiled;
+};
+struct drm_omap_gem_new {
+  union omap_gem_size size;
+  __u32 flags;
+  __u32 handle;
+  __u32 __pad;
+};
+enum omap_gem_op {
+  OMAP_GEM_READ = 0x01,
+  OMAP_GEM_WRITE = 0x02,
+};
+struct drm_omap_gem_cpu_prep {
+  __u32 handle;
+  __u32 op;
+};
+struct drm_omap_gem_cpu_fini {
+  __u32 handle;
+  __u32 op;
+  __u32 nregions;
+  __u32 __pad;
+};
+struct drm_omap_gem_info {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+  __u32 size;
+  __u32 __pad;
+};
+#define DRM_OMAP_GET_PARAM 0x00
+#define DRM_OMAP_SET_PARAM 0x01
+#define DRM_OMAP_GEM_NEW 0x03
+#define DRM_OMAP_GEM_CPU_PREP 0x04
+#define DRM_OMAP_GEM_CPU_FINI 0x05
+#define DRM_OMAP_GEM_INFO 0x06
+#define DRM_OMAP_NUM_IOCTLS 0x07
+#define DRM_IOCTL_OMAP_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_OMAP_GET_PARAM, struct drm_omap_param)
+#define DRM_IOCTL_OMAP_SET_PARAM DRM_IOW(DRM_COMMAND_BASE + DRM_OMAP_SET_PARAM, struct drm_omap_param)
+#define DRM_IOCTL_OMAP_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_OMAP_GEM_NEW, struct drm_omap_gem_new)
+#define DRM_IOCTL_OMAP_GEM_CPU_PREP DRM_IOW(DRM_COMMAND_BASE + DRM_OMAP_GEM_CPU_PREP, struct drm_omap_gem_cpu_prep)
+#define DRM_IOCTL_OMAP_GEM_CPU_FINI DRM_IOW(DRM_COMMAND_BASE + DRM_OMAP_GEM_CPU_FINI, struct drm_omap_gem_cpu_fini)
+#define DRM_IOCTL_OMAP_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_OMAP_GEM_INFO, struct drm_omap_gem_info)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/panfrost_drm.h b/x86_64-linux-musl/include/drm/panfrost_drm.h
new file mode 100644
index 0000000..1f4473d
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/panfrost_drm.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 _PANFROST_DRM_H_
+#define _PANFROST_DRM_H_
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_PANFROST_SUBMIT 0x00
+#define DRM_PANFROST_WAIT_BO 0x01
+#define DRM_PANFROST_CREATE_BO 0x02
+#define DRM_PANFROST_MMAP_BO 0x03
+#define DRM_PANFROST_GET_PARAM 0x04
+#define DRM_PANFROST_GET_BO_OFFSET 0x05
+#define DRM_PANFROST_PERFCNT_ENABLE 0x06
+#define DRM_PANFROST_PERFCNT_DUMP 0x07
+#define DRM_PANFROST_MADVISE 0x08
+#define DRM_IOCTL_PANFROST_SUBMIT DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_SUBMIT, struct drm_panfrost_submit)
+#define DRM_IOCTL_PANFROST_WAIT_BO DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_WAIT_BO, struct drm_panfrost_wait_bo)
+#define DRM_IOCTL_PANFROST_CREATE_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_CREATE_BO, struct drm_panfrost_create_bo)
+#define DRM_IOCTL_PANFROST_MMAP_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_MMAP_BO, struct drm_panfrost_mmap_bo)
+#define DRM_IOCTL_PANFROST_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_GET_PARAM, struct drm_panfrost_get_param)
+#define DRM_IOCTL_PANFROST_GET_BO_OFFSET DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_GET_BO_OFFSET, struct drm_panfrost_get_bo_offset)
+#define DRM_IOCTL_PANFROST_MADVISE DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_MADVISE, struct drm_panfrost_madvise)
+#define DRM_IOCTL_PANFROST_PERFCNT_ENABLE DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_PERFCNT_ENABLE, struct drm_panfrost_perfcnt_enable)
+#define DRM_IOCTL_PANFROST_PERFCNT_DUMP DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_PERFCNT_DUMP, struct drm_panfrost_perfcnt_dump)
+#define PANFROST_JD_REQ_FS (1 << 0)
+struct drm_panfrost_submit {
+  __u64 jc;
+  __u64 in_syncs;
+  __u32 in_sync_count;
+  __u32 out_sync;
+  __u64 bo_handles;
+  __u32 bo_handle_count;
+  __u32 requirements;
+};
+struct drm_panfrost_wait_bo {
+  __u32 handle;
+  __u32 pad;
+  __s64 timeout_ns;
+};
+#define PANFROST_BO_NOEXEC 1
+#define PANFROST_BO_HEAP 2
+struct drm_panfrost_create_bo {
+  __u32 size;
+  __u32 flags;
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+};
+struct drm_panfrost_mmap_bo {
+  __u32 handle;
+  __u32 flags;
+  __u64 offset;
+};
+enum drm_panfrost_param {
+  DRM_PANFROST_PARAM_GPU_PROD_ID,
+  DRM_PANFROST_PARAM_GPU_REVISION,
+  DRM_PANFROST_PARAM_SHADER_PRESENT,
+  DRM_PANFROST_PARAM_TILER_PRESENT,
+  DRM_PANFROST_PARAM_L2_PRESENT,
+  DRM_PANFROST_PARAM_STACK_PRESENT,
+  DRM_PANFROST_PARAM_AS_PRESENT,
+  DRM_PANFROST_PARAM_JS_PRESENT,
+  DRM_PANFROST_PARAM_L2_FEATURES,
+  DRM_PANFROST_PARAM_CORE_FEATURES,
+  DRM_PANFROST_PARAM_TILER_FEATURES,
+  DRM_PANFROST_PARAM_MEM_FEATURES,
+  DRM_PANFROST_PARAM_MMU_FEATURES,
+  DRM_PANFROST_PARAM_THREAD_FEATURES,
+  DRM_PANFROST_PARAM_MAX_THREADS,
+  DRM_PANFROST_PARAM_THREAD_MAX_WORKGROUP_SZ,
+  DRM_PANFROST_PARAM_THREAD_MAX_BARRIER_SZ,
+  DRM_PANFROST_PARAM_COHERENCY_FEATURES,
+  DRM_PANFROST_PARAM_TEXTURE_FEATURES0,
+  DRM_PANFROST_PARAM_TEXTURE_FEATURES1,
+  DRM_PANFROST_PARAM_TEXTURE_FEATURES2,
+  DRM_PANFROST_PARAM_TEXTURE_FEATURES3,
+  DRM_PANFROST_PARAM_JS_FEATURES0,
+  DRM_PANFROST_PARAM_JS_FEATURES1,
+  DRM_PANFROST_PARAM_JS_FEATURES2,
+  DRM_PANFROST_PARAM_JS_FEATURES3,
+  DRM_PANFROST_PARAM_JS_FEATURES4,
+  DRM_PANFROST_PARAM_JS_FEATURES5,
+  DRM_PANFROST_PARAM_JS_FEATURES6,
+  DRM_PANFROST_PARAM_JS_FEATURES7,
+  DRM_PANFROST_PARAM_JS_FEATURES8,
+  DRM_PANFROST_PARAM_JS_FEATURES9,
+  DRM_PANFROST_PARAM_JS_FEATURES10,
+  DRM_PANFROST_PARAM_JS_FEATURES11,
+  DRM_PANFROST_PARAM_JS_FEATURES12,
+  DRM_PANFROST_PARAM_JS_FEATURES13,
+  DRM_PANFROST_PARAM_JS_FEATURES14,
+  DRM_PANFROST_PARAM_JS_FEATURES15,
+  DRM_PANFROST_PARAM_NR_CORE_GROUPS,
+  DRM_PANFROST_PARAM_THREAD_TLS_ALLOC,
+  DRM_PANFROST_PARAM_AFBC_FEATURES,
+};
+struct drm_panfrost_get_param {
+  __u32 param;
+  __u32 pad;
+  __u64 value;
+};
+struct drm_panfrost_get_bo_offset {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+};
+struct drm_panfrost_perfcnt_enable {
+  __u32 enable;
+  __u32 counterset;
+};
+struct drm_panfrost_perfcnt_dump {
+  __u64 buf_ptr;
+};
+#define PANFROST_MADV_WILLNEED 0
+#define PANFROST_MADV_DONTNEED 1
+struct drm_panfrost_madvise {
+  __u32 handle;
+  __u32 madv;
+  __u32 retained;
+};
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/qxl_drm.h b/x86_64-linux-musl/include/drm/qxl_drm.h
new file mode 100644
index 0000000..e9521c4
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/qxl_drm.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 QXL_DRM_H
+#define QXL_DRM_H
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define QXL_GEM_DOMAIN_CPU 0
+#define QXL_GEM_DOMAIN_VRAM 1
+#define QXL_GEM_DOMAIN_SURFACE 2
+#define DRM_QXL_ALLOC 0x00
+#define DRM_QXL_MAP 0x01
+#define DRM_QXL_EXECBUFFER 0x02
+#define DRM_QXL_UPDATE_AREA 0x03
+#define DRM_QXL_GETPARAM 0x04
+#define DRM_QXL_CLIENTCAP 0x05
+#define DRM_QXL_ALLOC_SURF 0x06
+struct drm_qxl_alloc {
+  __u32 size;
+  __u32 handle;
+};
+struct drm_qxl_map {
+  __u64 offset;
+  __u32 handle;
+  __u32 pad;
+};
+#define QXL_RELOC_TYPE_BO 1
+#define QXL_RELOC_TYPE_SURF 2
+struct drm_qxl_reloc {
+  __u64 src_offset;
+  __u64 dst_offset;
+  __u32 src_handle;
+  __u32 dst_handle;
+  __u32 reloc_type;
+  __u32 pad;
+};
+struct drm_qxl_command {
+  __u64 command;
+  __u64 relocs;
+  __u32 type;
+  __u32 command_size;
+  __u32 relocs_num;
+  __u32 pad;
+};
+struct drm_qxl_execbuffer {
+  __u32 flags;
+  __u32 commands_num;
+  __u64 commands;
+};
+struct drm_qxl_update_area {
+  __u32 handle;
+  __u32 top;
+  __u32 left;
+  __u32 bottom;
+  __u32 right;
+  __u32 pad;
+};
+#define QXL_PARAM_NUM_SURFACES 1
+#define QXL_PARAM_MAX_RELOCS 2
+struct drm_qxl_getparam {
+  __u64 param;
+  __u64 value;
+};
+struct drm_qxl_clientcap {
+  __u32 index;
+  __u32 pad;
+};
+struct drm_qxl_alloc_surf {
+  __u32 format;
+  __u32 width;
+  __u32 height;
+  __s32 stride;
+  __u32 handle;
+  __u32 pad;
+};
+#define DRM_IOCTL_QXL_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_ALLOC, struct drm_qxl_alloc)
+#define DRM_IOCTL_QXL_MAP DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_MAP, struct drm_qxl_map)
+#define DRM_IOCTL_QXL_EXECBUFFER DRM_IOW(DRM_COMMAND_BASE + DRM_QXL_EXECBUFFER, struct drm_qxl_execbuffer)
+#define DRM_IOCTL_QXL_UPDATE_AREA DRM_IOW(DRM_COMMAND_BASE + DRM_QXL_UPDATE_AREA, struct drm_qxl_update_area)
+#define DRM_IOCTL_QXL_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_GETPARAM, struct drm_qxl_getparam)
+#define DRM_IOCTL_QXL_CLIENTCAP DRM_IOW(DRM_COMMAND_BASE + DRM_QXL_CLIENTCAP, struct drm_qxl_clientcap)
+#define DRM_IOCTL_QXL_ALLOC_SURF DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_ALLOC_SURF, struct drm_qxl_alloc_surf)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/r128_drm.h b/x86_64-linux-musl/include/drm/r128_drm.h
new file mode 100644
index 0000000..618b6dc
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/r128_drm.h
@@ -0,0 +1,235 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __R128_DRM_H__
+#define __R128_DRM_H__
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef __R128_SAREA_DEFINES__
+#define __R128_SAREA_DEFINES__
+#define R128_UPLOAD_CONTEXT 0x001
+#define R128_UPLOAD_SETUP 0x002
+#define R128_UPLOAD_TEX0 0x004
+#define R128_UPLOAD_TEX1 0x008
+#define R128_UPLOAD_TEX0IMAGES 0x010
+#define R128_UPLOAD_TEX1IMAGES 0x020
+#define R128_UPLOAD_CORE 0x040
+#define R128_UPLOAD_MASKS 0x080
+#define R128_UPLOAD_WINDOW 0x100
+#define R128_UPLOAD_CLIPRECTS 0x200
+#define R128_REQUIRE_QUIESCENCE 0x400
+#define R128_UPLOAD_ALL 0x7ff
+#define R128_FRONT 0x1
+#define R128_BACK 0x2
+#define R128_DEPTH 0x4
+#define R128_POINTS 0x1
+#define R128_LINES 0x2
+#define R128_LINE_STRIP 0x3
+#define R128_TRIANGLES 0x4
+#define R128_TRIANGLE_FAN 0x5
+#define R128_TRIANGLE_STRIP 0x6
+#define R128_BUFFER_SIZE 16384
+#define R128_INDEX_PRIM_OFFSET 20
+#define R128_HOSTDATA_BLIT_OFFSET 32
+#define R128_NR_SAREA_CLIPRECTS 12
+#define R128_LOCAL_TEX_HEAP 0
+#define R128_AGP_TEX_HEAP 1
+#define R128_NR_TEX_HEAPS 2
+#define R128_NR_TEX_REGIONS 64
+#define R128_LOG_TEX_GRANULARITY 16
+#define R128_NR_CONTEXT_REGS 12
+#define R128_MAX_TEXTURE_LEVELS 11
+#define R128_MAX_TEXTURE_UNITS 2
+#endif
+typedef struct {
+  unsigned int dst_pitch_offset_c;
+  unsigned int dp_gui_master_cntl_c;
+  unsigned int sc_top_left_c;
+  unsigned int sc_bottom_right_c;
+  unsigned int z_offset_c;
+  unsigned int z_pitch_c;
+  unsigned int z_sten_cntl_c;
+  unsigned int tex_cntl_c;
+  unsigned int misc_3d_state_cntl_reg;
+  unsigned int texture_clr_cmp_clr_c;
+  unsigned int texture_clr_cmp_msk_c;
+  unsigned int fog_color_c;
+  unsigned int tex_size_pitch_c;
+  unsigned int constant_color_c;
+  unsigned int pm4_vc_fpu_setup;
+  unsigned int setup_cntl;
+  unsigned int dp_write_mask;
+  unsigned int sten_ref_mask_c;
+  unsigned int plane_3d_mask_c;
+  unsigned int window_xy_offset;
+  unsigned int scale_3d_cntl;
+} drm_r128_context_regs_t;
+typedef struct {
+  unsigned int tex_cntl;
+  unsigned int tex_combine_cntl;
+  unsigned int tex_size_pitch;
+  unsigned int tex_offset[R128_MAX_TEXTURE_LEVELS];
+  unsigned int tex_border_color;
+} drm_r128_texture_regs_t;
+typedef struct drm_r128_sarea {
+  drm_r128_context_regs_t context_state;
+  drm_r128_texture_regs_t tex_state[R128_MAX_TEXTURE_UNITS];
+  unsigned int dirty;
+  unsigned int vertsize;
+  unsigned int vc_format;
+  struct drm_clip_rect boxes[R128_NR_SAREA_CLIPRECTS];
+  unsigned int nbox;
+  unsigned int last_frame;
+  unsigned int last_dispatch;
+  struct drm_tex_region tex_list[R128_NR_TEX_HEAPS][R128_NR_TEX_REGIONS + 1];
+  unsigned int tex_age[R128_NR_TEX_HEAPS];
+  int ctx_owner;
+  int pfAllowPageFlip;
+  int pfCurrentPage;
+} drm_r128_sarea_t;
+#define DRM_R128_INIT 0x00
+#define DRM_R128_CCE_START 0x01
+#define DRM_R128_CCE_STOP 0x02
+#define DRM_R128_CCE_RESET 0x03
+#define DRM_R128_CCE_IDLE 0x04
+#define DRM_R128_RESET 0x06
+#define DRM_R128_SWAP 0x07
+#define DRM_R128_CLEAR 0x08
+#define DRM_R128_VERTEX 0x09
+#define DRM_R128_INDICES 0x0a
+#define DRM_R128_BLIT 0x0b
+#define DRM_R128_DEPTH 0x0c
+#define DRM_R128_STIPPLE 0x0d
+#define DRM_R128_INDIRECT 0x0f
+#define DRM_R128_FULLSCREEN 0x10
+#define DRM_R128_CLEAR2 0x11
+#define DRM_R128_GETPARAM 0x12
+#define DRM_R128_FLIP 0x13
+#define DRM_IOCTL_R128_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_R128_INIT, drm_r128_init_t)
+#define DRM_IOCTL_R128_CCE_START DRM_IO(DRM_COMMAND_BASE + DRM_R128_CCE_START)
+#define DRM_IOCTL_R128_CCE_STOP DRM_IOW(DRM_COMMAND_BASE + DRM_R128_CCE_STOP, drm_r128_cce_stop_t)
+#define DRM_IOCTL_R128_CCE_RESET DRM_IO(DRM_COMMAND_BASE + DRM_R128_CCE_RESET)
+#define DRM_IOCTL_R128_CCE_IDLE DRM_IO(DRM_COMMAND_BASE + DRM_R128_CCE_IDLE)
+#define DRM_IOCTL_R128_RESET DRM_IO(DRM_COMMAND_BASE + DRM_R128_RESET)
+#define DRM_IOCTL_R128_SWAP DRM_IO(DRM_COMMAND_BASE + DRM_R128_SWAP)
+#define DRM_IOCTL_R128_CLEAR DRM_IOW(DRM_COMMAND_BASE + DRM_R128_CLEAR, drm_r128_clear_t)
+#define DRM_IOCTL_R128_VERTEX DRM_IOW(DRM_COMMAND_BASE + DRM_R128_VERTEX, drm_r128_vertex_t)
+#define DRM_IOCTL_R128_INDICES DRM_IOW(DRM_COMMAND_BASE + DRM_R128_INDICES, drm_r128_indices_t)
+#define DRM_IOCTL_R128_BLIT DRM_IOW(DRM_COMMAND_BASE + DRM_R128_BLIT, drm_r128_blit_t)
+#define DRM_IOCTL_R128_DEPTH DRM_IOW(DRM_COMMAND_BASE + DRM_R128_DEPTH, drm_r128_depth_t)
+#define DRM_IOCTL_R128_STIPPLE DRM_IOW(DRM_COMMAND_BASE + DRM_R128_STIPPLE, drm_r128_stipple_t)
+#define DRM_IOCTL_R128_INDIRECT DRM_IOWR(DRM_COMMAND_BASE + DRM_R128_INDIRECT, drm_r128_indirect_t)
+#define DRM_IOCTL_R128_FULLSCREEN DRM_IOW(DRM_COMMAND_BASE + DRM_R128_FULLSCREEN, drm_r128_fullscreen_t)
+#define DRM_IOCTL_R128_CLEAR2 DRM_IOW(DRM_COMMAND_BASE + DRM_R128_CLEAR2, drm_r128_clear2_t)
+#define DRM_IOCTL_R128_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_R128_GETPARAM, drm_r128_getparam_t)
+#define DRM_IOCTL_R128_FLIP DRM_IO(DRM_COMMAND_BASE + DRM_R128_FLIP)
+typedef struct drm_r128_init {
+  enum {
+    R128_INIT_CCE = 0x01,
+    R128_CLEANUP_CCE = 0x02
+  } func;
+  unsigned long sarea_priv_offset;
+  int is_pci;
+  int cce_mode;
+  int cce_secure;
+  int ring_size;
+  int usec_timeout;
+  unsigned int fb_bpp;
+  unsigned int front_offset, front_pitch;
+  unsigned int back_offset, back_pitch;
+  unsigned int depth_bpp;
+  unsigned int depth_offset, depth_pitch;
+  unsigned int span_offset;
+  unsigned long fb_offset;
+  unsigned long mmio_offset;
+  unsigned long ring_offset;
+  unsigned long ring_rptr_offset;
+  unsigned long buffers_offset;
+  unsigned long agp_textures_offset;
+} drm_r128_init_t;
+typedef struct drm_r128_cce_stop {
+  int flush;
+  int idle;
+} drm_r128_cce_stop_t;
+typedef struct drm_r128_clear {
+  unsigned int flags;
+  unsigned int clear_color;
+  unsigned int clear_depth;
+  unsigned int color_mask;
+  unsigned int depth_mask;
+} drm_r128_clear_t;
+typedef struct drm_r128_vertex {
+  int prim;
+  int idx;
+  int count;
+  int discard;
+} drm_r128_vertex_t;
+typedef struct drm_r128_indices {
+  int prim;
+  int idx;
+  int start;
+  int end;
+  int discard;
+} drm_r128_indices_t;
+typedef struct drm_r128_blit {
+  int idx;
+  int pitch;
+  int offset;
+  int format;
+  unsigned short x, y;
+  unsigned short width, height;
+} drm_r128_blit_t;
+typedef struct drm_r128_depth {
+  enum {
+    R128_WRITE_SPAN = 0x01,
+    R128_WRITE_PIXELS = 0x02,
+    R128_READ_SPAN = 0x03,
+    R128_READ_PIXELS = 0x04
+  } func;
+  int n;
+  int __user * x;
+  int __user * y;
+  unsigned int __user * buffer;
+  unsigned char __user * mask;
+} drm_r128_depth_t;
+typedef struct drm_r128_stipple {
+  unsigned int __user * mask;
+} drm_r128_stipple_t;
+typedef struct drm_r128_indirect {
+  int idx;
+  int start;
+  int end;
+  int discard;
+} drm_r128_indirect_t;
+typedef struct drm_r128_fullscreen {
+  enum {
+    R128_INIT_FULLSCREEN = 0x01,
+    R128_CLEANUP_FULLSCREEN = 0x02
+  } func;
+} drm_r128_fullscreen_t;
+#define R128_PARAM_IRQ_NR 1
+typedef struct drm_r128_getparam {
+  int param;
+  void __user * value;
+} drm_r128_getparam_t;
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/radeon_drm.h b/x86_64-linux-musl/include/drm/radeon_drm.h
new file mode 100644
index 0000000..9dc69ad
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/radeon_drm.h
@@ -0,0 +1,807 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __RADEON_DRM_H__
+#define __RADEON_DRM_H__
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef __RADEON_SAREA_DEFINES__
+#define __RADEON_SAREA_DEFINES__
+#define RADEON_UPLOAD_CONTEXT 0x00000001
+#define RADEON_UPLOAD_VERTFMT 0x00000002
+#define RADEON_UPLOAD_LINE 0x00000004
+#define RADEON_UPLOAD_BUMPMAP 0x00000008
+#define RADEON_UPLOAD_MASKS 0x00000010
+#define RADEON_UPLOAD_VIEWPORT 0x00000020
+#define RADEON_UPLOAD_SETUP 0x00000040
+#define RADEON_UPLOAD_TCL 0x00000080
+#define RADEON_UPLOAD_MISC 0x00000100
+#define RADEON_UPLOAD_TEX0 0x00000200
+#define RADEON_UPLOAD_TEX1 0x00000400
+#define RADEON_UPLOAD_TEX2 0x00000800
+#define RADEON_UPLOAD_TEX0IMAGES 0x00001000
+#define RADEON_UPLOAD_TEX1IMAGES 0x00002000
+#define RADEON_UPLOAD_TEX2IMAGES 0x00004000
+#define RADEON_UPLOAD_CLIPRECTS 0x00008000
+#define RADEON_REQUIRE_QUIESCENCE 0x00010000
+#define RADEON_UPLOAD_ZBIAS 0x00020000
+#define RADEON_UPLOAD_ALL 0x003effff
+#define RADEON_UPLOAD_CONTEXT_ALL 0x003e01ff
+#define RADEON_EMIT_PP_MISC 0
+#define RADEON_EMIT_PP_CNTL 1
+#define RADEON_EMIT_RB3D_COLORPITCH 2
+#define RADEON_EMIT_RE_LINE_PATTERN 3
+#define RADEON_EMIT_SE_LINE_WIDTH 4
+#define RADEON_EMIT_PP_LUM_MATRIX 5
+#define RADEON_EMIT_PP_ROT_MATRIX_0 6
+#define RADEON_EMIT_RB3D_STENCILREFMASK 7
+#define RADEON_EMIT_SE_VPORT_XSCALE 8
+#define RADEON_EMIT_SE_CNTL 9
+#define RADEON_EMIT_SE_CNTL_STATUS 10
+#define RADEON_EMIT_RE_MISC 11
+#define RADEON_EMIT_PP_TXFILTER_0 12
+#define RADEON_EMIT_PP_BORDER_COLOR_0 13
+#define RADEON_EMIT_PP_TXFILTER_1 14
+#define RADEON_EMIT_PP_BORDER_COLOR_1 15
+#define RADEON_EMIT_PP_TXFILTER_2 16
+#define RADEON_EMIT_PP_BORDER_COLOR_2 17
+#define RADEON_EMIT_SE_ZBIAS_FACTOR 18
+#define RADEON_EMIT_SE_TCL_OUTPUT_VTX_FMT 19
+#define RADEON_EMIT_SE_TCL_MATERIAL_EMMISSIVE_RED 20
+#define R200_EMIT_PP_TXCBLEND_0 21
+#define R200_EMIT_PP_TXCBLEND_1 22
+#define R200_EMIT_PP_TXCBLEND_2 23
+#define R200_EMIT_PP_TXCBLEND_3 24
+#define R200_EMIT_PP_TXCBLEND_4 25
+#define R200_EMIT_PP_TXCBLEND_5 26
+#define R200_EMIT_PP_TXCBLEND_6 27
+#define R200_EMIT_PP_TXCBLEND_7 28
+#define R200_EMIT_TCL_LIGHT_MODEL_CTL_0 29
+#define R200_EMIT_TFACTOR_0 30
+#define R200_EMIT_VTX_FMT_0 31
+#define R200_EMIT_VAP_CTL 32
+#define R200_EMIT_MATRIX_SELECT_0 33
+#define R200_EMIT_TEX_PROC_CTL_2 34
+#define R200_EMIT_TCL_UCP_VERT_BLEND_CTL 35
+#define R200_EMIT_PP_TXFILTER_0 36
+#define R200_EMIT_PP_TXFILTER_1 37
+#define R200_EMIT_PP_TXFILTER_2 38
+#define R200_EMIT_PP_TXFILTER_3 39
+#define R200_EMIT_PP_TXFILTER_4 40
+#define R200_EMIT_PP_TXFILTER_5 41
+#define R200_EMIT_PP_TXOFFSET_0 42
+#define R200_EMIT_PP_TXOFFSET_1 43
+#define R200_EMIT_PP_TXOFFSET_2 44
+#define R200_EMIT_PP_TXOFFSET_3 45
+#define R200_EMIT_PP_TXOFFSET_4 46
+#define R200_EMIT_PP_TXOFFSET_5 47
+#define R200_EMIT_VTE_CNTL 48
+#define R200_EMIT_OUTPUT_VTX_COMP_SEL 49
+#define R200_EMIT_PP_TAM_DEBUG3 50
+#define R200_EMIT_PP_CNTL_X 51
+#define R200_EMIT_RB3D_DEPTHXY_OFFSET 52
+#define R200_EMIT_RE_AUX_SCISSOR_CNTL 53
+#define R200_EMIT_RE_SCISSOR_TL_0 54
+#define R200_EMIT_RE_SCISSOR_TL_1 55
+#define R200_EMIT_RE_SCISSOR_TL_2 56
+#define R200_EMIT_SE_VAP_CNTL_STATUS 57
+#define R200_EMIT_SE_VTX_STATE_CNTL 58
+#define R200_EMIT_RE_POINTSIZE 59
+#define R200_EMIT_TCL_INPUT_VTX_VECTOR_ADDR_0 60
+#define R200_EMIT_PP_CUBIC_FACES_0 61
+#define R200_EMIT_PP_CUBIC_OFFSETS_0 62
+#define R200_EMIT_PP_CUBIC_FACES_1 63
+#define R200_EMIT_PP_CUBIC_OFFSETS_1 64
+#define R200_EMIT_PP_CUBIC_FACES_2 65
+#define R200_EMIT_PP_CUBIC_OFFSETS_2 66
+#define R200_EMIT_PP_CUBIC_FACES_3 67
+#define R200_EMIT_PP_CUBIC_OFFSETS_3 68
+#define R200_EMIT_PP_CUBIC_FACES_4 69
+#define R200_EMIT_PP_CUBIC_OFFSETS_4 70
+#define R200_EMIT_PP_CUBIC_FACES_5 71
+#define R200_EMIT_PP_CUBIC_OFFSETS_5 72
+#define RADEON_EMIT_PP_TEX_SIZE_0 73
+#define RADEON_EMIT_PP_TEX_SIZE_1 74
+#define RADEON_EMIT_PP_TEX_SIZE_2 75
+#define R200_EMIT_RB3D_BLENDCOLOR 76
+#define R200_EMIT_TCL_POINT_SPRITE_CNTL 77
+#define RADEON_EMIT_PP_CUBIC_FACES_0 78
+#define RADEON_EMIT_PP_CUBIC_OFFSETS_T0 79
+#define RADEON_EMIT_PP_CUBIC_FACES_1 80
+#define RADEON_EMIT_PP_CUBIC_OFFSETS_T1 81
+#define RADEON_EMIT_PP_CUBIC_FACES_2 82
+#define RADEON_EMIT_PP_CUBIC_OFFSETS_T2 83
+#define R200_EMIT_PP_TRI_PERF_CNTL 84
+#define R200_EMIT_PP_AFS_0 85
+#define R200_EMIT_PP_AFS_1 86
+#define R200_EMIT_ATF_TFACTOR 87
+#define R200_EMIT_PP_TXCTLALL_0 88
+#define R200_EMIT_PP_TXCTLALL_1 89
+#define R200_EMIT_PP_TXCTLALL_2 90
+#define R200_EMIT_PP_TXCTLALL_3 91
+#define R200_EMIT_PP_TXCTLALL_4 92
+#define R200_EMIT_PP_TXCTLALL_5 93
+#define R200_EMIT_VAP_PVS_CNTL 94
+#define RADEON_MAX_STATE_PACKETS 95
+#define RADEON_CMD_PACKET 1
+#define RADEON_CMD_SCALARS 2
+#define RADEON_CMD_VECTORS 3
+#define RADEON_CMD_DMA_DISCARD 4
+#define RADEON_CMD_PACKET3 5
+#define RADEON_CMD_PACKET3_CLIP 6
+#define RADEON_CMD_SCALARS2 7
+#define RADEON_CMD_WAIT 8
+#define RADEON_CMD_VECLINEAR 9
+typedef union {
+  int i;
+  struct {
+    unsigned char cmd_type, pad0, pad1, pad2;
+  } header;
+  struct {
+    unsigned char cmd_type, packet_id, pad0, pad1;
+  } packet;
+  struct {
+    unsigned char cmd_type, offset, stride, count;
+  } scalars;
+  struct {
+    unsigned char cmd_type, offset, stride, count;
+  } vectors;
+  struct {
+    unsigned char cmd_type, addr_lo, addr_hi, count;
+  } veclinear;
+  struct {
+    unsigned char cmd_type, buf_idx, pad0, pad1;
+  } dma;
+  struct {
+    unsigned char cmd_type, flags, pad0, pad1;
+  } wait;
+} drm_radeon_cmd_header_t;
+#define RADEON_WAIT_2D 0x1
+#define RADEON_WAIT_3D 0x2
+#define R300_CMD_PACKET3_CLEAR 0
+#define R300_CMD_PACKET3_RAW 1
+#define R300_CMD_PACKET0 1
+#define R300_CMD_VPU 2
+#define R300_CMD_PACKET3 3
+#define R300_CMD_END3D 4
+#define R300_CMD_CP_DELAY 5
+#define R300_CMD_DMA_DISCARD 6
+#define R300_CMD_WAIT 7
+#define R300_WAIT_2D 0x1
+#define R300_WAIT_3D 0x2
+#define R300_WAIT_2D_CLEAN 0x3
+#define R300_WAIT_3D_CLEAN 0x4
+#define R300_NEW_WAIT_2D_3D 0x3
+#define R300_NEW_WAIT_2D_2D_CLEAN 0x4
+#define R300_NEW_WAIT_3D_3D_CLEAN 0x6
+#define R300_NEW_WAIT_2D_2D_CLEAN_3D_3D_CLEAN 0x8
+#define R300_CMD_SCRATCH 8
+#define R300_CMD_R500FP 9
+typedef union {
+  unsigned int u;
+  struct {
+    unsigned char cmd_type, pad0, pad1, pad2;
+  } header;
+  struct {
+    unsigned char cmd_type, count, reglo, reghi;
+  } packet0;
+  struct {
+    unsigned char cmd_type, count, adrlo, adrhi;
+  } vpu;
+  struct {
+    unsigned char cmd_type, packet, pad0, pad1;
+  } packet3;
+  struct {
+    unsigned char cmd_type, packet;
+    unsigned short count;
+  } delay;
+  struct {
+    unsigned char cmd_type, buf_idx, pad0, pad1;
+  } dma;
+  struct {
+    unsigned char cmd_type, flags, pad0, pad1;
+  } wait;
+  struct {
+    unsigned char cmd_type, reg, n_bufs, flags;
+  } scratch;
+  struct {
+    unsigned char cmd_type, count, adrlo, adrhi_flags;
+  } r500fp;
+} drm_r300_cmd_header_t;
+#define RADEON_FRONT 0x1
+#define RADEON_BACK 0x2
+#define RADEON_DEPTH 0x4
+#define RADEON_STENCIL 0x8
+#define RADEON_CLEAR_FASTZ 0x80000000
+#define RADEON_USE_HIERZ 0x40000000
+#define RADEON_USE_COMP_ZBUF 0x20000000
+#define R500FP_CONSTANT_TYPE (1 << 1)
+#define R500FP_CONSTANT_CLAMP (1 << 2)
+#define RADEON_POINTS 0x1
+#define RADEON_LINES 0x2
+#define RADEON_LINE_STRIP 0x3
+#define RADEON_TRIANGLES 0x4
+#define RADEON_TRIANGLE_FAN 0x5
+#define RADEON_TRIANGLE_STRIP 0x6
+#define RADEON_BUFFER_SIZE 65536
+#define RADEON_INDEX_PRIM_OFFSET 20
+#define RADEON_SCRATCH_REG_OFFSET 32
+#define R600_SCRATCH_REG_OFFSET 256
+#define RADEON_NR_SAREA_CLIPRECTS 12
+#define RADEON_LOCAL_TEX_HEAP 0
+#define RADEON_GART_TEX_HEAP 1
+#define RADEON_NR_TEX_HEAPS 2
+#define RADEON_NR_TEX_REGIONS 64
+#define RADEON_LOG_TEX_GRANULARITY 16
+#define RADEON_MAX_TEXTURE_LEVELS 12
+#define RADEON_MAX_TEXTURE_UNITS 3
+#define RADEON_MAX_SURFACES 8
+#define RADEON_OFFSET_SHIFT 10
+#define RADEON_OFFSET_ALIGN (1 << RADEON_OFFSET_SHIFT)
+#define RADEON_OFFSET_MASK (RADEON_OFFSET_ALIGN - 1)
+#endif
+typedef struct {
+  unsigned int red;
+  unsigned int green;
+  unsigned int blue;
+  unsigned int alpha;
+} radeon_color_regs_t;
+typedef struct {
+  unsigned int pp_misc;
+  unsigned int pp_fog_color;
+  unsigned int re_solid_color;
+  unsigned int rb3d_blendcntl;
+  unsigned int rb3d_depthoffset;
+  unsigned int rb3d_depthpitch;
+  unsigned int rb3d_zstencilcntl;
+  unsigned int pp_cntl;
+  unsigned int rb3d_cntl;
+  unsigned int rb3d_coloroffset;
+  unsigned int re_width_height;
+  unsigned int rb3d_colorpitch;
+  unsigned int se_cntl;
+  unsigned int se_coord_fmt;
+  unsigned int re_line_pattern;
+  unsigned int re_line_state;
+  unsigned int se_line_width;
+  unsigned int pp_lum_matrix;
+  unsigned int pp_rot_matrix_0;
+  unsigned int pp_rot_matrix_1;
+  unsigned int rb3d_stencilrefmask;
+  unsigned int rb3d_ropcntl;
+  unsigned int rb3d_planemask;
+  unsigned int se_vport_xscale;
+  unsigned int se_vport_xoffset;
+  unsigned int se_vport_yscale;
+  unsigned int se_vport_yoffset;
+  unsigned int se_vport_zscale;
+  unsigned int se_vport_zoffset;
+  unsigned int se_cntl_status;
+  unsigned int re_top_left;
+  unsigned int re_misc;
+} drm_radeon_context_regs_t;
+typedef struct {
+  unsigned int se_zbias_factor;
+  unsigned int se_zbias_constant;
+} drm_radeon_context2_regs_t;
+typedef struct {
+  unsigned int pp_txfilter;
+  unsigned int pp_txformat;
+  unsigned int pp_txoffset;
+  unsigned int pp_txcblend;
+  unsigned int pp_txablend;
+  unsigned int pp_tfactor;
+  unsigned int pp_border_color;
+} drm_radeon_texture_regs_t;
+typedef struct {
+  unsigned int start;
+  unsigned int finish;
+  unsigned int prim : 8;
+  unsigned int stateidx : 8;
+  unsigned int numverts : 16;
+  unsigned int vc_format;
+} drm_radeon_prim_t;
+typedef struct {
+  drm_radeon_context_regs_t context;
+  drm_radeon_texture_regs_t tex[RADEON_MAX_TEXTURE_UNITS];
+  drm_radeon_context2_regs_t context2;
+  unsigned int dirty;
+} drm_radeon_state_t;
+typedef struct {
+  drm_radeon_context_regs_t context_state;
+  drm_radeon_texture_regs_t tex_state[RADEON_MAX_TEXTURE_UNITS];
+  unsigned int dirty;
+  unsigned int vertsize;
+  unsigned int vc_format;
+  struct drm_clip_rect boxes[RADEON_NR_SAREA_CLIPRECTS];
+  unsigned int nbox;
+  unsigned int last_frame;
+  unsigned int last_dispatch;
+  unsigned int last_clear;
+  struct drm_tex_region tex_list[RADEON_NR_TEX_HEAPS][RADEON_NR_TEX_REGIONS + 1];
+  unsigned int tex_age[RADEON_NR_TEX_HEAPS];
+  int ctx_owner;
+  int pfState;
+  int pfCurrentPage;
+  int crtc2_base;
+  int tiling_enabled;
+} drm_radeon_sarea_t;
+#define DRM_RADEON_CP_INIT 0x00
+#define DRM_RADEON_CP_START 0x01
+#define DRM_RADEON_CP_STOP 0x02
+#define DRM_RADEON_CP_RESET 0x03
+#define DRM_RADEON_CP_IDLE 0x04
+#define DRM_RADEON_RESET 0x05
+#define DRM_RADEON_FULLSCREEN 0x06
+#define DRM_RADEON_SWAP 0x07
+#define DRM_RADEON_CLEAR 0x08
+#define DRM_RADEON_VERTEX 0x09
+#define DRM_RADEON_INDICES 0x0A
+#define DRM_RADEON_NOT_USED
+#define DRM_RADEON_STIPPLE 0x0C
+#define DRM_RADEON_INDIRECT 0x0D
+#define DRM_RADEON_TEXTURE 0x0E
+#define DRM_RADEON_VERTEX2 0x0F
+#define DRM_RADEON_CMDBUF 0x10
+#define DRM_RADEON_GETPARAM 0x11
+#define DRM_RADEON_FLIP 0x12
+#define DRM_RADEON_ALLOC 0x13
+#define DRM_RADEON_FREE 0x14
+#define DRM_RADEON_INIT_HEAP 0x15
+#define DRM_RADEON_IRQ_EMIT 0x16
+#define DRM_RADEON_IRQ_WAIT 0x17
+#define DRM_RADEON_CP_RESUME 0x18
+#define DRM_RADEON_SETPARAM 0x19
+#define DRM_RADEON_SURF_ALLOC 0x1a
+#define DRM_RADEON_SURF_FREE 0x1b
+#define DRM_RADEON_GEM_INFO 0x1c
+#define DRM_RADEON_GEM_CREATE 0x1d
+#define DRM_RADEON_GEM_MMAP 0x1e
+#define DRM_RADEON_GEM_PREAD 0x21
+#define DRM_RADEON_GEM_PWRITE 0x22
+#define DRM_RADEON_GEM_SET_DOMAIN 0x23
+#define DRM_RADEON_GEM_WAIT_IDLE 0x24
+#define DRM_RADEON_CS 0x26
+#define DRM_RADEON_INFO 0x27
+#define DRM_RADEON_GEM_SET_TILING 0x28
+#define DRM_RADEON_GEM_GET_TILING 0x29
+#define DRM_RADEON_GEM_BUSY 0x2a
+#define DRM_RADEON_GEM_VA 0x2b
+#define DRM_RADEON_GEM_OP 0x2c
+#define DRM_RADEON_GEM_USERPTR 0x2d
+#define DRM_IOCTL_RADEON_CP_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_CP_INIT, drm_radeon_init_t)
+#define DRM_IOCTL_RADEON_CP_START DRM_IO(DRM_COMMAND_BASE + DRM_RADEON_CP_START)
+#define DRM_IOCTL_RADEON_CP_STOP DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_CP_STOP, drm_radeon_cp_stop_t)
+#define DRM_IOCTL_RADEON_CP_RESET DRM_IO(DRM_COMMAND_BASE + DRM_RADEON_CP_RESET)
+#define DRM_IOCTL_RADEON_CP_IDLE DRM_IO(DRM_COMMAND_BASE + DRM_RADEON_CP_IDLE)
+#define DRM_IOCTL_RADEON_RESET DRM_IO(DRM_COMMAND_BASE + DRM_RADEON_RESET)
+#define DRM_IOCTL_RADEON_FULLSCREEN DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_FULLSCREEN, drm_radeon_fullscreen_t)
+#define DRM_IOCTL_RADEON_SWAP DRM_IO(DRM_COMMAND_BASE + DRM_RADEON_SWAP)
+#define DRM_IOCTL_RADEON_CLEAR DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_CLEAR, drm_radeon_clear_t)
+#define DRM_IOCTL_RADEON_VERTEX DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_VERTEX, drm_radeon_vertex_t)
+#define DRM_IOCTL_RADEON_INDICES DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_INDICES, drm_radeon_indices_t)
+#define DRM_IOCTL_RADEON_STIPPLE DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_STIPPLE, drm_radeon_stipple_t)
+#define DRM_IOCTL_RADEON_INDIRECT DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_INDIRECT, drm_radeon_indirect_t)
+#define DRM_IOCTL_RADEON_TEXTURE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_TEXTURE, drm_radeon_texture_t)
+#define DRM_IOCTL_RADEON_VERTEX2 DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_VERTEX2, drm_radeon_vertex2_t)
+#define DRM_IOCTL_RADEON_CMDBUF DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_CMDBUF, drm_radeon_cmd_buffer_t)
+#define DRM_IOCTL_RADEON_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GETPARAM, drm_radeon_getparam_t)
+#define DRM_IOCTL_RADEON_FLIP DRM_IO(DRM_COMMAND_BASE + DRM_RADEON_FLIP)
+#define DRM_IOCTL_RADEON_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_ALLOC, drm_radeon_mem_alloc_t)
+#define DRM_IOCTL_RADEON_FREE DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_FREE, drm_radeon_mem_free_t)
+#define DRM_IOCTL_RADEON_INIT_HEAP DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_INIT_HEAP, drm_radeon_mem_init_heap_t)
+#define DRM_IOCTL_RADEON_IRQ_EMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_IRQ_EMIT, drm_radeon_irq_emit_t)
+#define DRM_IOCTL_RADEON_IRQ_WAIT DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_IRQ_WAIT, drm_radeon_irq_wait_t)
+#define DRM_IOCTL_RADEON_CP_RESUME DRM_IO(DRM_COMMAND_BASE + DRM_RADEON_CP_RESUME)
+#define DRM_IOCTL_RADEON_SETPARAM DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_SETPARAM, drm_radeon_setparam_t)
+#define DRM_IOCTL_RADEON_SURF_ALLOC DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_SURF_ALLOC, drm_radeon_surface_alloc_t)
+#define DRM_IOCTL_RADEON_SURF_FREE DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_SURF_FREE, drm_radeon_surface_free_t)
+#define DRM_IOCTL_RADEON_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_INFO, struct drm_radeon_gem_info)
+#define DRM_IOCTL_RADEON_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_CREATE, struct drm_radeon_gem_create)
+#define DRM_IOCTL_RADEON_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_MMAP, struct drm_radeon_gem_mmap)
+#define DRM_IOCTL_RADEON_GEM_PREAD DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PREAD, struct drm_radeon_gem_pread)
+#define DRM_IOCTL_RADEON_GEM_PWRITE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PWRITE, struct drm_radeon_gem_pwrite)
+#define DRM_IOCTL_RADEON_GEM_SET_DOMAIN DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_SET_DOMAIN, struct drm_radeon_gem_set_domain)
+#define DRM_IOCTL_RADEON_GEM_WAIT_IDLE DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_GEM_WAIT_IDLE, struct drm_radeon_gem_wait_idle)
+#define DRM_IOCTL_RADEON_CS DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_CS, struct drm_radeon_cs)
+#define DRM_IOCTL_RADEON_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_INFO, struct drm_radeon_info)
+#define DRM_IOCTL_RADEON_GEM_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_SET_TILING, struct drm_radeon_gem_set_tiling)
+#define DRM_IOCTL_RADEON_GEM_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_GET_TILING, struct drm_radeon_gem_get_tiling)
+#define DRM_IOCTL_RADEON_GEM_BUSY DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_BUSY, struct drm_radeon_gem_busy)
+#define DRM_IOCTL_RADEON_GEM_VA DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_VA, struct drm_radeon_gem_va)
+#define DRM_IOCTL_RADEON_GEM_OP DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_OP, struct drm_radeon_gem_op)
+#define DRM_IOCTL_RADEON_GEM_USERPTR DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_USERPTR, struct drm_radeon_gem_userptr)
+typedef struct drm_radeon_init {
+  enum {
+    RADEON_INIT_CP = 0x01,
+    RADEON_CLEANUP_CP = 0x02,
+    RADEON_INIT_R200_CP = 0x03,
+    RADEON_INIT_R300_CP = 0x04,
+    RADEON_INIT_R600_CP = 0x05
+  } func;
+  unsigned long sarea_priv_offset;
+  int is_pci;
+  int cp_mode;
+  int gart_size;
+  int ring_size;
+  int usec_timeout;
+  unsigned int fb_bpp;
+  unsigned int front_offset, front_pitch;
+  unsigned int back_offset, back_pitch;
+  unsigned int depth_bpp;
+  unsigned int depth_offset, depth_pitch;
+  unsigned long fb_offset;
+  unsigned long mmio_offset;
+  unsigned long ring_offset;
+  unsigned long ring_rptr_offset;
+  unsigned long buffers_offset;
+  unsigned long gart_textures_offset;
+} drm_radeon_init_t;
+typedef struct drm_radeon_cp_stop {
+  int flush;
+  int idle;
+} drm_radeon_cp_stop_t;
+typedef struct drm_radeon_fullscreen {
+  enum {
+    RADEON_INIT_FULLSCREEN = 0x01,
+    RADEON_CLEANUP_FULLSCREEN = 0x02
+  } func;
+} drm_radeon_fullscreen_t;
+#define CLEAR_X1 0
+#define CLEAR_Y1 1
+#define CLEAR_X2 2
+#define CLEAR_Y2 3
+#define CLEAR_DEPTH 4
+typedef union drm_radeon_clear_rect {
+  float f[5];
+  unsigned int ui[5];
+} drm_radeon_clear_rect_t;
+typedef struct drm_radeon_clear {
+  unsigned int flags;
+  unsigned int clear_color;
+  unsigned int clear_depth;
+  unsigned int color_mask;
+  unsigned int depth_mask;
+  drm_radeon_clear_rect_t __user * depth_boxes;
+} drm_radeon_clear_t;
+typedef struct drm_radeon_vertex {
+  int prim;
+  int idx;
+  int count;
+  int discard;
+} drm_radeon_vertex_t;
+typedef struct drm_radeon_indices {
+  int prim;
+  int idx;
+  int start;
+  int end;
+  int discard;
+} drm_radeon_indices_t;
+typedef struct drm_radeon_vertex2 {
+  int idx;
+  int discard;
+  int nr_states;
+  drm_radeon_state_t __user * state;
+  int nr_prims;
+  drm_radeon_prim_t __user * prim;
+} drm_radeon_vertex2_t;
+typedef struct drm_radeon_cmd_buffer {
+  int bufsz;
+  char __user * buf;
+  int nbox;
+  struct drm_clip_rect __user * boxes;
+} drm_radeon_cmd_buffer_t;
+typedef struct drm_radeon_tex_image {
+  unsigned int x, y;
+  unsigned int width, height;
+  const void __user * data;
+} drm_radeon_tex_image_t;
+typedef struct drm_radeon_texture {
+  unsigned int offset;
+  int pitch;
+  int format;
+  int width;
+  int height;
+  drm_radeon_tex_image_t __user * image;
+} drm_radeon_texture_t;
+typedef struct drm_radeon_stipple {
+  unsigned int __user * mask;
+} drm_radeon_stipple_t;
+typedef struct drm_radeon_indirect {
+  int idx;
+  int start;
+  int end;
+  int discard;
+} drm_radeon_indirect_t;
+#define RADEON_CARD_PCI 0
+#define RADEON_CARD_AGP 1
+#define RADEON_CARD_PCIE 2
+#define RADEON_PARAM_GART_BUFFER_OFFSET 1
+#define RADEON_PARAM_LAST_FRAME 2
+#define RADEON_PARAM_LAST_DISPATCH 3
+#define RADEON_PARAM_LAST_CLEAR 4
+#define RADEON_PARAM_IRQ_NR 5
+#define RADEON_PARAM_GART_BASE 6
+#define RADEON_PARAM_REGISTER_HANDLE 7
+#define RADEON_PARAM_STATUS_HANDLE 8
+#define RADEON_PARAM_SAREA_HANDLE 9
+#define RADEON_PARAM_GART_TEX_HANDLE 10
+#define RADEON_PARAM_SCRATCH_OFFSET 11
+#define RADEON_PARAM_CARD_TYPE 12
+#define RADEON_PARAM_VBLANK_CRTC 13
+#define RADEON_PARAM_FB_LOCATION 14
+#define RADEON_PARAM_NUM_GB_PIPES 15
+#define RADEON_PARAM_DEVICE_ID 16
+#define RADEON_PARAM_NUM_Z_PIPES 17
+typedef struct drm_radeon_getparam {
+  int param;
+  void __user * value;
+} drm_radeon_getparam_t;
+#define RADEON_MEM_REGION_GART 1
+#define RADEON_MEM_REGION_FB 2
+typedef struct drm_radeon_mem_alloc {
+  int region;
+  int alignment;
+  int size;
+  int __user * region_offset;
+} drm_radeon_mem_alloc_t;
+typedef struct drm_radeon_mem_free {
+  int region;
+  int region_offset;
+} drm_radeon_mem_free_t;
+typedef struct drm_radeon_mem_init_heap {
+  int region;
+  int size;
+  int start;
+} drm_radeon_mem_init_heap_t;
+typedef struct drm_radeon_irq_emit {
+  int __user * irq_seq;
+} drm_radeon_irq_emit_t;
+typedef struct drm_radeon_irq_wait {
+  int irq_seq;
+} drm_radeon_irq_wait_t;
+typedef struct drm_radeon_setparam {
+  unsigned int param;
+  __s64 value;
+} drm_radeon_setparam_t;
+#define RADEON_SETPARAM_FB_LOCATION 1
+#define RADEON_SETPARAM_SWITCH_TILING 2
+#define RADEON_SETPARAM_PCIGART_LOCATION 3
+#define RADEON_SETPARAM_NEW_MEMMAP 4
+#define RADEON_SETPARAM_PCIGART_TABLE_SIZE 5
+#define RADEON_SETPARAM_VBLANK_CRTC 6
+typedef struct drm_radeon_surface_alloc {
+  unsigned int address;
+  unsigned int size;
+  unsigned int flags;
+} drm_radeon_surface_alloc_t;
+typedef struct drm_radeon_surface_free {
+  unsigned int address;
+} drm_radeon_surface_free_t;
+#define DRM_RADEON_VBLANK_CRTC1 1
+#define DRM_RADEON_VBLANK_CRTC2 2
+#define RADEON_GEM_DOMAIN_CPU 0x1
+#define RADEON_GEM_DOMAIN_GTT 0x2
+#define RADEON_GEM_DOMAIN_VRAM 0x4
+struct drm_radeon_gem_info {
+  __u64 gart_size;
+  __u64 vram_size;
+  __u64 vram_visible;
+};
+#define RADEON_GEM_NO_BACKING_STORE (1 << 0)
+#define RADEON_GEM_GTT_UC (1 << 1)
+#define RADEON_GEM_GTT_WC (1 << 2)
+#define RADEON_GEM_CPU_ACCESS (1 << 3)
+#define RADEON_GEM_NO_CPU_ACCESS (1 << 4)
+struct drm_radeon_gem_create {
+  __u64 size;
+  __u64 alignment;
+  __u32 handle;
+  __u32 initial_domain;
+  __u32 flags;
+};
+#define RADEON_GEM_USERPTR_READONLY (1 << 0)
+#define RADEON_GEM_USERPTR_ANONONLY (1 << 1)
+#define RADEON_GEM_USERPTR_VALIDATE (1 << 2)
+#define RADEON_GEM_USERPTR_REGISTER (1 << 3)
+struct drm_radeon_gem_userptr {
+  __u64 addr;
+  __u64 size;
+  __u32 flags;
+  __u32 handle;
+};
+#define RADEON_TILING_MACRO 0x1
+#define RADEON_TILING_MICRO 0x2
+#define RADEON_TILING_SWAP_16BIT 0x4
+#define RADEON_TILING_SWAP_32BIT 0x8
+#define RADEON_TILING_SURFACE 0x10
+#define RADEON_TILING_MICRO_SQUARE 0x20
+#define RADEON_TILING_EG_BANKW_SHIFT 8
+#define RADEON_TILING_EG_BANKW_MASK 0xf
+#define RADEON_TILING_EG_BANKH_SHIFT 12
+#define RADEON_TILING_EG_BANKH_MASK 0xf
+#define RADEON_TILING_EG_MACRO_TILE_ASPECT_SHIFT 16
+#define RADEON_TILING_EG_MACRO_TILE_ASPECT_MASK 0xf
+#define RADEON_TILING_EG_TILE_SPLIT_SHIFT 24
+#define RADEON_TILING_EG_TILE_SPLIT_MASK 0xf
+#define RADEON_TILING_EG_STENCIL_TILE_SPLIT_SHIFT 28
+#define RADEON_TILING_EG_STENCIL_TILE_SPLIT_MASK 0xf
+struct drm_radeon_gem_set_tiling {
+  __u32 handle;
+  __u32 tiling_flags;
+  __u32 pitch;
+};
+struct drm_radeon_gem_get_tiling {
+  __u32 handle;
+  __u32 tiling_flags;
+  __u32 pitch;
+};
+struct drm_radeon_gem_mmap {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+  __u64 size;
+  __u64 addr_ptr;
+};
+struct drm_radeon_gem_set_domain {
+  __u32 handle;
+  __u32 read_domains;
+  __u32 write_domain;
+};
+struct drm_radeon_gem_wait_idle {
+  __u32 handle;
+  __u32 pad;
+};
+struct drm_radeon_gem_busy {
+  __u32 handle;
+  __u32 domain;
+};
+struct drm_radeon_gem_pread {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+  __u64 size;
+  __u64 data_ptr;
+};
+struct drm_radeon_gem_pwrite {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+  __u64 size;
+  __u64 data_ptr;
+};
+struct drm_radeon_gem_op {
+  __u32 handle;
+  __u32 op;
+  __u64 value;
+};
+#define RADEON_GEM_OP_GET_INITIAL_DOMAIN 0
+#define RADEON_GEM_OP_SET_INITIAL_DOMAIN 1
+#define RADEON_VA_MAP 1
+#define RADEON_VA_UNMAP 2
+#define RADEON_VA_RESULT_OK 0
+#define RADEON_VA_RESULT_ERROR 1
+#define RADEON_VA_RESULT_VA_EXIST 2
+#define RADEON_VM_PAGE_VALID (1 << 0)
+#define RADEON_VM_PAGE_READABLE (1 << 1)
+#define RADEON_VM_PAGE_WRITEABLE (1 << 2)
+#define RADEON_VM_PAGE_SYSTEM (1 << 3)
+#define RADEON_VM_PAGE_SNOOPED (1 << 4)
+struct drm_radeon_gem_va {
+  __u32 handle;
+  __u32 operation;
+  __u32 vm_id;
+  __u32 flags;
+  __u64 offset;
+};
+#define RADEON_CHUNK_ID_RELOCS 0x01
+#define RADEON_CHUNK_ID_IB 0x02
+#define RADEON_CHUNK_ID_FLAGS 0x03
+#define RADEON_CHUNK_ID_CONST_IB 0x04
+#define RADEON_CS_KEEP_TILING_FLAGS 0x01
+#define RADEON_CS_USE_VM 0x02
+#define RADEON_CS_END_OF_FRAME 0x04
+#define RADEON_CS_RING_GFX 0
+#define RADEON_CS_RING_COMPUTE 1
+#define RADEON_CS_RING_DMA 2
+#define RADEON_CS_RING_UVD 3
+#define RADEON_CS_RING_VCE 4
+struct drm_radeon_cs_chunk {
+  __u32 chunk_id;
+  __u32 length_dw;
+  __u64 chunk_data;
+};
+#define RADEON_RELOC_PRIO_MASK (0xf << 0)
+struct drm_radeon_cs_reloc {
+  __u32 handle;
+  __u32 read_domains;
+  __u32 write_domain;
+  __u32 flags;
+};
+struct drm_radeon_cs {
+  __u32 num_chunks;
+  __u32 cs_id;
+  __u64 chunks;
+  __u64 gart_limit;
+  __u64 vram_limit;
+};
+#define RADEON_INFO_DEVICE_ID 0x00
+#define RADEON_INFO_NUM_GB_PIPES 0x01
+#define RADEON_INFO_NUM_Z_PIPES 0x02
+#define RADEON_INFO_ACCEL_WORKING 0x03
+#define RADEON_INFO_CRTC_FROM_ID 0x04
+#define RADEON_INFO_ACCEL_WORKING2 0x05
+#define RADEON_INFO_TILING_CONFIG 0x06
+#define RADEON_INFO_WANT_HYPERZ 0x07
+#define RADEON_INFO_WANT_CMASK 0x08
+#define RADEON_INFO_CLOCK_CRYSTAL_FREQ 0x09
+#define RADEON_INFO_NUM_BACKENDS 0x0a
+#define RADEON_INFO_NUM_TILE_PIPES 0x0b
+#define RADEON_INFO_FUSION_GART_WORKING 0x0c
+#define RADEON_INFO_BACKEND_MAP 0x0d
+#define RADEON_INFO_VA_START 0x0e
+#define RADEON_INFO_IB_VM_MAX_SIZE 0x0f
+#define RADEON_INFO_MAX_PIPES 0x10
+#define RADEON_INFO_TIMESTAMP 0x11
+#define RADEON_INFO_MAX_SE 0x12
+#define RADEON_INFO_MAX_SH_PER_SE 0x13
+#define RADEON_INFO_FASTFB_WORKING 0x14
+#define RADEON_INFO_RING_WORKING 0x15
+#define RADEON_INFO_SI_TILE_MODE_ARRAY 0x16
+#define RADEON_INFO_SI_CP_DMA_COMPUTE 0x17
+#define RADEON_INFO_CIK_MACROTILE_MODE_ARRAY 0x18
+#define RADEON_INFO_SI_BACKEND_ENABLED_MASK 0x19
+#define RADEON_INFO_MAX_SCLK 0x1a
+#define RADEON_INFO_VCE_FW_VERSION 0x1b
+#define RADEON_INFO_VCE_FB_VERSION 0x1c
+#define RADEON_INFO_NUM_BYTES_MOVED 0x1d
+#define RADEON_INFO_VRAM_USAGE 0x1e
+#define RADEON_INFO_GTT_USAGE 0x1f
+#define RADEON_INFO_ACTIVE_CU_COUNT 0x20
+#define RADEON_INFO_CURRENT_GPU_TEMP 0x21
+#define RADEON_INFO_CURRENT_GPU_SCLK 0x22
+#define RADEON_INFO_CURRENT_GPU_MCLK 0x23
+#define RADEON_INFO_READ_REG 0x24
+#define RADEON_INFO_VA_UNMAP_WORKING 0x25
+#define RADEON_INFO_GPU_RESET_COUNTER 0x26
+struct drm_radeon_info {
+  __u32 request;
+  __u32 pad;
+  __u64 value;
+};
+#define SI_TILE_MODE_COLOR_LINEAR_ALIGNED 8
+#define SI_TILE_MODE_COLOR_1D 13
+#define SI_TILE_MODE_COLOR_1D_SCANOUT 9
+#define SI_TILE_MODE_COLOR_2D_8BPP 14
+#define SI_TILE_MODE_COLOR_2D_16BPP 15
+#define SI_TILE_MODE_COLOR_2D_32BPP 16
+#define SI_TILE_MODE_COLOR_2D_64BPP 17
+#define SI_TILE_MODE_COLOR_2D_SCANOUT_16BPP 11
+#define SI_TILE_MODE_COLOR_2D_SCANOUT_32BPP 12
+#define SI_TILE_MODE_DEPTH_STENCIL_1D 4
+#define SI_TILE_MODE_DEPTH_STENCIL_2D 0
+#define SI_TILE_MODE_DEPTH_STENCIL_2D_2AA 3
+#define SI_TILE_MODE_DEPTH_STENCIL_2D_4AA 3
+#define SI_TILE_MODE_DEPTH_STENCIL_2D_8AA 2
+#define CIK_TILE_MODE_DEPTH_STENCIL_1D 5
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/savage_drm.h b/x86_64-linux-musl/include/drm/savage_drm.h
new file mode 100644
index 0000000..ae87d21
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/savage_drm.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 __SAVAGE_DRM_H__
+#define __SAVAGE_DRM_H__
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef __SAVAGE_SAREA_DEFINES__
+#define __SAVAGE_SAREA_DEFINES__
+#define SAVAGE_CARD_HEAP 0
+#define SAVAGE_AGP_HEAP 1
+#define SAVAGE_NR_TEX_HEAPS 2
+#define SAVAGE_NR_TEX_REGIONS 16
+#define SAVAGE_LOG_MIN_TEX_REGION_SIZE 16
+#endif
+typedef struct _drm_savage_sarea {
+  struct drm_tex_region texList[SAVAGE_NR_TEX_HEAPS][SAVAGE_NR_TEX_REGIONS + 1];
+  unsigned int texAge[SAVAGE_NR_TEX_HEAPS];
+  int ctxOwner;
+} drm_savage_sarea_t, * drm_savage_sarea_ptr;
+#define DRM_SAVAGE_BCI_INIT 0x00
+#define DRM_SAVAGE_BCI_CMDBUF 0x01
+#define DRM_SAVAGE_BCI_EVENT_EMIT 0x02
+#define DRM_SAVAGE_BCI_EVENT_WAIT 0x03
+#define DRM_IOCTL_SAVAGE_BCI_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_SAVAGE_BCI_INIT, drm_savage_init_t)
+#define DRM_IOCTL_SAVAGE_BCI_CMDBUF DRM_IOW(DRM_COMMAND_BASE + DRM_SAVAGE_BCI_CMDBUF, drm_savage_cmdbuf_t)
+#define DRM_IOCTL_SAVAGE_BCI_EVENT_EMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_SAVAGE_BCI_EVENT_EMIT, drm_savage_event_emit_t)
+#define DRM_IOCTL_SAVAGE_BCI_EVENT_WAIT DRM_IOW(DRM_COMMAND_BASE + DRM_SAVAGE_BCI_EVENT_WAIT, drm_savage_event_wait_t)
+#define SAVAGE_DMA_PCI 1
+#define SAVAGE_DMA_AGP 3
+typedef struct drm_savage_init {
+  enum {
+    SAVAGE_INIT_BCI = 1,
+    SAVAGE_CLEANUP_BCI = 2
+  } func;
+  unsigned int sarea_priv_offset;
+  unsigned int cob_size;
+  unsigned int bci_threshold_lo, bci_threshold_hi;
+  unsigned int dma_type;
+  unsigned int fb_bpp;
+  unsigned int front_offset, front_pitch;
+  unsigned int back_offset, back_pitch;
+  unsigned int depth_bpp;
+  unsigned int depth_offset, depth_pitch;
+  unsigned int texture_offset;
+  unsigned int texture_size;
+  unsigned long status_offset;
+  unsigned long buffers_offset;
+  unsigned long agp_textures_offset;
+  unsigned long cmd_dma_offset;
+} drm_savage_init_t;
+typedef union drm_savage_cmd_header drm_savage_cmd_header_t;
+typedef struct drm_savage_cmdbuf {
+  drm_savage_cmd_header_t __user * cmd_addr;
+  unsigned int size;
+  unsigned int dma_idx;
+  int discard;
+  unsigned int __user * vb_addr;
+  unsigned int vb_size;
+  unsigned int vb_stride;
+  struct drm_clip_rect __user * box_addr;
+  unsigned int nbox;
+} drm_savage_cmdbuf_t;
+#define SAVAGE_WAIT_2D 0x1
+#define SAVAGE_WAIT_3D 0x2
+#define SAVAGE_WAIT_IRQ 0x4
+typedef struct drm_savage_event {
+  unsigned int count;
+  unsigned int flags;
+} drm_savage_event_emit_t, drm_savage_event_wait_t;
+#define SAVAGE_CMD_STATE 0
+#define SAVAGE_CMD_DMA_PRIM 1
+#define SAVAGE_CMD_VB_PRIM 2
+#define SAVAGE_CMD_DMA_IDX 3
+#define SAVAGE_CMD_VB_IDX 4
+#define SAVAGE_CMD_CLEAR 5
+#define SAVAGE_CMD_SWAP 6
+#define SAVAGE_PRIM_TRILIST 0
+#define SAVAGE_PRIM_TRISTRIP 1
+#define SAVAGE_PRIM_TRIFAN 2
+#define SAVAGE_PRIM_TRILIST_201 3
+#define SAVAGE_SKIP_Z 0x01
+#define SAVAGE_SKIP_W 0x02
+#define SAVAGE_SKIP_C0 0x04
+#define SAVAGE_SKIP_C1 0x08
+#define SAVAGE_SKIP_S0 0x10
+#define SAVAGE_SKIP_T0 0x20
+#define SAVAGE_SKIP_ST0 0x30
+#define SAVAGE_SKIP_S1 0x40
+#define SAVAGE_SKIP_T1 0x80
+#define SAVAGE_SKIP_ST1 0xc0
+#define SAVAGE_SKIP_ALL_S3D 0x3f
+#define SAVAGE_SKIP_ALL_S4 0xff
+#define SAVAGE_FRONT 0x1
+#define SAVAGE_BACK 0x2
+#define SAVAGE_DEPTH 0x4
+union drm_savage_cmd_header {
+  struct {
+    unsigned char cmd;
+    unsigned char pad0;
+    unsigned short pad1;
+    unsigned short pad2;
+    unsigned short pad3;
+  } cmd;
+  struct {
+    unsigned char cmd;
+    unsigned char global;
+    unsigned short count;
+    unsigned short start;
+    unsigned short pad3;
+  } state;
+  struct {
+    unsigned char cmd;
+    unsigned char prim;
+    unsigned short skip;
+    unsigned short count;
+    unsigned short start;
+  } prim;
+  struct {
+    unsigned char cmd;
+    unsigned char prim;
+    unsigned short skip;
+    unsigned short count;
+    unsigned short pad3;
+  } idx;
+  struct {
+    unsigned char cmd;
+    unsigned char pad0;
+    unsigned short pad1;
+    unsigned int flags;
+  } clear0;
+  struct {
+    unsigned int mask;
+    unsigned int value;
+  } clear1;
+};
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/sis_drm.h b/x86_64-linux-musl/include/drm/sis_drm.h
new file mode 100644
index 0000000..1606a85
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/sis_drm.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 __SIS_DRM_H__
+#define __SIS_DRM_H__
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define NOT_USED_0_3
+#define DRM_SIS_FB_ALLOC 0x04
+#define DRM_SIS_FB_FREE 0x05
+#define NOT_USED_6_12
+#define DRM_SIS_AGP_INIT 0x13
+#define DRM_SIS_AGP_ALLOC 0x14
+#define DRM_SIS_AGP_FREE 0x15
+#define DRM_SIS_FB_INIT 0x16
+#define DRM_IOCTL_SIS_FB_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_SIS_FB_ALLOC, drm_sis_mem_t)
+#define DRM_IOCTL_SIS_FB_FREE DRM_IOW(DRM_COMMAND_BASE + DRM_SIS_FB_FREE, drm_sis_mem_t)
+#define DRM_IOCTL_SIS_AGP_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_SIS_AGP_INIT, drm_sis_agp_t)
+#define DRM_IOCTL_SIS_AGP_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_SIS_AGP_ALLOC, drm_sis_mem_t)
+#define DRM_IOCTL_SIS_AGP_FREE DRM_IOW(DRM_COMMAND_BASE + DRM_SIS_AGP_FREE, drm_sis_mem_t)
+#define DRM_IOCTL_SIS_FB_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_SIS_FB_INIT, drm_sis_fb_t)
+typedef struct {
+  int context;
+  unsigned long offset;
+  unsigned long size;
+  unsigned long free;
+} drm_sis_mem_t;
+typedef struct {
+  unsigned long offset, size;
+} drm_sis_agp_t;
+typedef struct {
+  unsigned long offset, size;
+} drm_sis_fb_t;
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/tegra_drm.h b/x86_64-linux-musl/include/drm/tegra_drm.h
new file mode 100644
index 0000000..5e90635
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/tegra_drm.h
@@ -0,0 +1,267 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_TEGRA_DRM_H_
+#define _UAPI_TEGRA_DRM_H_
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_TEGRA_GEM_CREATE_TILED (1 << 0)
+#define DRM_TEGRA_GEM_CREATE_BOTTOM_UP (1 << 1)
+struct drm_tegra_gem_create {
+  __u64 size;
+  __u32 flags;
+  __u32 handle;
+};
+struct drm_tegra_gem_mmap {
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+};
+struct drm_tegra_syncpt_read {
+  __u32 id;
+  __u32 value;
+};
+struct drm_tegra_syncpt_incr {
+  __u32 id;
+  __u32 pad;
+};
+struct drm_tegra_syncpt_wait {
+  __u32 id;
+  __u32 thresh;
+  __u32 timeout;
+  __u32 value;
+};
+#define DRM_TEGRA_NO_TIMEOUT (0xffffffff)
+struct drm_tegra_open_channel {
+  __u32 client;
+  __u32 pad;
+  __u64 context;
+};
+struct drm_tegra_close_channel {
+  __u64 context;
+};
+struct drm_tegra_get_syncpt {
+  __u64 context;
+  __u32 index;
+  __u32 id;
+};
+struct drm_tegra_get_syncpt_base {
+  __u64 context;
+  __u32 syncpt;
+  __u32 id;
+};
+struct drm_tegra_syncpt {
+  __u32 id;
+  __u32 incrs;
+};
+struct drm_tegra_cmdbuf {
+  __u32 handle;
+  __u32 offset;
+  __u32 words;
+  __u32 pad;
+};
+struct drm_tegra_reloc {
+  struct {
+    __u32 handle;
+    __u32 offset;
+  } cmdbuf;
+  struct {
+    __u32 handle;
+    __u32 offset;
+  } target;
+  __u32 shift;
+  __u32 pad;
+};
+struct drm_tegra_waitchk {
+  __u32 handle;
+  __u32 offset;
+  __u32 syncpt;
+  __u32 thresh;
+};
+struct drm_tegra_submit {
+  __u64 context;
+  __u32 num_syncpts;
+  __u32 num_cmdbufs;
+  __u32 num_relocs;
+  __u32 num_waitchks;
+  __u32 waitchk_mask;
+  __u32 timeout;
+  __u64 syncpts;
+  __u64 cmdbufs;
+  __u64 relocs;
+  __u64 waitchks;
+  __u32 fence;
+  __u32 reserved[5];
+};
+#define DRM_TEGRA_GEM_TILING_MODE_PITCH 0
+#define DRM_TEGRA_GEM_TILING_MODE_TILED 1
+#define DRM_TEGRA_GEM_TILING_MODE_BLOCK 2
+struct drm_tegra_gem_set_tiling {
+  __u32 handle;
+  __u32 mode;
+  __u32 value;
+  __u32 pad;
+};
+struct drm_tegra_gem_get_tiling {
+  __u32 handle;
+  __u32 mode;
+  __u32 value;
+  __u32 pad;
+};
+#define DRM_TEGRA_GEM_BOTTOM_UP (1 << 0)
+#define DRM_TEGRA_GEM_FLAGS (DRM_TEGRA_GEM_BOTTOM_UP)
+struct drm_tegra_gem_set_flags {
+  __u32 handle;
+  __u32 flags;
+};
+struct drm_tegra_gem_get_flags {
+  __u32 handle;
+  __u32 flags;
+};
+#define DRM_TEGRA_GEM_CREATE 0x00
+#define DRM_TEGRA_GEM_MMAP 0x01
+#define DRM_TEGRA_SYNCPT_READ 0x02
+#define DRM_TEGRA_SYNCPT_INCR 0x03
+#define DRM_TEGRA_SYNCPT_WAIT 0x04
+#define DRM_TEGRA_OPEN_CHANNEL 0x05
+#define DRM_TEGRA_CLOSE_CHANNEL 0x06
+#define DRM_TEGRA_GET_SYNCPT 0x07
+#define DRM_TEGRA_SUBMIT 0x08
+#define DRM_TEGRA_GET_SYNCPT_BASE 0x09
+#define DRM_TEGRA_GEM_SET_TILING 0x0a
+#define DRM_TEGRA_GEM_GET_TILING 0x0b
+#define DRM_TEGRA_GEM_SET_FLAGS 0x0c
+#define DRM_TEGRA_GEM_GET_FLAGS 0x0d
+#define DRM_IOCTL_TEGRA_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_CREATE, struct drm_tegra_gem_create)
+#define DRM_IOCTL_TEGRA_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_MMAP, struct drm_tegra_gem_mmap)
+#define DRM_IOCTL_TEGRA_SYNCPT_READ DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_READ, struct drm_tegra_syncpt_read)
+#define DRM_IOCTL_TEGRA_SYNCPT_INCR DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_INCR, struct drm_tegra_syncpt_incr)
+#define DRM_IOCTL_TEGRA_SYNCPT_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_WAIT, struct drm_tegra_syncpt_wait)
+#define DRM_IOCTL_TEGRA_OPEN_CHANNEL DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_OPEN_CHANNEL, struct drm_tegra_open_channel)
+#define DRM_IOCTL_TEGRA_CLOSE_CHANNEL DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_CLOSE_CHANNEL, struct drm_tegra_close_channel)
+#define DRM_IOCTL_TEGRA_GET_SYNCPT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GET_SYNCPT, struct drm_tegra_get_syncpt)
+#define DRM_IOCTL_TEGRA_SUBMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SUBMIT, struct drm_tegra_submit)
+#define DRM_IOCTL_TEGRA_GET_SYNCPT_BASE DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GET_SYNCPT_BASE, struct drm_tegra_get_syncpt_base)
+#define DRM_IOCTL_TEGRA_GEM_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_SET_TILING, struct drm_tegra_gem_set_tiling)
+#define DRM_IOCTL_TEGRA_GEM_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_GET_TILING, struct drm_tegra_gem_get_tiling)
+#define DRM_IOCTL_TEGRA_GEM_SET_FLAGS DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_SET_FLAGS, struct drm_tegra_gem_set_flags)
+#define DRM_IOCTL_TEGRA_GEM_GET_FLAGS DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_GET_FLAGS, struct drm_tegra_gem_get_flags)
+#define DRM_TEGRA_CHANNEL_CAP_CACHE_COHERENT (1 << 0)
+struct drm_tegra_channel_open {
+  __u32 host1x_class;
+  __u32 flags;
+  __u32 context;
+  __u32 version;
+  __u32 capabilities;
+  __u32 padding;
+};
+struct drm_tegra_channel_close {
+  __u32 context;
+  __u32 padding;
+};
+#define DRM_TEGRA_CHANNEL_MAP_READ (1 << 0)
+#define DRM_TEGRA_CHANNEL_MAP_WRITE (1 << 1)
+#define DRM_TEGRA_CHANNEL_MAP_READ_WRITE (DRM_TEGRA_CHANNEL_MAP_READ | DRM_TEGRA_CHANNEL_MAP_WRITE)
+struct drm_tegra_channel_map {
+  __u32 context;
+  __u32 handle;
+  __u32 flags;
+  __u32 mapping;
+};
+struct drm_tegra_channel_unmap {
+  __u32 context;
+  __u32 mapping;
+};
+#define DRM_TEGRA_SUBMIT_RELOC_SECTOR_LAYOUT (1 << 0)
+struct drm_tegra_submit_buf {
+  __u32 mapping;
+  __u32 flags;
+  struct {
+    __u64 target_offset;
+    __u32 gather_offset_words;
+    __u32 shift;
+  } reloc;
+};
+#define DRM_TEGRA_SUBMIT_CMD_GATHER_UPTR 0
+#define DRM_TEGRA_SUBMIT_CMD_WAIT_SYNCPT 1
+#define DRM_TEGRA_SUBMIT_CMD_WAIT_SYNCPT_RELATIVE 2
+struct drm_tegra_submit_cmd_gather_uptr {
+  __u32 words;
+  __u32 reserved[3];
+};
+struct drm_tegra_submit_cmd_wait_syncpt {
+  __u32 id;
+  __u32 value;
+  __u32 reserved[2];
+};
+struct drm_tegra_submit_cmd {
+  __u32 type;
+  __u32 flags;
+  union {
+    struct drm_tegra_submit_cmd_gather_uptr gather_uptr;
+    struct drm_tegra_submit_cmd_wait_syncpt wait_syncpt;
+    __u32 reserved[4];
+  };
+};
+struct drm_tegra_submit_syncpt {
+  __u32 id;
+  __u32 flags;
+  __u32 increments;
+  __u32 value;
+};
+struct drm_tegra_channel_submit {
+  __u32 context;
+  __u32 num_bufs;
+  __u32 num_cmds;
+  __u32 gather_data_words;
+  __u64 bufs_ptr;
+  __u64 cmds_ptr;
+  __u64 gather_data_ptr;
+  __u32 syncobj_in;
+  __u32 syncobj_out;
+  struct drm_tegra_submit_syncpt syncpt;
+};
+struct drm_tegra_syncpoint_allocate {
+  __u32 id;
+  __u32 padding;
+};
+struct drm_tegra_syncpoint_free {
+  __u32 id;
+  __u32 padding;
+};
+struct drm_tegra_syncpoint_wait {
+  __s64 timeout_ns;
+  __u32 id;
+  __u32 threshold;
+  __u32 value;
+  __u32 padding;
+};
+#define DRM_IOCTL_TEGRA_CHANNEL_OPEN DRM_IOWR(DRM_COMMAND_BASE + 0x10, struct drm_tegra_channel_open)
+#define DRM_IOCTL_TEGRA_CHANNEL_CLOSE DRM_IOWR(DRM_COMMAND_BASE + 0x11, struct drm_tegra_channel_close)
+#define DRM_IOCTL_TEGRA_CHANNEL_MAP DRM_IOWR(DRM_COMMAND_BASE + 0x12, struct drm_tegra_channel_map)
+#define DRM_IOCTL_TEGRA_CHANNEL_UNMAP DRM_IOWR(DRM_COMMAND_BASE + 0x13, struct drm_tegra_channel_unmap)
+#define DRM_IOCTL_TEGRA_CHANNEL_SUBMIT DRM_IOWR(DRM_COMMAND_BASE + 0x14, struct drm_tegra_channel_submit)
+#define DRM_IOCTL_TEGRA_SYNCPOINT_ALLOCATE DRM_IOWR(DRM_COMMAND_BASE + 0x20, struct drm_tegra_syncpoint_allocate)
+#define DRM_IOCTL_TEGRA_SYNCPOINT_FREE DRM_IOWR(DRM_COMMAND_BASE + 0x21, struct drm_tegra_syncpoint_free)
+#define DRM_IOCTL_TEGRA_SYNCPOINT_WAIT DRM_IOWR(DRM_COMMAND_BASE + 0x22, struct drm_tegra_syncpoint_wait)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/v3d_drm.h b/x86_64-linux-musl/include/drm/v3d_drm.h
new file mode 100644
index 0000000..5887678
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/v3d_drm.h
@@ -0,0 +1,268 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _V3D_DRM_H_
+#define _V3D_DRM_H_
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_V3D_SUBMIT_CL 0x00
+#define DRM_V3D_WAIT_BO 0x01
+#define DRM_V3D_CREATE_BO 0x02
+#define DRM_V3D_MMAP_BO 0x03
+#define DRM_V3D_GET_PARAM 0x04
+#define DRM_V3D_GET_BO_OFFSET 0x05
+#define DRM_V3D_SUBMIT_TFU 0x06
+#define DRM_V3D_SUBMIT_CSD 0x07
+#define DRM_V3D_PERFMON_CREATE 0x08
+#define DRM_V3D_PERFMON_DESTROY 0x09
+#define DRM_V3D_PERFMON_GET_VALUES 0x0a
+#define DRM_IOCTL_V3D_SUBMIT_CL DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_SUBMIT_CL, struct drm_v3d_submit_cl)
+#define DRM_IOCTL_V3D_WAIT_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_WAIT_BO, struct drm_v3d_wait_bo)
+#define DRM_IOCTL_V3D_CREATE_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_CREATE_BO, struct drm_v3d_create_bo)
+#define DRM_IOCTL_V3D_MMAP_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_MMAP_BO, struct drm_v3d_mmap_bo)
+#define DRM_IOCTL_V3D_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_GET_PARAM, struct drm_v3d_get_param)
+#define DRM_IOCTL_V3D_GET_BO_OFFSET DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_GET_BO_OFFSET, struct drm_v3d_get_bo_offset)
+#define DRM_IOCTL_V3D_SUBMIT_TFU DRM_IOW(DRM_COMMAND_BASE + DRM_V3D_SUBMIT_TFU, struct drm_v3d_submit_tfu)
+#define DRM_IOCTL_V3D_SUBMIT_CSD DRM_IOW(DRM_COMMAND_BASE + DRM_V3D_SUBMIT_CSD, struct drm_v3d_submit_csd)
+#define DRM_IOCTL_V3D_PERFMON_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_PERFMON_CREATE, struct drm_v3d_perfmon_create)
+#define DRM_IOCTL_V3D_PERFMON_DESTROY DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_PERFMON_DESTROY, struct drm_v3d_perfmon_destroy)
+#define DRM_IOCTL_V3D_PERFMON_GET_VALUES DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_PERFMON_GET_VALUES, struct drm_v3d_perfmon_get_values)
+#define DRM_V3D_SUBMIT_CL_FLUSH_CACHE 0x01
+#define DRM_V3D_SUBMIT_EXTENSION 0x02
+struct drm_v3d_extension {
+  __u64 next;
+  __u32 id;
+#define DRM_V3D_EXT_ID_MULTI_SYNC 0x01
+  __u32 flags;
+};
+struct drm_v3d_sem {
+  __u32 handle;
+  __u32 flags;
+  __u64 point;
+  __u64 mbz[2];
+};
+enum v3d_queue {
+  V3D_BIN,
+  V3D_RENDER,
+  V3D_TFU,
+  V3D_CSD,
+  V3D_CACHE_CLEAN,
+};
+struct drm_v3d_multi_sync {
+  struct drm_v3d_extension base;
+  __u64 in_syncs;
+  __u64 out_syncs;
+  __u32 in_sync_count;
+  __u32 out_sync_count;
+  __u32 wait_stage;
+  __u32 pad;
+};
+struct drm_v3d_submit_cl {
+  __u32 bcl_start;
+  __u32 bcl_end;
+  __u32 rcl_start;
+  __u32 rcl_end;
+  __u32 in_sync_bcl;
+  __u32 in_sync_rcl;
+  __u32 out_sync;
+  __u32 qma;
+  __u32 qms;
+  __u32 qts;
+  __u64 bo_handles;
+  __u32 bo_handle_count;
+  __u32 flags;
+  __u32 perfmon_id;
+  __u32 pad;
+  __u64 extensions;
+};
+struct drm_v3d_wait_bo {
+  __u32 handle;
+  __u32 pad;
+  __u64 timeout_ns;
+};
+struct drm_v3d_create_bo {
+  __u32 size;
+  __u32 flags;
+  __u32 handle;
+  __u32 offset;
+};
+struct drm_v3d_mmap_bo {
+  __u32 handle;
+  __u32 flags;
+  __u64 offset;
+};
+enum drm_v3d_param {
+  DRM_V3D_PARAM_V3D_UIFCFG,
+  DRM_V3D_PARAM_V3D_HUB_IDENT1,
+  DRM_V3D_PARAM_V3D_HUB_IDENT2,
+  DRM_V3D_PARAM_V3D_HUB_IDENT3,
+  DRM_V3D_PARAM_V3D_CORE0_IDENT0,
+  DRM_V3D_PARAM_V3D_CORE0_IDENT1,
+  DRM_V3D_PARAM_V3D_CORE0_IDENT2,
+  DRM_V3D_PARAM_SUPPORTS_TFU,
+  DRM_V3D_PARAM_SUPPORTS_CSD,
+  DRM_V3D_PARAM_SUPPORTS_CACHE_FLUSH,
+  DRM_V3D_PARAM_SUPPORTS_PERFMON,
+  DRM_V3D_PARAM_SUPPORTS_MULTISYNC_EXT,
+};
+struct drm_v3d_get_param {
+  __u32 param;
+  __u32 pad;
+  __u64 value;
+};
+struct drm_v3d_get_bo_offset {
+  __u32 handle;
+  __u32 offset;
+};
+struct drm_v3d_submit_tfu {
+  __u32 icfg;
+  __u32 iia;
+  __u32 iis;
+  __u32 ica;
+  __u32 iua;
+  __u32 ioa;
+  __u32 ios;
+  __u32 coef[4];
+  __u32 bo_handles[4];
+  __u32 in_sync;
+  __u32 out_sync;
+  __u32 flags;
+  __u64 extensions;
+};
+struct drm_v3d_submit_csd {
+  __u32 cfg[7];
+  __u32 coef[4];
+  __u64 bo_handles;
+  __u32 bo_handle_count;
+  __u32 in_sync;
+  __u32 out_sync;
+  __u32 perfmon_id;
+  __u64 extensions;
+  __u32 flags;
+  __u32 pad;
+};
+enum {
+  V3D_PERFCNT_FEP_VALID_PRIMTS_NO_PIXELS,
+  V3D_PERFCNT_FEP_VALID_PRIMS,
+  V3D_PERFCNT_FEP_EZ_NFCLIP_QUADS,
+  V3D_PERFCNT_FEP_VALID_QUADS,
+  V3D_PERFCNT_TLB_QUADS_STENCIL_FAIL,
+  V3D_PERFCNT_TLB_QUADS_STENCILZ_FAIL,
+  V3D_PERFCNT_TLB_QUADS_STENCILZ_PASS,
+  V3D_PERFCNT_TLB_QUADS_ZERO_COV,
+  V3D_PERFCNT_TLB_QUADS_NONZERO_COV,
+  V3D_PERFCNT_TLB_QUADS_WRITTEN,
+  V3D_PERFCNT_PTB_PRIM_VIEWPOINT_DISCARD,
+  V3D_PERFCNT_PTB_PRIM_CLIP,
+  V3D_PERFCNT_PTB_PRIM_REV,
+  V3D_PERFCNT_QPU_IDLE_CYCLES,
+  V3D_PERFCNT_QPU_ACTIVE_CYCLES_VERTEX_COORD_USER,
+  V3D_PERFCNT_QPU_ACTIVE_CYCLES_FRAG,
+  V3D_PERFCNT_QPU_CYCLES_VALID_INSTR,
+  V3D_PERFCNT_QPU_CYCLES_TMU_STALL,
+  V3D_PERFCNT_QPU_CYCLES_SCOREBOARD_STALL,
+  V3D_PERFCNT_QPU_CYCLES_VARYINGS_STALL,
+  V3D_PERFCNT_QPU_IC_HIT,
+  V3D_PERFCNT_QPU_IC_MISS,
+  V3D_PERFCNT_QPU_UC_HIT,
+  V3D_PERFCNT_QPU_UC_MISS,
+  V3D_PERFCNT_TMU_TCACHE_ACCESS,
+  V3D_PERFCNT_TMU_TCACHE_MISS,
+  V3D_PERFCNT_VPM_VDW_STALL,
+  V3D_PERFCNT_VPM_VCD_STALL,
+  V3D_PERFCNT_BIN_ACTIVE,
+  V3D_PERFCNT_RDR_ACTIVE,
+  V3D_PERFCNT_L2T_HITS,
+  V3D_PERFCNT_L2T_MISSES,
+  V3D_PERFCNT_CYCLE_COUNT,
+  V3D_PERFCNT_QPU_CYCLES_STALLED_VERTEX_COORD_USER,
+  V3D_PERFCNT_QPU_CYCLES_STALLED_FRAGMENT,
+  V3D_PERFCNT_PTB_PRIMS_BINNED,
+  V3D_PERFCNT_AXI_WRITES_WATCH_0,
+  V3D_PERFCNT_AXI_READS_WATCH_0,
+  V3D_PERFCNT_AXI_WRITE_STALLS_WATCH_0,
+  V3D_PERFCNT_AXI_READ_STALLS_WATCH_0,
+  V3D_PERFCNT_AXI_WRITE_BYTES_WATCH_0,
+  V3D_PERFCNT_AXI_READ_BYTES_WATCH_0,
+  V3D_PERFCNT_AXI_WRITES_WATCH_1,
+  V3D_PERFCNT_AXI_READS_WATCH_1,
+  V3D_PERFCNT_AXI_WRITE_STALLS_WATCH_1,
+  V3D_PERFCNT_AXI_READ_STALLS_WATCH_1,
+  V3D_PERFCNT_AXI_WRITE_BYTES_WATCH_1,
+  V3D_PERFCNT_AXI_READ_BYTES_WATCH_1,
+  V3D_PERFCNT_TLB_PARTIAL_QUADS,
+  V3D_PERFCNT_TMU_CONFIG_ACCESSES,
+  V3D_PERFCNT_L2T_NO_ID_STALL,
+  V3D_PERFCNT_L2T_COM_QUE_STALL,
+  V3D_PERFCNT_L2T_TMU_WRITES,
+  V3D_PERFCNT_TMU_ACTIVE_CYCLES,
+  V3D_PERFCNT_TMU_STALLED_CYCLES,
+  V3D_PERFCNT_CLE_ACTIVE,
+  V3D_PERFCNT_L2T_TMU_READS,
+  V3D_PERFCNT_L2T_CLE_READS,
+  V3D_PERFCNT_L2T_VCD_READS,
+  V3D_PERFCNT_L2T_TMUCFG_READS,
+  V3D_PERFCNT_L2T_SLC0_READS,
+  V3D_PERFCNT_L2T_SLC1_READS,
+  V3D_PERFCNT_L2T_SLC2_READS,
+  V3D_PERFCNT_L2T_TMU_W_MISSES,
+  V3D_PERFCNT_L2T_TMU_R_MISSES,
+  V3D_PERFCNT_L2T_CLE_MISSES,
+  V3D_PERFCNT_L2T_VCD_MISSES,
+  V3D_PERFCNT_L2T_TMUCFG_MISSES,
+  V3D_PERFCNT_L2T_SLC0_MISSES,
+  V3D_PERFCNT_L2T_SLC1_MISSES,
+  V3D_PERFCNT_L2T_SLC2_MISSES,
+  V3D_PERFCNT_CORE_MEM_WRITES,
+  V3D_PERFCNT_L2T_MEM_WRITES,
+  V3D_PERFCNT_PTB_MEM_WRITES,
+  V3D_PERFCNT_TLB_MEM_WRITES,
+  V3D_PERFCNT_CORE_MEM_READS,
+  V3D_PERFCNT_L2T_MEM_READS,
+  V3D_PERFCNT_PTB_MEM_READS,
+  V3D_PERFCNT_PSE_MEM_READS,
+  V3D_PERFCNT_TLB_MEM_READS,
+  V3D_PERFCNT_GMP_MEM_READS,
+  V3D_PERFCNT_PTB_W_MEM_WORDS,
+  V3D_PERFCNT_TLB_W_MEM_WORDS,
+  V3D_PERFCNT_PSE_R_MEM_WORDS,
+  V3D_PERFCNT_TLB_R_MEM_WORDS,
+  V3D_PERFCNT_TMU_MRU_HITS,
+  V3D_PERFCNT_COMPUTE_ACTIVE,
+  V3D_PERFCNT_NUM,
+};
+#define DRM_V3D_MAX_PERF_COUNTERS 32
+struct drm_v3d_perfmon_create {
+  __u32 id;
+  __u32 ncounters;
+  __u8 counters[DRM_V3D_MAX_PERF_COUNTERS];
+};
+struct drm_v3d_perfmon_destroy {
+  __u32 id;
+};
+struct drm_v3d_perfmon_get_values {
+  __u32 id;
+  __u32 pad;
+  __u64 values_ptr;
+};
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/vc4_drm.h b/x86_64-linux-musl/include/drm/vc4_drm.h
new file mode 100644
index 0000000..fde443f
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/vc4_drm.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_VC4_DRM_H_
+#define _UAPI_VC4_DRM_H_
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_VC4_SUBMIT_CL 0x00
+#define DRM_VC4_WAIT_SEQNO 0x01
+#define DRM_VC4_WAIT_BO 0x02
+#define DRM_VC4_CREATE_BO 0x03
+#define DRM_VC4_MMAP_BO 0x04
+#define DRM_VC4_CREATE_SHADER_BO 0x05
+#define DRM_VC4_GET_HANG_STATE 0x06
+#define DRM_VC4_GET_PARAM 0x07
+#define DRM_VC4_SET_TILING 0x08
+#define DRM_VC4_GET_TILING 0x09
+#define DRM_VC4_LABEL_BO 0x0a
+#define DRM_VC4_GEM_MADVISE 0x0b
+#define DRM_VC4_PERFMON_CREATE 0x0c
+#define DRM_VC4_PERFMON_DESTROY 0x0d
+#define DRM_VC4_PERFMON_GET_VALUES 0x0e
+#define DRM_IOCTL_VC4_SUBMIT_CL DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_SUBMIT_CL, struct drm_vc4_submit_cl)
+#define DRM_IOCTL_VC4_WAIT_SEQNO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_WAIT_SEQNO, struct drm_vc4_wait_seqno)
+#define DRM_IOCTL_VC4_WAIT_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_WAIT_BO, struct drm_vc4_wait_bo)
+#define DRM_IOCTL_VC4_CREATE_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_CREATE_BO, struct drm_vc4_create_bo)
+#define DRM_IOCTL_VC4_MMAP_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_MMAP_BO, struct drm_vc4_mmap_bo)
+#define DRM_IOCTL_VC4_CREATE_SHADER_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_CREATE_SHADER_BO, struct drm_vc4_create_shader_bo)
+#define DRM_IOCTL_VC4_GET_HANG_STATE DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GET_HANG_STATE, struct drm_vc4_get_hang_state)
+#define DRM_IOCTL_VC4_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GET_PARAM, struct drm_vc4_get_param)
+#define DRM_IOCTL_VC4_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_SET_TILING, struct drm_vc4_set_tiling)
+#define DRM_IOCTL_VC4_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GET_TILING, struct drm_vc4_get_tiling)
+#define DRM_IOCTL_VC4_LABEL_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_LABEL_BO, struct drm_vc4_label_bo)
+#define DRM_IOCTL_VC4_GEM_MADVISE DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GEM_MADVISE, struct drm_vc4_gem_madvise)
+#define DRM_IOCTL_VC4_PERFMON_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_PERFMON_CREATE, struct drm_vc4_perfmon_create)
+#define DRM_IOCTL_VC4_PERFMON_DESTROY DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_PERFMON_DESTROY, struct drm_vc4_perfmon_destroy)
+#define DRM_IOCTL_VC4_PERFMON_GET_VALUES DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_PERFMON_GET_VALUES, struct drm_vc4_perfmon_get_values)
+struct drm_vc4_submit_rcl_surface {
+  __u32 hindex;
+  __u32 offset;
+  __u16 bits;
+#define VC4_SUBMIT_RCL_SURFACE_READ_IS_FULL_RES (1 << 0)
+  __u16 flags;
+};
+struct drm_vc4_submit_cl {
+  __u64 bin_cl;
+  __u64 shader_rec;
+  __u64 uniforms;
+  __u64 bo_handles;
+  __u32 bin_cl_size;
+  __u32 shader_rec_size;
+  __u32 shader_rec_count;
+  __u32 uniforms_size;
+  __u32 bo_handle_count;
+  __u16 width;
+  __u16 height;
+  __u8 min_x_tile;
+  __u8 min_y_tile;
+  __u8 max_x_tile;
+  __u8 max_y_tile;
+  struct drm_vc4_submit_rcl_surface color_read;
+  struct drm_vc4_submit_rcl_surface color_write;
+  struct drm_vc4_submit_rcl_surface zs_read;
+  struct drm_vc4_submit_rcl_surface zs_write;
+  struct drm_vc4_submit_rcl_surface msaa_color_write;
+  struct drm_vc4_submit_rcl_surface msaa_zs_write;
+  __u32 clear_color[2];
+  __u32 clear_z;
+  __u8 clear_s;
+  __u32 pad : 24;
+#define VC4_SUBMIT_CL_USE_CLEAR_COLOR (1 << 0)
+#define VC4_SUBMIT_CL_FIXED_RCL_ORDER (1 << 1)
+#define VC4_SUBMIT_CL_RCL_ORDER_INCREASING_X (1 << 2)
+#define VC4_SUBMIT_CL_RCL_ORDER_INCREASING_Y (1 << 3)
+  __u32 flags;
+  __u64 seqno;
+  __u32 perfmonid;
+  __u32 in_sync;
+  __u32 out_sync;
+  __u32 pad2;
+};
+struct drm_vc4_wait_seqno {
+  __u64 seqno;
+  __u64 timeout_ns;
+};
+struct drm_vc4_wait_bo {
+  __u32 handle;
+  __u32 pad;
+  __u64 timeout_ns;
+};
+struct drm_vc4_create_bo {
+  __u32 size;
+  __u32 flags;
+  __u32 handle;
+  __u32 pad;
+};
+struct drm_vc4_mmap_bo {
+  __u32 handle;
+  __u32 flags;
+  __u64 offset;
+};
+struct drm_vc4_create_shader_bo {
+  __u32 size;
+  __u32 flags;
+  __u64 data;
+  __u32 handle;
+  __u32 pad;
+};
+struct drm_vc4_get_hang_state_bo {
+  __u32 handle;
+  __u32 paddr;
+  __u32 size;
+  __u32 pad;
+};
+struct drm_vc4_get_hang_state {
+  __u64 bo;
+  __u32 bo_count;
+  __u32 start_bin, start_render;
+  __u32 ct0ca, ct0ea;
+  __u32 ct1ca, ct1ea;
+  __u32 ct0cs, ct1cs;
+  __u32 ct0ra0, ct1ra0;
+  __u32 bpca, bpcs;
+  __u32 bpoa, bpos;
+  __u32 vpmbase;
+  __u32 dbge;
+  __u32 fdbgo;
+  __u32 fdbgb;
+  __u32 fdbgr;
+  __u32 fdbgs;
+  __u32 errstat;
+  __u32 pad[16];
+};
+#define DRM_VC4_PARAM_V3D_IDENT0 0
+#define DRM_VC4_PARAM_V3D_IDENT1 1
+#define DRM_VC4_PARAM_V3D_IDENT2 2
+#define DRM_VC4_PARAM_SUPPORTS_BRANCHES 3
+#define DRM_VC4_PARAM_SUPPORTS_ETC1 4
+#define DRM_VC4_PARAM_SUPPORTS_THREADED_FS 5
+#define DRM_VC4_PARAM_SUPPORTS_FIXED_RCL_ORDER 6
+#define DRM_VC4_PARAM_SUPPORTS_MADVISE 7
+#define DRM_VC4_PARAM_SUPPORTS_PERFMON 8
+struct drm_vc4_get_param {
+  __u32 param;
+  __u32 pad;
+  __u64 value;
+};
+struct drm_vc4_get_tiling {
+  __u32 handle;
+  __u32 flags;
+  __u64 modifier;
+};
+struct drm_vc4_set_tiling {
+  __u32 handle;
+  __u32 flags;
+  __u64 modifier;
+};
+struct drm_vc4_label_bo {
+  __u32 handle;
+  __u32 len;
+  __u64 name;
+};
+#define VC4_MADV_WILLNEED 0
+#define VC4_MADV_DONTNEED 1
+#define __VC4_MADV_PURGED 2
+#define __VC4_MADV_NOTSUPP 3
+struct drm_vc4_gem_madvise {
+  __u32 handle;
+  __u32 madv;
+  __u32 retained;
+  __u32 pad;
+};
+enum {
+  VC4_PERFCNT_FEP_VALID_PRIMS_NO_RENDER,
+  VC4_PERFCNT_FEP_VALID_PRIMS_RENDER,
+  VC4_PERFCNT_FEP_CLIPPED_QUADS,
+  VC4_PERFCNT_FEP_VALID_QUADS,
+  VC4_PERFCNT_TLB_QUADS_NOT_PASSING_STENCIL,
+  VC4_PERFCNT_TLB_QUADS_NOT_PASSING_Z_AND_STENCIL,
+  VC4_PERFCNT_TLB_QUADS_PASSING_Z_AND_STENCIL,
+  VC4_PERFCNT_TLB_QUADS_ZERO_COVERAGE,
+  VC4_PERFCNT_TLB_QUADS_NON_ZERO_COVERAGE,
+  VC4_PERFCNT_TLB_QUADS_WRITTEN_TO_COLOR_BUF,
+  VC4_PERFCNT_PLB_PRIMS_OUTSIDE_VIEWPORT,
+  VC4_PERFCNT_PLB_PRIMS_NEED_CLIPPING,
+  VC4_PERFCNT_PSE_PRIMS_REVERSED,
+  VC4_PERFCNT_QPU_TOTAL_IDLE_CYCLES,
+  VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_VERTEX_COORD_SHADING,
+  VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_FRAGMENT_SHADING,
+  VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_EXEC_VALID_INST,
+  VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_WAITING_TMUS,
+  VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_WAITING_SCOREBOARD,
+  VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_WAITING_VARYINGS,
+  VC4_PERFCNT_QPU_TOTAL_INST_CACHE_HIT,
+  VC4_PERFCNT_QPU_TOTAL_INST_CACHE_MISS,
+  VC4_PERFCNT_QPU_TOTAL_UNIFORM_CACHE_HIT,
+  VC4_PERFCNT_QPU_TOTAL_UNIFORM_CACHE_MISS,
+  VC4_PERFCNT_TMU_TOTAL_TEXT_QUADS_PROCESSED,
+  VC4_PERFCNT_TMU_TOTAL_TEXT_CACHE_MISS,
+  VC4_PERFCNT_VPM_TOTAL_CLK_CYCLES_VDW_STALLED,
+  VC4_PERFCNT_VPM_TOTAL_CLK_CYCLES_VCD_STALLED,
+  VC4_PERFCNT_L2C_TOTAL_L2_CACHE_HIT,
+  VC4_PERFCNT_L2C_TOTAL_L2_CACHE_MISS,
+  VC4_PERFCNT_NUM_EVENTS,
+};
+#define DRM_VC4_MAX_PERF_COUNTERS 16
+struct drm_vc4_perfmon_create {
+  __u32 id;
+  __u32 ncounters;
+  __u8 events[DRM_VC4_MAX_PERF_COUNTERS];
+};
+struct drm_vc4_perfmon_destroy {
+  __u32 id;
+};
+struct drm_vc4_perfmon_get_values {
+  __u32 id;
+  __u64 values_ptr;
+};
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/vgem_drm.h b/x86_64-linux-musl/include/drm/vgem_drm.h
new file mode 100644
index 0000000..b33452b
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/vgem_drm.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_VGEM_DRM_H_
+#define _UAPI_VGEM_DRM_H_
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_VGEM_FENCE_ATTACH 0x1
+#define DRM_VGEM_FENCE_SIGNAL 0x2
+#define DRM_IOCTL_VGEM_FENCE_ATTACH DRM_IOWR(DRM_COMMAND_BASE + DRM_VGEM_FENCE_ATTACH, struct drm_vgem_fence_attach)
+#define DRM_IOCTL_VGEM_FENCE_SIGNAL DRM_IOW(DRM_COMMAND_BASE + DRM_VGEM_FENCE_SIGNAL, struct drm_vgem_fence_signal)
+struct drm_vgem_fence_attach {
+  __u32 handle;
+  __u32 flags;
+#define VGEM_FENCE_WRITE 0x1
+  __u32 out_fence;
+  __u32 pad;
+};
+struct drm_vgem_fence_signal {
+  __u32 fence;
+  __u32 flags;
+};
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/via_drm.h b/x86_64-linux-musl/include/drm/via_drm.h
new file mode 100644
index 0000000..9ef645a
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/via_drm.h
@@ -0,0 +1,202 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _VIA_DRM_H_
+#define _VIA_DRM_H_
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef _VIA_DEFINES_
+#define _VIA_DEFINES_
+#define VIA_NR_SAREA_CLIPRECTS 8
+#define VIA_NR_XVMC_PORTS 10
+#define VIA_NR_XVMC_LOCKS 5
+#define VIA_MAX_CACHELINE_SIZE 64
+#define XVMCLOCKPTR(saPriv,lockNo) ((volatile struct drm_hw_lock *) (((((unsigned long) (saPriv)->XvMCLockArea) + (VIA_MAX_CACHELINE_SIZE - 1)) & ~(VIA_MAX_CACHELINE_SIZE - 1)) + VIA_MAX_CACHELINE_SIZE * (lockNo)))
+#define VIA_NR_TEX_REGIONS 64
+#define VIA_LOG_MIN_TEX_REGION_SIZE 16
+#endif
+#define VIA_UPLOAD_TEX0IMAGE 0x1
+#define VIA_UPLOAD_TEX1IMAGE 0x2
+#define VIA_UPLOAD_CTX 0x4
+#define VIA_UPLOAD_BUFFERS 0x8
+#define VIA_UPLOAD_TEX0 0x10
+#define VIA_UPLOAD_TEX1 0x20
+#define VIA_UPLOAD_CLIPRECTS 0x40
+#define VIA_UPLOAD_ALL 0xff
+#define DRM_VIA_ALLOCMEM 0x00
+#define DRM_VIA_FREEMEM 0x01
+#define DRM_VIA_AGP_INIT 0x02
+#define DRM_VIA_FB_INIT 0x03
+#define DRM_VIA_MAP_INIT 0x04
+#define DRM_VIA_DEC_FUTEX 0x05
+#define NOT_USED
+#define DRM_VIA_DMA_INIT 0x07
+#define DRM_VIA_CMDBUFFER 0x08
+#define DRM_VIA_FLUSH 0x09
+#define DRM_VIA_PCICMD 0x0a
+#define DRM_VIA_CMDBUF_SIZE 0x0b
+#define NOT_USED
+#define DRM_VIA_WAIT_IRQ 0x0d
+#define DRM_VIA_DMA_BLIT 0x0e
+#define DRM_VIA_BLIT_SYNC 0x0f
+#define DRM_IOCTL_VIA_ALLOCMEM DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_ALLOCMEM, drm_via_mem_t)
+#define DRM_IOCTL_VIA_FREEMEM DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_FREEMEM, drm_via_mem_t)
+#define DRM_IOCTL_VIA_AGP_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_AGP_INIT, drm_via_agp_t)
+#define DRM_IOCTL_VIA_FB_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_FB_INIT, drm_via_fb_t)
+#define DRM_IOCTL_VIA_MAP_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_MAP_INIT, drm_via_init_t)
+#define DRM_IOCTL_VIA_DEC_FUTEX DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_DEC_FUTEX, drm_via_futex_t)
+#define DRM_IOCTL_VIA_DMA_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_DMA_INIT, drm_via_dma_init_t)
+#define DRM_IOCTL_VIA_CMDBUFFER DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_CMDBUFFER, drm_via_cmdbuffer_t)
+#define DRM_IOCTL_VIA_FLUSH DRM_IO(DRM_COMMAND_BASE + DRM_VIA_FLUSH)
+#define DRM_IOCTL_VIA_PCICMD DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_PCICMD, drm_via_cmdbuffer_t)
+#define DRM_IOCTL_VIA_CMDBUF_SIZE DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_CMDBUF_SIZE, drm_via_cmdbuf_size_t)
+#define DRM_IOCTL_VIA_WAIT_IRQ DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_WAIT_IRQ, drm_via_irqwait_t)
+#define DRM_IOCTL_VIA_DMA_BLIT DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_DMA_BLIT, drm_via_dmablit_t)
+#define DRM_IOCTL_VIA_BLIT_SYNC DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_BLIT_SYNC, drm_via_blitsync_t)
+#define VIA_TEX_SETUP_SIZE 8
+#define VIA_FRONT 0x1
+#define VIA_BACK 0x2
+#define VIA_DEPTH 0x4
+#define VIA_STENCIL 0x8
+#define VIA_MEM_VIDEO 0
+#define VIA_MEM_AGP 1
+#define VIA_MEM_SYSTEM 2
+#define VIA_MEM_MIXED 3
+#define VIA_MEM_UNKNOWN 4
+typedef struct {
+  __u32 offset;
+  __u32 size;
+} drm_via_agp_t;
+typedef struct {
+  __u32 offset;
+  __u32 size;
+} drm_via_fb_t;
+typedef struct {
+  __u32 context;
+  __u32 type;
+  __u32 size;
+  unsigned long index;
+  unsigned long offset;
+} drm_via_mem_t;
+typedef struct _drm_via_init {
+  enum {
+    VIA_INIT_MAP = 0x01,
+    VIA_CLEANUP_MAP = 0x02
+  } func;
+  unsigned long sarea_priv_offset;
+  unsigned long fb_offset;
+  unsigned long mmio_offset;
+  unsigned long agpAddr;
+} drm_via_init_t;
+typedef struct _drm_via_futex {
+  enum {
+    VIA_FUTEX_WAIT = 0x00,
+    VIA_FUTEX_WAKE = 0X01
+  } func;
+  __u32 ms;
+  __u32 lock;
+  __u32 val;
+} drm_via_futex_t;
+typedef struct _drm_via_dma_init {
+  enum {
+    VIA_INIT_DMA = 0x01,
+    VIA_CLEANUP_DMA = 0x02,
+    VIA_DMA_INITIALIZED = 0x03
+  } func;
+  unsigned long offset;
+  unsigned long size;
+  unsigned long reg_pause_addr;
+} drm_via_dma_init_t;
+typedef struct _drm_via_cmdbuffer {
+  char __user * buf;
+  unsigned long size;
+} drm_via_cmdbuffer_t;
+typedef struct _drm_via_tex_region {
+  unsigned char next, prev;
+  unsigned char inUse;
+  int age;
+} drm_via_tex_region_t;
+typedef struct _drm_via_sarea {
+  unsigned int dirty;
+  unsigned int nbox;
+  struct drm_clip_rect boxes[VIA_NR_SAREA_CLIPRECTS];
+  drm_via_tex_region_t texList[VIA_NR_TEX_REGIONS + 1];
+  int texAge;
+  int ctxOwner;
+  int vertexPrim;
+  char XvMCLockArea[VIA_MAX_CACHELINE_SIZE * (VIA_NR_XVMC_LOCKS + 1)];
+  unsigned int XvMCDisplaying[VIA_NR_XVMC_PORTS];
+  unsigned int XvMCSubPicOn[VIA_NR_XVMC_PORTS];
+  unsigned int XvMCCtxNoGrabbed;
+  unsigned int pfCurrentOffset;
+} drm_via_sarea_t;
+typedef struct _drm_via_cmdbuf_size {
+  enum {
+    VIA_CMDBUF_SPACE = 0x01,
+    VIA_CMDBUF_LAG = 0x02
+  } func;
+  int wait;
+  __u32 size;
+} drm_via_cmdbuf_size_t;
+typedef enum {
+  VIA_IRQ_ABSOLUTE = 0x0,
+  VIA_IRQ_RELATIVE = 0x1,
+  VIA_IRQ_SIGNAL = 0x10000000,
+  VIA_IRQ_FORCE_SEQUENCE = 0x20000000
+} via_irq_seq_type_t;
+#define VIA_IRQ_FLAGS_MASK 0xF0000000
+enum drm_via_irqs {
+  drm_via_irq_hqv0 = 0,
+  drm_via_irq_hqv1,
+  drm_via_irq_dma0_dd,
+  drm_via_irq_dma0_td,
+  drm_via_irq_dma1_dd,
+  drm_via_irq_dma1_td,
+  drm_via_irq_num
+};
+struct drm_via_wait_irq_request {
+  unsigned irq;
+  via_irq_seq_type_t type;
+  __u32 sequence;
+  __u32 signal;
+};
+typedef union drm_via_irqwait {
+  struct drm_via_wait_irq_request request;
+  struct drm_wait_vblank_reply reply;
+} drm_via_irqwait_t;
+typedef struct drm_via_blitsync {
+  __u32 sync_handle;
+  unsigned engine;
+} drm_via_blitsync_t;
+typedef struct drm_via_dmablit {
+  __u32 num_lines;
+  __u32 line_length;
+  __u32 fb_addr;
+  __u32 fb_stride;
+  unsigned char * mem_addr;
+  __u32 mem_stride;
+  __u32 flags;
+  int to_fb;
+  drm_via_blitsync_t sync;
+} drm_via_dmablit_t;
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/virtgpu_drm.h b/x86_64-linux-musl/include/drm/virtgpu_drm.h
new file mode 100644
index 0000000..342282d
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/virtgpu_drm.h
@@ -0,0 +1,168 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef VIRTGPU_DRM_H
+#define VIRTGPU_DRM_H
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_VIRTGPU_MAP 0x01
+#define DRM_VIRTGPU_EXECBUFFER 0x02
+#define DRM_VIRTGPU_GETPARAM 0x03
+#define DRM_VIRTGPU_RESOURCE_CREATE 0x04
+#define DRM_VIRTGPU_RESOURCE_INFO 0x05
+#define DRM_VIRTGPU_TRANSFER_FROM_HOST 0x06
+#define DRM_VIRTGPU_TRANSFER_TO_HOST 0x07
+#define DRM_VIRTGPU_WAIT 0x08
+#define DRM_VIRTGPU_GET_CAPS 0x09
+#define DRM_VIRTGPU_RESOURCE_CREATE_BLOB 0x0a
+#define DRM_VIRTGPU_CONTEXT_INIT 0x0b
+#define VIRTGPU_EXECBUF_FENCE_FD_IN 0x01
+#define VIRTGPU_EXECBUF_FENCE_FD_OUT 0x02
+#define VIRTGPU_EXECBUF_RING_IDX 0x04
+#define VIRTGPU_EXECBUF_FLAGS (VIRTGPU_EXECBUF_FENCE_FD_IN | VIRTGPU_EXECBUF_FENCE_FD_OUT | VIRTGPU_EXECBUF_RING_IDX | 0)
+struct drm_virtgpu_map {
+  __u64 offset;
+  __u32 handle;
+  __u32 pad;
+};
+struct drm_virtgpu_execbuffer {
+  __u32 flags;
+  __u32 size;
+  __u64 command;
+  __u64 bo_handles;
+  __u32 num_bo_handles;
+  __s32 fence_fd;
+  __u32 ring_idx;
+  __u32 pad;
+};
+#define VIRTGPU_PARAM_3D_FEATURES 1
+#define VIRTGPU_PARAM_CAPSET_QUERY_FIX 2
+#define VIRTGPU_PARAM_RESOURCE_BLOB 3
+#define VIRTGPU_PARAM_HOST_VISIBLE 4
+#define VIRTGPU_PARAM_CROSS_DEVICE 5
+#define VIRTGPU_PARAM_CONTEXT_INIT 6
+#define VIRTGPU_PARAM_SUPPORTED_CAPSET_IDs 7
+struct drm_virtgpu_getparam {
+  __u64 param;
+  __u64 value;
+};
+struct drm_virtgpu_resource_create {
+  __u32 target;
+  __u32 format;
+  __u32 bind;
+  __u32 width;
+  __u32 height;
+  __u32 depth;
+  __u32 array_size;
+  __u32 last_level;
+  __u32 nr_samples;
+  __u32 flags;
+  __u32 bo_handle;
+  __u32 res_handle;
+  __u32 size;
+  __u32 stride;
+};
+struct drm_virtgpu_resource_info {
+  __u32 bo_handle;
+  __u32 res_handle;
+  __u32 size;
+  __u32 blob_mem;
+};
+struct drm_virtgpu_3d_box {
+  __u32 x;
+  __u32 y;
+  __u32 z;
+  __u32 w;
+  __u32 h;
+  __u32 d;
+};
+struct drm_virtgpu_3d_transfer_to_host {
+  __u32 bo_handle;
+  struct drm_virtgpu_3d_box box;
+  __u32 level;
+  __u32 offset;
+  __u32 stride;
+  __u32 layer_stride;
+};
+struct drm_virtgpu_3d_transfer_from_host {
+  __u32 bo_handle;
+  struct drm_virtgpu_3d_box box;
+  __u32 level;
+  __u32 offset;
+  __u32 stride;
+  __u32 layer_stride;
+};
+#define VIRTGPU_WAIT_NOWAIT 1
+struct drm_virtgpu_3d_wait {
+  __u32 handle;
+  __u32 flags;
+};
+struct drm_virtgpu_get_caps {
+  __u32 cap_set_id;
+  __u32 cap_set_ver;
+  __u64 addr;
+  __u32 size;
+  __u32 pad;
+};
+struct drm_virtgpu_resource_create_blob {
+#define VIRTGPU_BLOB_MEM_GUEST 0x0001
+#define VIRTGPU_BLOB_MEM_HOST3D 0x0002
+#define VIRTGPU_BLOB_MEM_HOST3D_GUEST 0x0003
+#define VIRTGPU_BLOB_FLAG_USE_MAPPABLE 0x0001
+#define VIRTGPU_BLOB_FLAG_USE_SHAREABLE 0x0002
+#define VIRTGPU_BLOB_FLAG_USE_CROSS_DEVICE 0x0004
+  __u32 blob_mem;
+  __u32 blob_flags;
+  __u32 bo_handle;
+  __u32 res_handle;
+  __u64 size;
+  __u32 pad;
+  __u32 cmd_size;
+  __u64 cmd;
+  __u64 blob_id;
+};
+#define VIRTGPU_CONTEXT_PARAM_CAPSET_ID 0x0001
+#define VIRTGPU_CONTEXT_PARAM_NUM_RINGS 0x0002
+#define VIRTGPU_CONTEXT_PARAM_POLL_RINGS_MASK 0x0003
+struct drm_virtgpu_context_set_param {
+  __u64 param;
+  __u64 value;
+};
+struct drm_virtgpu_context_init {
+  __u32 num_params;
+  __u32 pad;
+  __u64 ctx_set_params;
+};
+#define VIRTGPU_EVENT_FENCE_SIGNALED 0x90000000
+#define DRM_IOCTL_VIRTGPU_MAP DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_MAP, struct drm_virtgpu_map)
+#define DRM_IOCTL_VIRTGPU_EXECBUFFER DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_EXECBUFFER, struct drm_virtgpu_execbuffer)
+#define DRM_IOCTL_VIRTGPU_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_GETPARAM, struct drm_virtgpu_getparam)
+#define DRM_IOCTL_VIRTGPU_RESOURCE_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_RESOURCE_CREATE, struct drm_virtgpu_resource_create)
+#define DRM_IOCTL_VIRTGPU_RESOURCE_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_RESOURCE_INFO, struct drm_virtgpu_resource_info)
+#define DRM_IOCTL_VIRTGPU_TRANSFER_FROM_HOST DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_TRANSFER_FROM_HOST, struct drm_virtgpu_3d_transfer_from_host)
+#define DRM_IOCTL_VIRTGPU_TRANSFER_TO_HOST DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_TRANSFER_TO_HOST, struct drm_virtgpu_3d_transfer_to_host)
+#define DRM_IOCTL_VIRTGPU_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_WAIT, struct drm_virtgpu_3d_wait)
+#define DRM_IOCTL_VIRTGPU_GET_CAPS DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_GET_CAPS, struct drm_virtgpu_get_caps)
+#define DRM_IOCTL_VIRTGPU_RESOURCE_CREATE_BLOB DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_RESOURCE_CREATE_BLOB, struct drm_virtgpu_resource_create_blob)
+#define DRM_IOCTL_VIRTGPU_CONTEXT_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_CONTEXT_INIT, struct drm_virtgpu_context_init)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/drm/vmwgfx_drm.h b/x86_64-linux-musl/include/drm/vmwgfx_drm.h
new file mode 100644
index 0000000..f3a67e1
--- /dev/null
+++ b/x86_64-linux-musl/include/drm/vmwgfx_drm.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 __VMWGFX_DRM_H__
+#define __VMWGFX_DRM_H__
+#include "drm.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DRM_VMW_MAX_SURFACE_FACES 6
+#define DRM_VMW_MAX_MIP_LEVELS 24
+#define DRM_VMW_GET_PARAM 0
+#define DRM_VMW_ALLOC_DMABUF 1
+#define DRM_VMW_ALLOC_BO 1
+#define DRM_VMW_UNREF_DMABUF 2
+#define DRM_VMW_HANDLE_CLOSE 2
+#define DRM_VMW_CURSOR_BYPASS 3
+#define DRM_VMW_CONTROL_STREAM 4
+#define DRM_VMW_CLAIM_STREAM 5
+#define DRM_VMW_UNREF_STREAM 6
+#define DRM_VMW_CREATE_CONTEXT 7
+#define DRM_VMW_UNREF_CONTEXT 8
+#define DRM_VMW_CREATE_SURFACE 9
+#define DRM_VMW_UNREF_SURFACE 10
+#define DRM_VMW_REF_SURFACE 11
+#define DRM_VMW_EXECBUF 12
+#define DRM_VMW_GET_3D_CAP 13
+#define DRM_VMW_FENCE_WAIT 14
+#define DRM_VMW_FENCE_SIGNALED 15
+#define DRM_VMW_FENCE_UNREF 16
+#define DRM_VMW_FENCE_EVENT 17
+#define DRM_VMW_PRESENT 18
+#define DRM_VMW_PRESENT_READBACK 19
+#define DRM_VMW_UPDATE_LAYOUT 20
+#define DRM_VMW_CREATE_SHADER 21
+#define DRM_VMW_UNREF_SHADER 22
+#define DRM_VMW_GB_SURFACE_CREATE 23
+#define DRM_VMW_GB_SURFACE_REF 24
+#define DRM_VMW_SYNCCPU 25
+#define DRM_VMW_CREATE_EXTENDED_CONTEXT 26
+#define DRM_VMW_GB_SURFACE_CREATE_EXT 27
+#define DRM_VMW_GB_SURFACE_REF_EXT 28
+#define DRM_VMW_MSG 29
+#define DRM_VMW_MKSSTAT_RESET 30
+#define DRM_VMW_MKSSTAT_ADD 31
+#define DRM_VMW_MKSSTAT_REMOVE 32
+#define DRM_VMW_PARAM_NUM_STREAMS 0
+#define DRM_VMW_PARAM_NUM_FREE_STREAMS 1
+#define DRM_VMW_PARAM_3D 2
+#define DRM_VMW_PARAM_HW_CAPS 3
+#define DRM_VMW_PARAM_FIFO_CAPS 4
+#define DRM_VMW_PARAM_MAX_FB_SIZE 5
+#define DRM_VMW_PARAM_FIFO_HW_VERSION 6
+#define DRM_VMW_PARAM_MAX_SURF_MEMORY 7
+#define DRM_VMW_PARAM_3D_CAPS_SIZE 8
+#define DRM_VMW_PARAM_MAX_MOB_MEMORY 9
+#define DRM_VMW_PARAM_MAX_MOB_SIZE 10
+#define DRM_VMW_PARAM_SCREEN_TARGET 11
+#define DRM_VMW_PARAM_DX 12
+#define DRM_VMW_PARAM_HW_CAPS2 13
+#define DRM_VMW_PARAM_SM4_1 14
+#define DRM_VMW_PARAM_SM5 15
+enum drm_vmw_handle_type {
+  DRM_VMW_HANDLE_LEGACY = 0,
+  DRM_VMW_HANDLE_PRIME = 1
+};
+struct drm_vmw_getparam_arg {
+  __u64 value;
+  __u32 param;
+  __u32 pad64;
+};
+struct drm_vmw_context_arg {
+  __s32 cid;
+  __u32 pad64;
+};
+struct drm_vmw_surface_create_req {
+  __u32 flags;
+  __u32 format;
+  __u32 mip_levels[DRM_VMW_MAX_SURFACE_FACES];
+  __u64 size_addr;
+  __s32 shareable;
+  __s32 scanout;
+};
+struct drm_vmw_surface_arg {
+  __s32 sid;
+  enum drm_vmw_handle_type handle_type;
+};
+struct drm_vmw_size {
+  __u32 width;
+  __u32 height;
+  __u32 depth;
+  __u32 pad64;
+};
+union drm_vmw_surface_create_arg {
+  struct drm_vmw_surface_arg rep;
+  struct drm_vmw_surface_create_req req;
+};
+union drm_vmw_surface_reference_arg {
+  struct drm_vmw_surface_create_req rep;
+  struct drm_vmw_surface_arg req;
+};
+#define DRM_VMW_EXECBUF_VERSION 2
+#define DRM_VMW_EXECBUF_FLAG_IMPORT_FENCE_FD (1 << 0)
+#define DRM_VMW_EXECBUF_FLAG_EXPORT_FENCE_FD (1 << 1)
+struct drm_vmw_execbuf_arg {
+  __u64 commands;
+  __u32 command_size;
+  __u32 throttle_us;
+  __u64 fence_rep;
+  __u32 version;
+  __u32 flags;
+  __u32 context_handle;
+  __s32 imported_fence_fd;
+};
+struct drm_vmw_fence_rep {
+  __u32 handle;
+  __u32 mask;
+  __u32 seqno;
+  __u32 passed_seqno;
+  __s32 fd;
+  __s32 error;
+};
+struct drm_vmw_alloc_bo_req {
+  __u32 size;
+  __u32 pad64;
+};
+#define drm_vmw_alloc_dmabuf_req drm_vmw_alloc_bo_req
+struct drm_vmw_bo_rep {
+  __u64 map_handle;
+  __u32 handle;
+  __u32 cur_gmr_id;
+  __u32 cur_gmr_offset;
+  __u32 pad64;
+};
+#define drm_vmw_dmabuf_rep drm_vmw_bo_rep
+union drm_vmw_alloc_bo_arg {
+  struct drm_vmw_alloc_bo_req req;
+  struct drm_vmw_bo_rep rep;
+};
+#define drm_vmw_alloc_dmabuf_arg drm_vmw_alloc_bo_arg
+struct drm_vmw_rect {
+  __s32 x;
+  __s32 y;
+  __u32 w;
+  __u32 h;
+};
+struct drm_vmw_control_stream_arg {
+  __u32 stream_id;
+  __u32 enabled;
+  __u32 flags;
+  __u32 color_key;
+  __u32 handle;
+  __u32 offset;
+  __s32 format;
+  __u32 size;
+  __u32 width;
+  __u32 height;
+  __u32 pitch[3];
+  __u32 pad64;
+  struct drm_vmw_rect src;
+  struct drm_vmw_rect dst;
+};
+#define DRM_VMW_CURSOR_BYPASS_ALL (1 << 0)
+#define DRM_VMW_CURSOR_BYPASS_FLAGS (1)
+struct drm_vmw_cursor_bypass_arg {
+  __u32 flags;
+  __u32 crtc_id;
+  __s32 xpos;
+  __s32 ypos;
+  __s32 xhot;
+  __s32 yhot;
+};
+struct drm_vmw_stream_arg {
+  __u32 stream_id;
+  __u32 pad64;
+};
+struct drm_vmw_get_3d_cap_arg {
+  __u64 buffer;
+  __u32 max_size;
+  __u32 pad64;
+};
+#define DRM_VMW_FENCE_FLAG_EXEC (1 << 0)
+#define DRM_VMW_FENCE_FLAG_QUERY (1 << 1)
+#define DRM_VMW_WAIT_OPTION_UNREF (1 << 0)
+struct drm_vmw_fence_wait_arg {
+  __u32 handle;
+  __s32 cookie_valid;
+  __u64 kernel_cookie;
+  __u64 timeout_us;
+  __s32 lazy;
+  __s32 flags;
+  __s32 wait_options;
+  __s32 pad64;
+};
+struct drm_vmw_fence_signaled_arg {
+  __u32 handle;
+  __u32 flags;
+  __s32 signaled;
+  __u32 passed_seqno;
+  __u32 signaled_flags;
+  __u32 pad64;
+};
+struct drm_vmw_fence_arg {
+  __u32 handle;
+  __u32 pad64;
+};
+#define DRM_VMW_EVENT_FENCE_SIGNALED 0x80000000
+struct drm_vmw_event_fence {
+  struct drm_event base;
+  __u64 user_data;
+  __u32 tv_sec;
+  __u32 tv_usec;
+};
+#define DRM_VMW_FE_FLAG_REQ_TIME (1 << 0)
+struct drm_vmw_fence_event_arg {
+  __u64 fence_rep;
+  __u64 user_data;
+  __u32 handle;
+  __u32 flags;
+};
+struct drm_vmw_present_arg {
+  __u32 fb_id;
+  __u32 sid;
+  __s32 dest_x;
+  __s32 dest_y;
+  __u64 clips_ptr;
+  __u32 num_clips;
+  __u32 pad64;
+};
+struct drm_vmw_present_readback_arg {
+  __u32 fb_id;
+  __u32 num_clips;
+  __u64 clips_ptr;
+  __u64 fence_rep;
+};
+struct drm_vmw_update_layout_arg {
+  __u32 num_outputs;
+  __u32 pad64;
+  __u64 rects;
+};
+enum drm_vmw_shader_type {
+  drm_vmw_shader_type_vs = 0,
+  drm_vmw_shader_type_ps,
+};
+struct drm_vmw_shader_create_arg {
+  enum drm_vmw_shader_type shader_type;
+  __u32 size;
+  __u32 buffer_handle;
+  __u32 shader_handle;
+  __u64 offset;
+};
+struct drm_vmw_shader_arg {
+  __u32 handle;
+  __u32 pad64;
+};
+enum drm_vmw_surface_flags {
+  drm_vmw_surface_flag_shareable = (1 << 0),
+  drm_vmw_surface_flag_scanout = (1 << 1),
+  drm_vmw_surface_flag_create_buffer = (1 << 2),
+  drm_vmw_surface_flag_coherent = (1 << 3),
+};
+struct drm_vmw_gb_surface_create_req {
+  __u32 svga3d_flags;
+  __u32 format;
+  __u32 mip_levels;
+  enum drm_vmw_surface_flags drm_surface_flags;
+  __u32 multisample_count;
+  __u32 autogen_filter;
+  __u32 buffer_handle;
+  __u32 array_size;
+  struct drm_vmw_size base_size;
+};
+struct drm_vmw_gb_surface_create_rep {
+  __u32 handle;
+  __u32 backup_size;
+  __u32 buffer_handle;
+  __u32 buffer_size;
+  __u64 buffer_map_handle;
+};
+union drm_vmw_gb_surface_create_arg {
+  struct drm_vmw_gb_surface_create_rep rep;
+  struct drm_vmw_gb_surface_create_req req;
+};
+struct drm_vmw_gb_surface_ref_rep {
+  struct drm_vmw_gb_surface_create_req creq;
+  struct drm_vmw_gb_surface_create_rep crep;
+};
+union drm_vmw_gb_surface_reference_arg {
+  struct drm_vmw_gb_surface_ref_rep rep;
+  struct drm_vmw_surface_arg req;
+};
+enum drm_vmw_synccpu_flags {
+  drm_vmw_synccpu_read = (1 << 0),
+  drm_vmw_synccpu_write = (1 << 1),
+  drm_vmw_synccpu_dontblock = (1 << 2),
+  drm_vmw_synccpu_allow_cs = (1 << 3)
+};
+enum drm_vmw_synccpu_op {
+  drm_vmw_synccpu_grab,
+  drm_vmw_synccpu_release
+};
+struct drm_vmw_synccpu_arg {
+  enum drm_vmw_synccpu_op op;
+  enum drm_vmw_synccpu_flags flags;
+  __u32 handle;
+  __u32 pad64;
+};
+enum drm_vmw_extended_context {
+  drm_vmw_context_legacy,
+  drm_vmw_context_dx
+};
+union drm_vmw_extended_context_arg {
+  enum drm_vmw_extended_context req;
+  struct drm_vmw_context_arg rep;
+};
+struct drm_vmw_handle_close_arg {
+  __u32 handle;
+  __u32 pad64;
+};
+#define drm_vmw_unref_dmabuf_arg drm_vmw_handle_close_arg
+enum drm_vmw_surface_version {
+  drm_vmw_gb_surface_v1,
+};
+struct drm_vmw_gb_surface_create_ext_req {
+  struct drm_vmw_gb_surface_create_req base;
+  enum drm_vmw_surface_version version;
+  __u32 svga3d_flags_upper_32_bits;
+  __u32 multisample_pattern;
+  __u32 quality_level;
+  __u32 buffer_byte_stride;
+  __u32 must_be_zero;
+};
+union drm_vmw_gb_surface_create_ext_arg {
+  struct drm_vmw_gb_surface_create_rep rep;
+  struct drm_vmw_gb_surface_create_ext_req req;
+};
+struct drm_vmw_gb_surface_ref_ext_rep {
+  struct drm_vmw_gb_surface_create_ext_req creq;
+  struct drm_vmw_gb_surface_create_rep crep;
+};
+union drm_vmw_gb_surface_reference_ext_arg {
+  struct drm_vmw_gb_surface_ref_ext_rep rep;
+  struct drm_vmw_surface_arg req;
+};
+struct drm_vmw_msg_arg {
+  __u64 send;
+  __u64 receive;
+  __s32 send_only;
+  __u32 receive_len;
+};
+struct drm_vmw_mksstat_add_arg {
+  __u64 stat;
+  __u64 info;
+  __u64 strs;
+  __u64 stat_len;
+  __u64 info_len;
+  __u64 strs_len;
+  __u64 description;
+  __u64 id;
+};
+struct drm_vmw_mksstat_remove_arg {
+  __u64 id;
+};
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/elf.h b/x86_64-linux-musl/include/elf.h
new file mode 100644
index 0000000..5170f3e
--- /dev/null
+++ b/x86_64-linux-musl/include/elf.h
@@ -0,0 +1,3295 @@
+#ifndef _ELF_H
+#define _ELF_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+
+typedef uint16_t Elf32_Half;
+typedef uint16_t Elf64_Half;
+
+typedef uint32_t Elf32_Word;
+typedef	int32_t  Elf32_Sword;
+typedef uint32_t Elf64_Word;
+typedef	int32_t  Elf64_Sword;
+
+typedef uint64_t Elf32_Xword;
+typedef	int64_t  Elf32_Sxword;
+typedef uint64_t Elf64_Xword;
+typedef	int64_t  Elf64_Sxword;
+
+typedef uint32_t Elf32_Addr;
+typedef uint64_t Elf64_Addr;
+
+typedef uint32_t Elf32_Off;
+typedef uint64_t Elf64_Off;
+
+typedef uint16_t Elf32_Section;
+typedef uint16_t Elf64_Section;
+
+typedef Elf32_Half Elf32_Versym;
+typedef Elf64_Half Elf64_Versym;
+
+#define EI_NIDENT (16)
+
+typedef struct {
+  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 {
+  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 EI_MAG0		0
+#define ELFMAG0		0x7f
+
+#define EI_MAG1		1
+#define ELFMAG1		'E'
+
+#define EI_MAG2		2
+#define ELFMAG2		'L'
+
+#define EI_MAG3		3
+#define ELFMAG3		'F'
+
+
+#define	ELFMAG		"\177ELF"
+#define	SELFMAG		4
+
+#define EI_CLASS	4
+#define ELFCLASSNONE	0
+#define ELFCLASS32	1
+#define ELFCLASS64	2
+#define ELFCLASSNUM	3
+
+#define EI_DATA		5
+#define ELFDATANONE	0
+#define ELFDATA2LSB	1
+#define ELFDATA2MSB	2
+#define ELFDATANUM	3
+
+#define EI_VERSION	6
+
+
+#define EI_OSABI	7
+#define ELFOSABI_NONE		0
+#define ELFOSABI_SYSV		0
+#define ELFOSABI_HPUX		1
+#define ELFOSABI_NETBSD		2
+#define ELFOSABI_LINUX		3
+#define ELFOSABI_GNU		3
+#define ELFOSABI_SOLARIS	6
+#define ELFOSABI_AIX		7
+#define ELFOSABI_IRIX		8
+#define ELFOSABI_FREEBSD	9
+#define ELFOSABI_TRU64		10
+#define ELFOSABI_MODESTO	11
+#define ELFOSABI_OPENBSD	12
+#define ELFOSABI_ARM		97
+#define ELFOSABI_STANDALONE	255
+
+#define EI_ABIVERSION	8
+
+#define EI_PAD		9
+
+
+
+#define ET_NONE		0
+#define ET_REL		1
+#define ET_EXEC		2
+#define ET_DYN		3
+#define ET_CORE		4
+#define	ET_NUM		5
+#define ET_LOOS		0xfe00
+#define ET_HIOS		0xfeff
+#define ET_LOPROC	0xff00
+#define ET_HIPROC	0xffff
+
+
+
+#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_860		 7
+#define EM_MIPS		 8
+#define EM_S370		 9
+#define EM_MIPS_RS3_LE	10
+
+#define EM_PARISC	15
+#define EM_VPP500	17
+#define EM_SPARC32PLUS	18
+#define EM_960		19
+#define EM_PPC		20
+#define EM_PPC64	21
+#define EM_S390		22
+
+#define EM_V800		36
+#define EM_FR20		37
+#define EM_RH32		38
+#define EM_RCE		39
+#define EM_ARM		40
+#define EM_FAKE_ALPHA	41
+#define EM_SH		42
+#define EM_SPARCV9	43
+#define EM_TRICORE	44
+#define EM_ARC		45
+#define EM_H8_300	46
+#define EM_H8_300H	47
+#define EM_H8S		48
+#define EM_H8_500	49
+#define EM_IA_64	50
+#define EM_MIPS_X	51
+#define EM_COLDFIRE	52
+#define EM_68HC12	53
+#define EM_MMA		54
+#define EM_PCP		55
+#define EM_NCPU		56
+#define EM_NDR1		57
+#define EM_STARCORE	58
+#define EM_ME16		59
+#define EM_ST100	60
+#define EM_TINYJ	61
+#define EM_X86_64	62
+#define EM_PDSP		63
+
+#define EM_FX66		66
+#define EM_ST9PLUS	67
+#define EM_ST7		68
+#define EM_68HC16	69
+#define EM_68HC11	70
+#define EM_68HC08	71
+#define EM_68HC05	72
+#define EM_SVX		73
+#define EM_ST19		74
+#define EM_VAX		75
+#define EM_CRIS		76
+#define EM_JAVELIN	77
+#define EM_FIREPATH	78
+#define EM_ZSP		79
+#define EM_MMIX		80
+#define EM_HUANY	81
+#define EM_PRISM	82
+#define EM_AVR		83
+#define EM_FR30		84
+#define EM_D10V		85
+#define EM_D30V		86
+#define EM_V850		87
+#define EM_M32R		88
+#define EM_MN10300	89
+#define EM_MN10200	90
+#define EM_PJ		91
+#define EM_OR1K		92
+#define EM_OPENRISC	92
+#define EM_ARC_A5	93
+#define EM_ARC_COMPACT	93
+#define EM_XTENSA	94
+#define EM_VIDEOCORE	95
+#define EM_TMM_GPP	96
+#define EM_NS32K	97
+#define EM_TPC		98
+#define EM_SNP1K	99
+#define EM_ST200	100
+#define EM_IP2K		101
+#define EM_MAX		102
+#define EM_CR		103
+#define EM_F2MC16	104
+#define EM_MSP430	105
+#define EM_BLACKFIN	106
+#define EM_SE_C33	107
+#define EM_SEP		108
+#define EM_ARCA		109
+#define EM_UNICORE	110
+#define EM_EXCESS	111
+#define EM_DXP		112
+#define EM_ALTERA_NIOS2 113
+#define EM_CRX		114
+#define EM_XGATE	115
+#define EM_C166		116
+#define EM_M16C		117
+#define EM_DSPIC30F	118
+#define EM_CE		119
+#define EM_M32C		120
+#define EM_TSK3000	131
+#define EM_RS08		132
+#define EM_SHARC	133
+#define EM_ECOG2	134
+#define EM_SCORE7	135
+#define EM_DSP24	136
+#define EM_VIDEOCORE3	137
+#define EM_LATTICEMICO32 138
+#define EM_SE_C17	139
+#define EM_TI_C6000	140
+#define EM_TI_C2000	141
+#define EM_TI_C5500	142
+#define EM_TI_ARP32	143
+#define EM_TI_PRU	144
+#define EM_MMDSP_PLUS	160
+#define EM_CYPRESS_M8C	161
+#define EM_R32C		162
+#define EM_TRIMEDIA	163
+#define EM_QDSP6	164
+#define EM_8051		165
+#define EM_STXP7X	166
+#define EM_NDS32	167
+#define EM_ECOG1X	168
+#define EM_MAXQ30	169
+#define EM_XIMO16	170
+#define EM_MANIK	171
+#define EM_CRAYNV2	172
+#define EM_RX		173
+#define EM_METAG	174
+#define EM_MCST_ELBRUS	175
+#define EM_ECOG16	176
+#define EM_CR16		177
+#define EM_ETPU		178
+#define EM_SLE9X	179
+#define EM_L10M		180
+#define EM_K10M		181
+#define EM_AARCH64	183
+#define EM_AVR32	185
+#define EM_STM8		186
+#define EM_TILE64	187
+#define EM_TILEPRO	188
+#define EM_MICROBLAZE	189
+#define EM_CUDA		190
+#define EM_TILEGX	191
+#define EM_CLOUDSHIELD	192
+#define EM_COREA_1ST	193
+#define EM_COREA_2ND	194
+#define EM_ARC_COMPACT2	195
+#define EM_OPEN8	196
+#define EM_RL78		197
+#define EM_VIDEOCORE5	198
+#define EM_78KOR	199
+#define EM_56800EX	200
+#define EM_BA1		201
+#define EM_BA2		202
+#define EM_XCORE	203
+#define EM_MCHP_PIC	204
+#define EM_KM32		210
+#define EM_KMX32	211
+#define EM_EMX16	212
+#define EM_EMX8		213
+#define EM_KVARC	214
+#define EM_CDP		215
+#define EM_COGE		216
+#define EM_COOL		217
+#define EM_NORC		218
+#define EM_CSR_KALIMBA	219
+#define EM_Z80		220
+#define EM_VISIUM	221
+#define EM_FT32		222
+#define EM_MOXIE	223
+#define EM_AMDGPU	224
+#define EM_RISCV	243
+#define EM_BPF		247
+#define EM_CSKY		252
+#define EM_NUM		253
+
+#define EM_ALPHA	0x9026
+
+#define EV_NONE		0
+#define EV_CURRENT	1
+#define EV_NUM		2
+
+typedef struct {
+  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_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 SHN_UNDEF	0
+#define SHN_LORESERVE	0xff00
+#define SHN_LOPROC	0xff00
+#define SHN_BEFORE	0xff00
+
+#define SHN_AFTER	0xff01
+
+#define SHN_HIPROC	0xff1f
+#define SHN_LOOS	0xff20
+#define SHN_HIOS	0xff3f
+#define SHN_ABS		0xfff1
+#define SHN_COMMON	0xfff2
+#define SHN_XINDEX	0xffff
+#define SHN_HIRESERVE	0xffff
+
+
+
+#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_INIT_ARRAY	  14
+#define SHT_FINI_ARRAY	  15
+#define SHT_PREINIT_ARRAY 16
+#define SHT_GROUP	  17
+#define SHT_SYMTAB_SHNDX  18
+#define	SHT_NUM		  19
+#define SHT_LOOS	  0x60000000
+#define SHT_GNU_ATTRIBUTES 0x6ffffff5
+#define SHT_GNU_HASH	  0x6ffffff6
+#define SHT_GNU_LIBLIST	  0x6ffffff7
+#define SHT_CHECKSUM	  0x6ffffff8
+#define SHT_LOSUNW	  0x6ffffffa
+#define SHT_SUNW_move	  0x6ffffffa
+#define SHT_SUNW_COMDAT   0x6ffffffb
+#define SHT_SUNW_syminfo  0x6ffffffc
+#define SHT_GNU_verdef	  0x6ffffffd
+#define SHT_GNU_verneed	  0x6ffffffe
+#define SHT_GNU_versym	  0x6fffffff
+#define SHT_HISUNW	  0x6fffffff
+#define SHT_HIOS	  0x6fffffff
+#define SHT_LOPROC	  0x70000000
+#define SHT_HIPROC	  0x7fffffff
+#define SHT_LOUSER	  0x80000000
+#define SHT_HIUSER	  0x8fffffff
+
+#define SHF_WRITE	     (1 << 0)
+#define SHF_ALLOC	     (1 << 1)
+#define SHF_EXECINSTR	     (1 << 2)
+#define SHF_MERGE	     (1 << 4)
+#define SHF_STRINGS	     (1 << 5)
+#define SHF_INFO_LINK	     (1 << 6)
+#define SHF_LINK_ORDER	     (1 << 7)
+#define SHF_OS_NONCONFORMING (1 << 8)
+
+#define SHF_GROUP	     (1 << 9)
+#define SHF_TLS		     (1 << 10)
+#define SHF_COMPRESSED	     (1 << 11)
+#define SHF_MASKOS	     0x0ff00000
+#define SHF_MASKPROC	     0xf0000000
+#define SHF_ORDERED	     (1 << 30)
+#define SHF_EXCLUDE	     (1U << 31)
+
+typedef struct {
+  Elf32_Word	ch_type;
+  Elf32_Word	ch_size;
+  Elf32_Word	ch_addralign;
+} Elf32_Chdr;
+
+typedef struct {
+  Elf64_Word	ch_type;
+  Elf64_Word	ch_reserved;
+  Elf64_Xword	ch_size;
+  Elf64_Xword	ch_addralign;
+} Elf64_Chdr;
+
+#define ELFCOMPRESS_ZLIB	1
+#define ELFCOMPRESS_LOOS	0x60000000
+#define ELFCOMPRESS_HIOS	0x6fffffff
+#define ELFCOMPRESS_LOPROC	0x70000000
+#define ELFCOMPRESS_HIPROC	0x7fffffff
+
+
+#define GRP_COMDAT	0x1
+
+typedef struct {
+  Elf32_Word	st_name;
+  Elf32_Addr	st_value;
+  Elf32_Word	st_size;
+  unsigned char	st_info;
+  unsigned char	st_other;
+  Elf32_Section	st_shndx;
+} Elf32_Sym;
+
+typedef struct {
+  Elf64_Word	st_name;
+  unsigned char	st_info;
+  unsigned char st_other;
+  Elf64_Section	st_shndx;
+  Elf64_Addr	st_value;
+  Elf64_Xword	st_size;
+} Elf64_Sym;
+
+typedef struct {
+  Elf32_Half si_boundto;
+  Elf32_Half si_flags;
+} Elf32_Syminfo;
+
+typedef struct {
+  Elf64_Half si_boundto;
+  Elf64_Half si_flags;
+} Elf64_Syminfo;
+
+#define SYMINFO_BT_SELF		0xffff
+#define SYMINFO_BT_PARENT	0xfffe
+#define SYMINFO_BT_LOWRESERVE	0xff00
+
+#define SYMINFO_FLG_DIRECT	0x0001
+#define SYMINFO_FLG_PASSTHRU	0x0002
+#define SYMINFO_FLG_COPY	0x0004
+#define SYMINFO_FLG_LAZYLOAD	0x0008
+
+#define SYMINFO_NONE		0
+#define SYMINFO_CURRENT		1
+#define SYMINFO_NUM		2
+
+#define ELF32_ST_BIND(val)		(((unsigned char) (val)) >> 4)
+#define ELF32_ST_TYPE(val)		((val) & 0xf)
+#define ELF32_ST_INFO(bind, type)	(((bind) << 4) + ((type) & 0xf))
+
+#define ELF64_ST_BIND(val)		ELF32_ST_BIND (val)
+#define ELF64_ST_TYPE(val)		ELF32_ST_TYPE (val)
+#define ELF64_ST_INFO(bind, type)	ELF32_ST_INFO ((bind), (type))
+
+#define STB_LOCAL	0
+#define STB_GLOBAL	1
+#define STB_WEAK	2
+#define	STB_NUM		3
+#define STB_LOOS	10
+#define STB_GNU_UNIQUE	10
+#define STB_HIOS	12
+#define STB_LOPROC	13
+#define STB_HIPROC	15
+
+#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	STT_NUM		7
+#define STT_LOOS	10
+#define STT_GNU_IFUNC	10
+#define STT_HIOS	12
+#define STT_LOPROC	13
+#define STT_HIPROC	15
+
+#define STN_UNDEF	0
+
+#define ELF32_ST_VISIBILITY(o)	((o) & 0x03)
+#define ELF64_ST_VISIBILITY(o)	ELF32_ST_VISIBILITY (o)
+
+#define STV_DEFAULT	0
+#define STV_INTERNAL	1
+#define STV_HIDDEN	2
+#define STV_PROTECTED	3
+
+
+
+
+typedef struct {
+  Elf32_Addr	r_offset;
+  Elf32_Word	r_info;
+} Elf32_Rel;
+
+typedef struct {
+  Elf64_Addr	r_offset;
+  Elf64_Xword	r_info;
+} Elf64_Rel;
+
+
+
+typedef struct {
+  Elf32_Addr	r_offset;
+  Elf32_Word	r_info;
+  Elf32_Sword	r_addend;
+} Elf32_Rela;
+
+typedef struct {
+  Elf64_Addr	r_offset;
+  Elf64_Xword	r_info;
+  Elf64_Sxword	r_addend;
+} Elf64_Rela;
+
+
+
+#define ELF32_R_SYM(val)		((val) >> 8)
+#define ELF32_R_TYPE(val)		((val) & 0xff)
+#define ELF32_R_INFO(sym, type)		(((sym) << 8) + ((type) & 0xff))
+
+#define ELF64_R_SYM(i)			((i) >> 32)
+#define ELF64_R_TYPE(i)			((i) & 0xffffffff)
+#define ELF64_R_INFO(sym,type)		((((Elf64_Xword) (sym)) << 32) + (type))
+
+
+
+typedef struct {
+  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_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	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_NUM		8
+#define PT_LOOS		0x60000000
+#define PT_GNU_EH_FRAME	0x6474e550
+#define PT_GNU_STACK	0x6474e551
+#define PT_GNU_RELRO	0x6474e552
+#define PT_GNU_PROPERTY	0x6474e553
+#define PT_LOSUNW	0x6ffffffa
+#define PT_SUNWBSS	0x6ffffffa
+#define PT_SUNWSTACK	0x6ffffffb
+#define PT_HISUNW	0x6fffffff
+#define PT_HIOS		0x6fffffff
+#define PT_LOPROC	0x70000000
+#define PT_HIPROC	0x7fffffff
+
+
+#define PN_XNUM 0xffff
+
+
+#define PF_X		(1 << 0)
+#define PF_W		(1 << 1)
+#define PF_R		(1 << 2)
+#define PF_MASKOS	0x0ff00000
+#define PF_MASKPROC	0xf0000000
+
+
+
+#define NT_PRSTATUS	1
+#define NT_PRFPREG	2
+#define NT_FPREGSET	2
+#define NT_PRPSINFO	3
+#define NT_PRXREG	4
+#define NT_TASKSTRUCT	4
+#define NT_PLATFORM	5
+#define NT_AUXV		6
+#define NT_GWINDOWS	7
+#define NT_ASRS		8
+#define NT_PSTATUS	10
+#define NT_PSINFO	13
+#define NT_PRCRED	14
+#define NT_UTSNAME	15
+#define NT_LWPSTATUS	16
+#define NT_LWPSINFO	17
+#define NT_PRFPXREG	20
+#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_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_METAG_CBUF	0x500
+#define NT_METAG_RPIPE	0x501
+#define NT_METAG_TLS	0x502
+#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_VERSION	1
+
+
+
+
+typedef struct {
+  Elf32_Sword d_tag;
+  union {
+      Elf32_Word 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 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_BIND_NOW	24
+#define	DT_INIT_ARRAY	25
+#define	DT_FINI_ARRAY	26
+#define	DT_INIT_ARRAYSZ	27
+#define	DT_FINI_ARRAYSZ	28
+#define DT_RUNPATH	29
+#define DT_FLAGS	30
+#define DT_ENCODING	32
+#define DT_PREINIT_ARRAY 32
+#define DT_PREINIT_ARRAYSZ 33
+#define DT_SYMTAB_SHNDX	34
+#define	DT_NUM		35
+#define DT_LOOS		0x6000000d
+#define DT_HIOS		0x6ffff000
+#define DT_LOPROC	0x70000000
+#define DT_HIPROC	0x7fffffff
+#define	DT_PROCNUM	DT_MIPS_NUM
+
+#define DT_VALRNGLO	0x6ffffd00
+#define DT_GNU_PRELINKED 0x6ffffdf5
+#define DT_GNU_CONFLICTSZ 0x6ffffdf6
+#define DT_GNU_LIBLISTSZ 0x6ffffdf7
+#define DT_CHECKSUM	0x6ffffdf8
+#define DT_PLTPADSZ	0x6ffffdf9
+#define DT_MOVEENT	0x6ffffdfa
+#define DT_MOVESZ	0x6ffffdfb
+#define DT_FEATURE_1	0x6ffffdfc
+#define DT_POSFLAG_1	0x6ffffdfd
+
+#define DT_SYMINSZ	0x6ffffdfe
+#define DT_SYMINENT	0x6ffffdff
+#define DT_VALRNGHI	0x6ffffdff
+#define DT_VALTAGIDX(tag)	(DT_VALRNGHI - (tag))
+#define DT_VALNUM 12
+
+#define DT_ADDRRNGLO	0x6ffffe00
+#define DT_GNU_HASH	0x6ffffef5
+#define DT_TLSDESC_PLT	0x6ffffef6
+#define DT_TLSDESC_GOT	0x6ffffef7
+#define DT_GNU_CONFLICT	0x6ffffef8
+#define DT_GNU_LIBLIST	0x6ffffef9
+#define DT_CONFIG	0x6ffffefa
+#define DT_DEPAUDIT	0x6ffffefb
+#define DT_AUDIT	0x6ffffefc
+#define	DT_PLTPAD	0x6ffffefd
+#define	DT_MOVETAB	0x6ffffefe
+#define DT_SYMINFO	0x6ffffeff
+#define DT_ADDRRNGHI	0x6ffffeff
+#define DT_ADDRTAGIDX(tag)	(DT_ADDRRNGHI - (tag))
+#define DT_ADDRNUM 11
+
+
+
+#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 DT_VERSIONTAGIDX(tag)	(DT_VERNEEDNUM - (tag))
+#define DT_VERSIONTAGNUM 16
+
+
+
+#define DT_AUXILIARY    0x7ffffffd
+#define DT_FILTER       0x7fffffff
+#define DT_EXTRATAGIDX(tag)	((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1)
+#define DT_EXTRANUM	3
+
+
+#define DF_ORIGIN	0x00000001
+#define DF_SYMBOLIC	0x00000002
+#define DF_TEXTREL	0x00000004
+#define DF_BIND_NOW	0x00000008
+#define DF_STATIC_TLS	0x00000010
+
+
+
+#define DF_1_NOW	0x00000001
+#define DF_1_GLOBAL	0x00000002
+#define DF_1_GROUP	0x00000004
+#define DF_1_NODELETE	0x00000008
+#define DF_1_LOADFLTR	0x00000010
+#define DF_1_INITFIRST	0x00000020
+#define DF_1_NOOPEN	0x00000040
+#define DF_1_ORIGIN	0x00000080
+#define DF_1_DIRECT	0x00000100
+#define DF_1_TRANS	0x00000200
+#define DF_1_INTERPOSE	0x00000400
+#define DF_1_NODEFLIB	0x00000800
+#define DF_1_NODUMP	0x00001000
+#define DF_1_CONFALT	0x00002000
+#define DF_1_ENDFILTEE	0x00004000
+#define	DF_1_DISPRELDNE	0x00008000
+#define	DF_1_DISPRELPND	0x00010000
+#define	DF_1_NODIRECT	0x00020000
+#define	DF_1_IGNMULDEF	0x00040000
+#define	DF_1_NOKSYMS	0x00080000
+#define	DF_1_NOHDR	0x00100000
+#define	DF_1_EDITED	0x00200000
+#define	DF_1_NORELOC	0x00400000
+#define	DF_1_SYMINTPOSE	0x00800000
+#define	DF_1_GLOBAUDIT	0x01000000
+#define	DF_1_SINGLETON	0x02000000
+#define	DF_1_STUB	0x04000000
+#define	DF_1_PIE	0x08000000
+
+#define DTF_1_PARINIT	0x00000001
+#define DTF_1_CONFEXP	0x00000002
+
+
+#define DF_P1_LAZYLOAD	0x00000001
+#define DF_P1_GROUPPERM	0x00000002
+
+
+
+
+typedef struct {
+  Elf32_Half	vd_version;
+  Elf32_Half	vd_flags;
+  Elf32_Half	vd_ndx;
+  Elf32_Half	vd_cnt;
+  Elf32_Word	vd_hash;
+  Elf32_Word	vd_aux;
+  Elf32_Word	vd_next;
+} Elf32_Verdef;
+
+typedef struct {
+  Elf64_Half	vd_version;
+  Elf64_Half	vd_flags;
+  Elf64_Half	vd_ndx;
+  Elf64_Half	vd_cnt;
+  Elf64_Word	vd_hash;
+  Elf64_Word	vd_aux;
+  Elf64_Word	vd_next;
+} Elf64_Verdef;
+
+
+
+#define VER_DEF_NONE	0
+#define VER_DEF_CURRENT	1
+#define VER_DEF_NUM	2
+
+
+#define VER_FLG_BASE	0x1
+#define VER_FLG_WEAK	0x2
+
+
+#define	VER_NDX_LOCAL		0
+#define	VER_NDX_GLOBAL		1
+#define	VER_NDX_LORESERVE	0xff00
+#define	VER_NDX_ELIMINATE	0xff01
+
+
+
+typedef struct {
+  Elf32_Word	vda_name;
+  Elf32_Word	vda_next;
+} Elf32_Verdaux;
+
+typedef struct {
+  Elf64_Word	vda_name;
+  Elf64_Word	vda_next;
+} Elf64_Verdaux;
+
+
+
+
+typedef struct {
+  Elf32_Half	vn_version;
+  Elf32_Half	vn_cnt;
+  Elf32_Word	vn_file;
+  Elf32_Word	vn_aux;
+  Elf32_Word	vn_next;
+} Elf32_Verneed;
+
+typedef struct {
+  Elf64_Half	vn_version;
+  Elf64_Half	vn_cnt;
+  Elf64_Word	vn_file;
+  Elf64_Word	vn_aux;
+  Elf64_Word	vn_next;
+} Elf64_Verneed;
+
+
+
+#define VER_NEED_NONE	 0
+#define VER_NEED_CURRENT 1
+#define VER_NEED_NUM	 2
+
+
+
+typedef struct {
+  Elf32_Word	vna_hash;
+  Elf32_Half	vna_flags;
+  Elf32_Half	vna_other;
+  Elf32_Word	vna_name;
+  Elf32_Word	vna_next;
+} Elf32_Vernaux;
+
+typedef struct {
+  Elf64_Word	vna_hash;
+  Elf64_Half	vna_flags;
+  Elf64_Half	vna_other;
+  Elf64_Word	vna_name;
+  Elf64_Word	vna_next;
+} Elf64_Vernaux;
+
+
+
+#define VER_FLG_WEAK	0x2
+
+
+
+typedef struct {
+  uint32_t a_type;
+  union {
+      uint32_t a_val;
+  } a_un;
+} Elf32_auxv_t;
+
+typedef struct {
+  uint64_t a_type;
+  union {
+      uint64_t a_val;
+  } a_un;
+} Elf64_auxv_t;
+
+
+
+#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_CLKTCK	17
+
+
+#define AT_PLATFORM	15
+#define AT_HWCAP	16
+
+
+
+
+#define AT_FPUCW	18
+
+
+#define AT_DCACHEBSIZE	19
+#define AT_ICACHEBSIZE	20
+#define AT_UCACHEBSIZE	21
+
+
+
+#define AT_IGNOREPPC	22
+
+#define	AT_SECURE	23
+
+#define AT_BASE_PLATFORM 24
+
+#define AT_RANDOM	25
+
+#define AT_HWCAP2	26
+
+#define AT_EXECFN	31
+
+
+
+#define AT_SYSINFO	32
+#define AT_SYSINFO_EHDR	33
+
+
+
+#define AT_L1I_CACHESHAPE	34
+#define AT_L1D_CACHESHAPE	35
+#define AT_L2_CACHESHAPE	36
+#define AT_L3_CACHESHAPE	37
+
+#define AT_L1I_CACHESIZE	40
+#define AT_L1I_CACHEGEOMETRY	41
+#define AT_L1D_CACHESIZE	42
+#define AT_L1D_CACHEGEOMETRY	43
+#define AT_L2_CACHESIZE		44
+#define AT_L2_CACHEGEOMETRY	45
+#define AT_L3_CACHESIZE		46
+#define AT_L3_CACHEGEOMETRY	47
+
+#define AT_MINSIGSTKSZ		51
+
+
+typedef struct {
+  Elf32_Word n_namesz;
+  Elf32_Word n_descsz;
+  Elf32_Word n_type;
+} Elf32_Nhdr;
+
+typedef struct {
+  Elf64_Word n_namesz;
+  Elf64_Word n_descsz;
+  Elf64_Word n_type;
+} Elf64_Nhdr;
+
+
+
+
+#define ELF_NOTE_SOLARIS	"SUNW Solaris"
+
+
+#define ELF_NOTE_GNU		"GNU"
+
+
+
+
+
+#define ELF_NOTE_PAGESIZE_HINT	1
+
+
+#define NT_GNU_ABI_TAG	1
+#define ELF_NOTE_ABI	NT_GNU_ABI_TAG
+
+
+
+#define ELF_NOTE_OS_LINUX	0
+#define ELF_NOTE_OS_GNU		1
+#define ELF_NOTE_OS_SOLARIS2	2
+#define ELF_NOTE_OS_FREEBSD	3
+
+#define NT_GNU_BUILD_ID	3
+#define NT_GNU_GOLD_VERSION	4
+#define NT_GNU_PROPERTY_TYPE_0	5
+
+
+
+typedef struct {
+  Elf32_Xword m_value;
+  Elf32_Word m_info;
+  Elf32_Word m_poffset;
+  Elf32_Half m_repeat;
+  Elf32_Half m_stride;
+} Elf32_Move;
+
+typedef struct {
+  Elf64_Xword m_value;
+  Elf64_Xword m_info;
+  Elf64_Xword m_poffset;
+  Elf64_Half m_repeat;
+  Elf64_Half m_stride;
+} Elf64_Move;
+
+
+#define ELF32_M_SYM(info)	((info) >> 8)
+#define ELF32_M_SIZE(info)	((unsigned char) (info))
+#define ELF32_M_INFO(sym, size)	(((sym) << 8) + (unsigned char) (size))
+
+#define ELF64_M_SYM(info)	ELF32_M_SYM (info)
+#define ELF64_M_SIZE(info)	ELF32_M_SIZE (info)
+#define ELF64_M_INFO(sym, size)	ELF32_M_INFO (sym, size)
+
+#define EF_CPU32	0x00810000
+
+#define R_68K_NONE	0
+#define R_68K_32	1
+#define R_68K_16	2
+#define R_68K_8		3
+#define R_68K_PC32	4
+#define R_68K_PC16	5
+#define R_68K_PC8	6
+#define R_68K_GOT32	7
+#define R_68K_GOT16	8
+#define R_68K_GOT8	9
+#define R_68K_GOT32O	10
+#define R_68K_GOT16O	11
+#define R_68K_GOT8O	12
+#define R_68K_PLT32	13
+#define R_68K_PLT16	14
+#define R_68K_PLT8	15
+#define R_68K_PLT32O	16
+#define R_68K_PLT16O	17
+#define R_68K_PLT8O	18
+#define R_68K_COPY	19
+#define R_68K_GLOB_DAT	20
+#define R_68K_JMP_SLOT	21
+#define R_68K_RELATIVE	22
+#define R_68K_TLS_GD32	25
+#define R_68K_TLS_GD16	26
+#define R_68K_TLS_GD8	27
+#define R_68K_TLS_LDM32	28
+#define R_68K_TLS_LDM16	29
+#define R_68K_TLS_LDM8	30
+#define R_68K_TLS_LDO32	31
+#define R_68K_TLS_LDO16	32
+#define R_68K_TLS_LDO8	33
+#define R_68K_TLS_IE32	34
+#define R_68K_TLS_IE16	35
+#define R_68K_TLS_IE8	36
+#define R_68K_TLS_LE32	37
+#define R_68K_TLS_LE16	38
+#define R_68K_TLS_LE8	39
+#define R_68K_TLS_DTPMOD32	40
+#define R_68K_TLS_DTPREL32	41
+#define R_68K_TLS_TPREL32	42
+#define R_68K_NUM	43
+
+#define R_386_NONE	   0
+#define R_386_32	   1
+#define R_386_PC32	   2
+#define R_386_GOT32	   3
+#define R_386_PLT32	   4
+#define R_386_COPY	   5
+#define R_386_GLOB_DAT	   6
+#define R_386_JMP_SLOT	   7
+#define R_386_RELATIVE	   8
+#define R_386_GOTOFF	   9
+#define R_386_GOTPC	   10
+#define R_386_32PLT	   11
+#define R_386_TLS_TPOFF	   14
+#define R_386_TLS_IE	   15
+#define R_386_TLS_GOTIE	   16
+#define R_386_TLS_LE	   17
+#define R_386_TLS_GD	   18
+#define R_386_TLS_LDM	   19
+#define R_386_16	   20
+#define R_386_PC16	   21
+#define R_386_8		   22
+#define R_386_PC8	   23
+#define R_386_TLS_GD_32	   24
+#define R_386_TLS_GD_PUSH  25
+#define R_386_TLS_GD_CALL  26
+#define R_386_TLS_GD_POP   27
+#define R_386_TLS_LDM_32   28
+#define R_386_TLS_LDM_PUSH 29
+#define R_386_TLS_LDM_CALL 30
+#define R_386_TLS_LDM_POP  31
+#define R_386_TLS_LDO_32   32
+#define R_386_TLS_IE_32	   33
+#define R_386_TLS_LE_32	   34
+#define R_386_TLS_DTPMOD32 35
+#define R_386_TLS_DTPOFF32 36
+#define R_386_TLS_TPOFF32  37
+#define R_386_SIZE32       38
+#define R_386_TLS_GOTDESC  39
+#define R_386_TLS_DESC_CALL 40
+#define R_386_TLS_DESC     41
+#define R_386_IRELATIVE	   42
+#define R_386_GOT32X	   43
+#define R_386_NUM	   44
+
+
+
+
+
+#define STT_SPARC_REGISTER	13
+
+
+
+#define EF_SPARCV9_MM		3
+#define EF_SPARCV9_TSO		0
+#define EF_SPARCV9_PSO		1
+#define EF_SPARCV9_RMO		2
+#define EF_SPARC_LEDATA		0x800000
+#define EF_SPARC_EXT_MASK	0xFFFF00
+#define EF_SPARC_32PLUS		0x000100
+#define EF_SPARC_SUN_US1	0x000200
+#define EF_SPARC_HAL_R1		0x000400
+#define EF_SPARC_SUN_US3	0x000800
+
+
+
+#define R_SPARC_NONE		0
+#define R_SPARC_8		1
+#define R_SPARC_16		2
+#define R_SPARC_32		3
+#define R_SPARC_DISP8		4
+#define R_SPARC_DISP16		5
+#define R_SPARC_DISP32		6
+#define R_SPARC_WDISP30		7
+#define R_SPARC_WDISP22		8
+#define R_SPARC_HI22		9
+#define R_SPARC_22		10
+#define R_SPARC_13		11
+#define R_SPARC_LO10		12
+#define R_SPARC_GOT10		13
+#define R_SPARC_GOT13		14
+#define R_SPARC_GOT22		15
+#define R_SPARC_PC10		16
+#define R_SPARC_PC22		17
+#define R_SPARC_WPLT30		18
+#define R_SPARC_COPY		19
+#define R_SPARC_GLOB_DAT	20
+#define R_SPARC_JMP_SLOT	21
+#define R_SPARC_RELATIVE	22
+#define R_SPARC_UA32		23
+
+
+
+#define R_SPARC_PLT32		24
+#define R_SPARC_HIPLT22		25
+#define R_SPARC_LOPLT10		26
+#define R_SPARC_PCPLT32		27
+#define R_SPARC_PCPLT22		28
+#define R_SPARC_PCPLT10		29
+#define R_SPARC_10		30
+#define R_SPARC_11		31
+#define R_SPARC_64		32
+#define R_SPARC_OLO10		33
+#define R_SPARC_HH22		34
+#define R_SPARC_HM10		35
+#define R_SPARC_LM22		36
+#define R_SPARC_PC_HH22		37
+#define R_SPARC_PC_HM10		38
+#define R_SPARC_PC_LM22		39
+#define R_SPARC_WDISP16		40
+#define R_SPARC_WDISP19		41
+#define R_SPARC_GLOB_JMP	42
+#define R_SPARC_7		43
+#define R_SPARC_5		44
+#define R_SPARC_6		45
+#define R_SPARC_DISP64		46
+#define R_SPARC_PLT64		47
+#define R_SPARC_HIX22		48
+#define R_SPARC_LOX10		49
+#define R_SPARC_H44		50
+#define R_SPARC_M44		51
+#define R_SPARC_L44		52
+#define R_SPARC_REGISTER	53
+#define R_SPARC_UA64		54
+#define R_SPARC_UA16		55
+#define R_SPARC_TLS_GD_HI22	56
+#define R_SPARC_TLS_GD_LO10	57
+#define R_SPARC_TLS_GD_ADD	58
+#define R_SPARC_TLS_GD_CALL	59
+#define R_SPARC_TLS_LDM_HI22	60
+#define R_SPARC_TLS_LDM_LO10	61
+#define R_SPARC_TLS_LDM_ADD	62
+#define R_SPARC_TLS_LDM_CALL	63
+#define R_SPARC_TLS_LDO_HIX22	64
+#define R_SPARC_TLS_LDO_LOX10	65
+#define R_SPARC_TLS_LDO_ADD	66
+#define R_SPARC_TLS_IE_HI22	67
+#define R_SPARC_TLS_IE_LO10	68
+#define R_SPARC_TLS_IE_LD	69
+#define R_SPARC_TLS_IE_LDX	70
+#define R_SPARC_TLS_IE_ADD	71
+#define R_SPARC_TLS_LE_HIX22	72
+#define R_SPARC_TLS_LE_LOX10	73
+#define R_SPARC_TLS_DTPMOD32	74
+#define R_SPARC_TLS_DTPMOD64	75
+#define R_SPARC_TLS_DTPOFF32	76
+#define R_SPARC_TLS_DTPOFF64	77
+#define R_SPARC_TLS_TPOFF32	78
+#define R_SPARC_TLS_TPOFF64	79
+#define R_SPARC_GOTDATA_HIX22	80
+#define R_SPARC_GOTDATA_LOX10	81
+#define R_SPARC_GOTDATA_OP_HIX22	82
+#define R_SPARC_GOTDATA_OP_LOX10	83
+#define R_SPARC_GOTDATA_OP	84
+#define R_SPARC_H34		85
+#define R_SPARC_SIZE32		86
+#define R_SPARC_SIZE64		87
+#define R_SPARC_GNU_VTINHERIT	250
+#define R_SPARC_GNU_VTENTRY	251
+#define R_SPARC_REV32		252
+
+#define R_SPARC_NUM		253
+
+
+
+#define DT_SPARC_REGISTER 0x70000001
+#define DT_SPARC_NUM	2
+
+
+#define EF_MIPS_NOREORDER   1
+#define EF_MIPS_PIC	    2
+#define EF_MIPS_CPIC	    4
+#define EF_MIPS_XGOT	    8
+#define EF_MIPS_64BIT_WHIRL 16
+#define EF_MIPS_ABI2	    32
+#define EF_MIPS_ABI_ON32    64
+#define EF_MIPS_FP64	    512
+#define EF_MIPS_NAN2008     1024
+#define EF_MIPS_ARCH	    0xf0000000
+
+
+
+#define EF_MIPS_ARCH_1	    0x00000000
+#define EF_MIPS_ARCH_2	    0x10000000
+#define EF_MIPS_ARCH_3	    0x20000000
+#define EF_MIPS_ARCH_4	    0x30000000
+#define EF_MIPS_ARCH_5	    0x40000000
+#define EF_MIPS_ARCH_32     0x50000000
+#define EF_MIPS_ARCH_64     0x60000000
+#define EF_MIPS_ARCH_32R2   0x70000000
+#define EF_MIPS_ARCH_64R2   0x80000000
+
+
+#define E_MIPS_ARCH_1	  0x00000000
+#define E_MIPS_ARCH_2	  0x10000000
+#define E_MIPS_ARCH_3	  0x20000000
+#define E_MIPS_ARCH_4	  0x30000000
+#define E_MIPS_ARCH_5	  0x40000000
+#define E_MIPS_ARCH_32	  0x50000000
+#define E_MIPS_ARCH_64	  0x60000000
+
+
+
+#define SHN_MIPS_ACOMMON    0xff00
+#define SHN_MIPS_TEXT	    0xff01
+#define SHN_MIPS_DATA	    0xff02
+#define SHN_MIPS_SCOMMON    0xff03
+#define SHN_MIPS_SUNDEFINED 0xff04
+
+
+
+#define SHT_MIPS_LIBLIST       0x70000000
+#define SHT_MIPS_MSYM	       0x70000001
+#define SHT_MIPS_CONFLICT      0x70000002
+#define SHT_MIPS_GPTAB	       0x70000003
+#define SHT_MIPS_UCODE	       0x70000004
+#define SHT_MIPS_DEBUG	       0x70000005
+#define SHT_MIPS_REGINFO       0x70000006
+#define SHT_MIPS_PACKAGE       0x70000007
+#define SHT_MIPS_PACKSYM       0x70000008
+#define SHT_MIPS_RELD	       0x70000009
+#define SHT_MIPS_IFACE         0x7000000b
+#define SHT_MIPS_CONTENT       0x7000000c
+#define SHT_MIPS_OPTIONS       0x7000000d
+#define SHT_MIPS_SHDR	       0x70000010
+#define SHT_MIPS_FDESC	       0x70000011
+#define SHT_MIPS_EXTSYM	       0x70000012
+#define SHT_MIPS_DENSE	       0x70000013
+#define SHT_MIPS_PDESC	       0x70000014
+#define SHT_MIPS_LOCSYM	       0x70000015
+#define SHT_MIPS_AUXSYM	       0x70000016
+#define SHT_MIPS_OPTSYM	       0x70000017
+#define SHT_MIPS_LOCSTR	       0x70000018
+#define SHT_MIPS_LINE	       0x70000019
+#define SHT_MIPS_RFDESC	       0x7000001a
+#define SHT_MIPS_DELTASYM      0x7000001b
+#define SHT_MIPS_DELTAINST     0x7000001c
+#define SHT_MIPS_DELTACLASS    0x7000001d
+#define SHT_MIPS_DWARF         0x7000001e
+#define SHT_MIPS_DELTADECL     0x7000001f
+#define SHT_MIPS_SYMBOL_LIB    0x70000020
+#define SHT_MIPS_EVENTS	       0x70000021
+#define SHT_MIPS_TRANSLATE     0x70000022
+#define SHT_MIPS_PIXIE	       0x70000023
+#define SHT_MIPS_XLATE	       0x70000024
+#define SHT_MIPS_XLATE_DEBUG   0x70000025
+#define SHT_MIPS_WHIRL	       0x70000026
+#define SHT_MIPS_EH_REGION     0x70000027
+#define SHT_MIPS_XLATE_OLD     0x70000028
+#define SHT_MIPS_PDR_EXCEPTION 0x70000029
+
+
+
+#define SHF_MIPS_GPREL	 0x10000000
+#define SHF_MIPS_MERGE	 0x20000000
+#define SHF_MIPS_ADDR	 0x40000000
+#define SHF_MIPS_STRINGS 0x80000000
+#define SHF_MIPS_NOSTRIP 0x08000000
+#define SHF_MIPS_LOCAL	 0x04000000
+#define SHF_MIPS_NAMES	 0x02000000
+#define SHF_MIPS_NODUPE	 0x01000000
+
+
+
+
+
+#define STO_MIPS_DEFAULT		0x0
+#define STO_MIPS_INTERNAL		0x1
+#define STO_MIPS_HIDDEN			0x2
+#define STO_MIPS_PROTECTED		0x3
+#define STO_MIPS_PLT			0x8
+#define STO_MIPS_SC_ALIGN_UNUSED	0xff
+
+
+#define STB_MIPS_SPLIT_COMMON		13
+
+
+
+typedef union {
+  struct {
+      Elf32_Word gt_current_g_value;
+      Elf32_Word gt_unused;
+  } gt_header;
+  struct {
+      Elf32_Word gt_g_value;
+      Elf32_Word gt_bytes;
+  } gt_entry;
+} Elf32_gptab;
+
+
+
+typedef struct {
+  Elf32_Word	ri_gprmask;
+  Elf32_Word	ri_cprmask[4];
+  Elf32_Sword	ri_gp_value;
+} Elf32_RegInfo;
+
+
+
+typedef struct {
+  unsigned char kind;
+
+  unsigned char size;
+  Elf32_Section section;
+
+  Elf32_Word info;
+} Elf_Options;
+
+
+
+#define ODK_NULL	0
+#define ODK_REGINFO	1
+#define ODK_EXCEPTIONS	2
+#define ODK_PAD		3
+#define ODK_HWPATCH	4
+#define ODK_FILL	5
+#define ODK_TAGS	6
+#define ODK_HWAND	7
+#define ODK_HWOR	8
+
+
+
+#define OEX_FPU_MIN	0x1f
+#define OEX_FPU_MAX	0x1f00
+#define OEX_PAGE0	0x10000
+#define OEX_SMM		0x20000
+#define OEX_FPDBUG	0x40000
+#define OEX_PRECISEFP	OEX_FPDBUG
+#define OEX_DISMISS	0x80000
+
+#define OEX_FPU_INVAL	0x10
+#define OEX_FPU_DIV0	0x08
+#define OEX_FPU_OFLO	0x04
+#define OEX_FPU_UFLO	0x02
+#define OEX_FPU_INEX	0x01
+
+
+
+#define OHW_R4KEOP	0x1
+#define OHW_R8KPFETCH	0x2
+#define OHW_R5KEOP	0x4
+#define OHW_R5KCVTL	0x8
+
+#define OPAD_PREFIX	0x1
+#define OPAD_POSTFIX	0x2
+#define OPAD_SYMBOL	0x4
+
+
+
+typedef struct {
+  Elf32_Word hwp_flags1;
+  Elf32_Word hwp_flags2;
+} Elf_Options_Hw;
+
+
+
+#define OHWA0_R4KEOP_CHECKED	0x00000001
+#define OHWA1_R4KEOP_CLEAN	0x00000002
+
+
+
+#define R_MIPS_NONE		0
+#define R_MIPS_16		1
+#define R_MIPS_32		2
+#define R_MIPS_REL32		3
+#define R_MIPS_26		4
+#define R_MIPS_HI16		5
+#define R_MIPS_LO16		6
+#define R_MIPS_GPREL16		7
+#define R_MIPS_LITERAL		8
+#define R_MIPS_GOT16		9
+#define R_MIPS_PC16		10
+#define R_MIPS_CALL16		11
+#define R_MIPS_GPREL32		12
+
+#define R_MIPS_SHIFT5		16
+#define R_MIPS_SHIFT6		17
+#define R_MIPS_64		18
+#define R_MIPS_GOT_DISP		19
+#define R_MIPS_GOT_PAGE		20
+#define R_MIPS_GOT_OFST		21
+#define R_MIPS_GOT_HI16		22
+#define R_MIPS_GOT_LO16		23
+#define R_MIPS_SUB		24
+#define R_MIPS_INSERT_A		25
+#define R_MIPS_INSERT_B		26
+#define R_MIPS_DELETE		27
+#define R_MIPS_HIGHER		28
+#define R_MIPS_HIGHEST		29
+#define R_MIPS_CALL_HI16	30
+#define R_MIPS_CALL_LO16	31
+#define R_MIPS_SCN_DISP		32
+#define R_MIPS_REL16		33
+#define R_MIPS_ADD_IMMEDIATE	34
+#define R_MIPS_PJUMP		35
+#define R_MIPS_RELGOT		36
+#define R_MIPS_JALR		37
+#define R_MIPS_TLS_DTPMOD32	38
+#define R_MIPS_TLS_DTPREL32	39
+#define R_MIPS_TLS_DTPMOD64	40
+#define R_MIPS_TLS_DTPREL64	41
+#define R_MIPS_TLS_GD		42
+#define R_MIPS_TLS_LDM		43
+#define R_MIPS_TLS_DTPREL_HI16	44
+#define R_MIPS_TLS_DTPREL_LO16	45
+#define R_MIPS_TLS_GOTTPREL	46
+#define R_MIPS_TLS_TPREL32	47
+#define R_MIPS_TLS_TPREL64	48
+#define R_MIPS_TLS_TPREL_HI16	49
+#define R_MIPS_TLS_TPREL_LO16	50
+#define R_MIPS_GLOB_DAT		51
+#define R_MIPS_COPY		126
+#define R_MIPS_JUMP_SLOT        127
+
+#define R_MIPS_NUM		128
+
+
+
+#define PT_MIPS_REGINFO	0x70000000
+#define PT_MIPS_RTPROC  0x70000001
+#define PT_MIPS_OPTIONS 0x70000002
+#define PT_MIPS_ABIFLAGS 0x70000003
+
+
+
+#define PF_MIPS_LOCAL	0x10000000
+
+
+
+#define DT_MIPS_RLD_VERSION  0x70000001
+#define DT_MIPS_TIME_STAMP   0x70000002
+#define DT_MIPS_ICHECKSUM    0x70000003
+#define DT_MIPS_IVERSION     0x70000004
+#define DT_MIPS_FLAGS	     0x70000005
+#define DT_MIPS_BASE_ADDRESS 0x70000006
+#define DT_MIPS_MSYM	     0x70000007
+#define DT_MIPS_CONFLICT     0x70000008
+#define DT_MIPS_LIBLIST	     0x70000009
+#define DT_MIPS_LOCAL_GOTNO  0x7000000a
+#define DT_MIPS_CONFLICTNO   0x7000000b
+#define DT_MIPS_LIBLISTNO    0x70000010
+#define DT_MIPS_SYMTABNO     0x70000011
+#define DT_MIPS_UNREFEXTNO   0x70000012
+#define DT_MIPS_GOTSYM	     0x70000013
+#define DT_MIPS_HIPAGENO     0x70000014
+#define DT_MIPS_RLD_MAP	     0x70000016
+#define DT_MIPS_DELTA_CLASS  0x70000017
+#define DT_MIPS_DELTA_CLASS_NO    0x70000018
+
+#define DT_MIPS_DELTA_INSTANCE    0x70000019
+#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a
+
+#define DT_MIPS_DELTA_RELOC  0x7000001b
+#define DT_MIPS_DELTA_RELOC_NO 0x7000001c
+
+#define DT_MIPS_DELTA_SYM    0x7000001d
+
+#define DT_MIPS_DELTA_SYM_NO 0x7000001e
+
+#define DT_MIPS_DELTA_CLASSSYM 0x70000020
+
+#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021
+
+#define DT_MIPS_CXX_FLAGS    0x70000022
+#define DT_MIPS_PIXIE_INIT   0x70000023
+#define DT_MIPS_SYMBOL_LIB   0x70000024
+#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025
+#define DT_MIPS_LOCAL_GOTIDX 0x70000026
+#define DT_MIPS_HIDDEN_GOTIDX 0x70000027
+#define DT_MIPS_PROTECTED_GOTIDX 0x70000028
+#define DT_MIPS_OPTIONS	     0x70000029
+#define DT_MIPS_INTERFACE    0x7000002a
+#define DT_MIPS_DYNSTR_ALIGN 0x7000002b
+#define DT_MIPS_INTERFACE_SIZE 0x7000002c
+#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d
+
+#define DT_MIPS_PERF_SUFFIX  0x7000002e
+
+#define DT_MIPS_COMPACT_SIZE 0x7000002f
+#define DT_MIPS_GP_VALUE     0x70000030
+#define DT_MIPS_AUX_DYNAMIC  0x70000031
+
+#define DT_MIPS_PLTGOT	     0x70000032
+
+#define DT_MIPS_RWPLT        0x70000034
+#define DT_MIPS_RLD_MAP_REL  0x70000035
+#define DT_MIPS_NUM	     0x36
+
+
+
+#define RHF_NONE		   0
+#define RHF_QUICKSTART		   (1 << 0)
+#define RHF_NOTPOT		   (1 << 1)
+#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2)
+#define RHF_NO_MOVE		   (1 << 3)
+#define RHF_SGI_ONLY		   (1 << 4)
+#define RHF_GUARANTEE_INIT	   (1 << 5)
+#define RHF_DELTA_C_PLUS_PLUS	   (1 << 6)
+#define RHF_GUARANTEE_START_INIT   (1 << 7)
+#define RHF_PIXIE		   (1 << 8)
+#define RHF_DEFAULT_DELAY_LOAD	   (1 << 9)
+#define RHF_REQUICKSTART	   (1 << 10)
+#define RHF_REQUICKSTARTED	   (1 << 11)
+#define RHF_CORD		   (1 << 12)
+#define RHF_NO_UNRES_UNDEF	   (1 << 13)
+#define RHF_RLD_ORDER_SAFE	   (1 << 14)
+
+
+
+typedef struct {
+  Elf32_Word l_name;
+  Elf32_Word l_time_stamp;
+  Elf32_Word l_checksum;
+  Elf32_Word l_version;
+  Elf32_Word l_flags;
+} Elf32_Lib;
+
+typedef struct {
+  Elf64_Word l_name;
+  Elf64_Word l_time_stamp;
+  Elf64_Word l_checksum;
+  Elf64_Word l_version;
+  Elf64_Word l_flags;
+} Elf64_Lib;
+
+
+
+
+#define LL_NONE		  0
+#define LL_EXACT_MATCH	  (1 << 0)
+#define LL_IGNORE_INT_VER (1 << 1)
+#define LL_REQUIRE_MINOR  (1 << 2)
+#define LL_EXPORTS	  (1 << 3)
+#define LL_DELAY_LOAD	  (1 << 4)
+#define LL_DELTA	  (1 << 5)
+
+
+
+typedef Elf32_Addr Elf32_Conflict;
+
+typedef struct {
+  Elf32_Half version;
+  unsigned char isa_level;
+  unsigned char isa_rev;
+  unsigned char gpr_size;
+  unsigned char cpr1_size;
+  unsigned char cpr2_size;
+  unsigned char fp_abi;
+  Elf32_Word isa_ext;
+  Elf32_Word ases;
+  Elf32_Word flags1;
+  Elf32_Word flags2;
+} Elf_MIPS_ABIFlags_v0;
+
+#define MIPS_AFL_REG_NONE	0x00
+#define MIPS_AFL_REG_32		0x01
+#define MIPS_AFL_REG_64		0x02
+#define MIPS_AFL_REG_128	0x03
+
+#define MIPS_AFL_ASE_DSP	0x00000001
+#define MIPS_AFL_ASE_DSPR2	0x00000002
+#define MIPS_AFL_ASE_EVA	0x00000004
+#define MIPS_AFL_ASE_MCU	0x00000008
+#define MIPS_AFL_ASE_MDMX	0x00000010
+#define MIPS_AFL_ASE_MIPS3D	0x00000020
+#define MIPS_AFL_ASE_MT		0x00000040
+#define MIPS_AFL_ASE_SMARTMIPS	0x00000080
+#define MIPS_AFL_ASE_VIRT	0x00000100
+#define MIPS_AFL_ASE_MSA	0x00000200
+#define MIPS_AFL_ASE_MIPS16	0x00000400
+#define MIPS_AFL_ASE_MICROMIPS	0x00000800
+#define MIPS_AFL_ASE_XPA	0x00001000
+#define MIPS_AFL_ASE_MASK	0x00001fff
+
+#define MIPS_AFL_EXT_XLR	  1
+#define MIPS_AFL_EXT_OCTEON2	  2
+#define MIPS_AFL_EXT_OCTEONP	  3
+#define MIPS_AFL_EXT_LOONGSON_3A  4
+#define MIPS_AFL_EXT_OCTEON	  5
+#define MIPS_AFL_EXT_5900	  6
+#define MIPS_AFL_EXT_4650	  7
+#define MIPS_AFL_EXT_4010	  8
+#define MIPS_AFL_EXT_4100	  9
+#define MIPS_AFL_EXT_3900	  10
+#define MIPS_AFL_EXT_10000	  11
+#define MIPS_AFL_EXT_SB1	  12
+#define MIPS_AFL_EXT_4111	  13
+#define MIPS_AFL_EXT_4120	  14
+#define MIPS_AFL_EXT_5400	  15
+#define MIPS_AFL_EXT_5500	  16
+#define MIPS_AFL_EXT_LOONGSON_2E  17
+#define MIPS_AFL_EXT_LOONGSON_2F  18
+
+#define MIPS_AFL_FLAGS1_ODDSPREG  1
+
+enum
+{
+  Val_GNU_MIPS_ABI_FP_ANY = 0,
+  Val_GNU_MIPS_ABI_FP_DOUBLE = 1,
+  Val_GNU_MIPS_ABI_FP_SINGLE = 2,
+  Val_GNU_MIPS_ABI_FP_SOFT = 3,
+  Val_GNU_MIPS_ABI_FP_OLD_64 = 4,
+  Val_GNU_MIPS_ABI_FP_XX = 5,
+  Val_GNU_MIPS_ABI_FP_64 = 6,
+  Val_GNU_MIPS_ABI_FP_64A = 7,
+  Val_GNU_MIPS_ABI_FP_MAX = 7
+};
+
+
+
+
+#define EF_PARISC_TRAPNIL	0x00010000
+#define EF_PARISC_EXT		0x00020000
+#define EF_PARISC_LSB		0x00040000
+#define EF_PARISC_WIDE		0x00080000
+#define EF_PARISC_NO_KABP	0x00100000
+
+#define EF_PARISC_LAZYSWAP	0x00400000
+#define EF_PARISC_ARCH		0x0000ffff
+
+
+
+#define EFA_PARISC_1_0		    0x020b
+#define EFA_PARISC_1_1		    0x0210
+#define EFA_PARISC_2_0		    0x0214
+
+
+
+#define SHN_PARISC_ANSI_COMMON	0xff00
+
+#define SHN_PARISC_HUGE_COMMON	0xff01
+
+
+
+#define SHT_PARISC_EXT		0x70000000
+#define SHT_PARISC_UNWIND	0x70000001
+#define SHT_PARISC_DOC		0x70000002
+
+
+
+#define SHF_PARISC_SHORT	0x20000000
+#define SHF_PARISC_HUGE		0x40000000
+#define SHF_PARISC_SBP		0x80000000
+
+
+
+#define STT_PARISC_MILLICODE	13
+
+#define STT_HP_OPAQUE		(STT_LOOS + 0x1)
+#define STT_HP_STUB		(STT_LOOS + 0x2)
+
+
+
+#define R_PARISC_NONE		0
+#define R_PARISC_DIR32		1
+#define R_PARISC_DIR21L		2
+#define R_PARISC_DIR17R		3
+#define R_PARISC_DIR17F		4
+#define R_PARISC_DIR14R		6
+#define R_PARISC_PCREL32	9
+#define R_PARISC_PCREL21L	10
+#define R_PARISC_PCREL17R	11
+#define R_PARISC_PCREL17F	12
+#define R_PARISC_PCREL14R	14
+#define R_PARISC_DPREL21L	18
+#define R_PARISC_DPREL14R	22
+#define R_PARISC_GPREL21L	26
+#define R_PARISC_GPREL14R	30
+#define R_PARISC_LTOFF21L	34
+#define R_PARISC_LTOFF14R	38
+#define R_PARISC_SECREL32	41
+#define R_PARISC_SEGBASE	48
+#define R_PARISC_SEGREL32	49
+#define R_PARISC_PLTOFF21L	50
+#define R_PARISC_PLTOFF14R	54
+#define R_PARISC_LTOFF_FPTR32	57
+#define R_PARISC_LTOFF_FPTR21L	58
+#define R_PARISC_LTOFF_FPTR14R	62
+#define R_PARISC_FPTR64		64
+#define R_PARISC_PLABEL32	65
+#define R_PARISC_PLABEL21L	66
+#define R_PARISC_PLABEL14R	70
+#define R_PARISC_PCREL64	72
+#define R_PARISC_PCREL22F	74
+#define R_PARISC_PCREL14WR	75
+#define R_PARISC_PCREL14DR	76
+#define R_PARISC_PCREL16F	77
+#define R_PARISC_PCREL16WF	78
+#define R_PARISC_PCREL16DF	79
+#define R_PARISC_DIR64		80
+#define R_PARISC_DIR14WR	83
+#define R_PARISC_DIR14DR	84
+#define R_PARISC_DIR16F		85
+#define R_PARISC_DIR16WF	86
+#define R_PARISC_DIR16DF	87
+#define R_PARISC_GPREL64	88
+#define R_PARISC_GPREL14WR	91
+#define R_PARISC_GPREL14DR	92
+#define R_PARISC_GPREL16F	93
+#define R_PARISC_GPREL16WF	94
+#define R_PARISC_GPREL16DF	95
+#define R_PARISC_LTOFF64	96
+#define R_PARISC_LTOFF14WR	99
+#define R_PARISC_LTOFF14DR	100
+#define R_PARISC_LTOFF16F	101
+#define R_PARISC_LTOFF16WF	102
+#define R_PARISC_LTOFF16DF	103
+#define R_PARISC_SECREL64	104
+#define R_PARISC_SEGREL64	112
+#define R_PARISC_PLTOFF14WR	115
+#define R_PARISC_PLTOFF14DR	116
+#define R_PARISC_PLTOFF16F	117
+#define R_PARISC_PLTOFF16WF	118
+#define R_PARISC_PLTOFF16DF	119
+#define R_PARISC_LTOFF_FPTR64	120
+#define R_PARISC_LTOFF_FPTR14WR	123
+#define R_PARISC_LTOFF_FPTR14DR	124
+#define R_PARISC_LTOFF_FPTR16F	125
+#define R_PARISC_LTOFF_FPTR16WF	126
+#define R_PARISC_LTOFF_FPTR16DF	127
+#define R_PARISC_LORESERVE	128
+#define R_PARISC_COPY		128
+#define R_PARISC_IPLT		129
+#define R_PARISC_EPLT		130
+#define R_PARISC_TPREL32	153
+#define R_PARISC_TPREL21L	154
+#define R_PARISC_TPREL14R	158
+#define R_PARISC_LTOFF_TP21L	162
+#define R_PARISC_LTOFF_TP14R	166
+#define R_PARISC_LTOFF_TP14F	167
+#define R_PARISC_TPREL64	216
+#define R_PARISC_TPREL14WR	219
+#define R_PARISC_TPREL14DR	220
+#define R_PARISC_TPREL16F	221
+#define R_PARISC_TPREL16WF	222
+#define R_PARISC_TPREL16DF	223
+#define R_PARISC_LTOFF_TP64	224
+#define R_PARISC_LTOFF_TP14WR	227
+#define R_PARISC_LTOFF_TP14DR	228
+#define R_PARISC_LTOFF_TP16F	229
+#define R_PARISC_LTOFF_TP16WF	230
+#define R_PARISC_LTOFF_TP16DF	231
+#define R_PARISC_GNU_VTENTRY	232
+#define R_PARISC_GNU_VTINHERIT	233
+#define R_PARISC_TLS_GD21L	234
+#define R_PARISC_TLS_GD14R	235
+#define R_PARISC_TLS_GDCALL	236
+#define R_PARISC_TLS_LDM21L	237
+#define R_PARISC_TLS_LDM14R	238
+#define R_PARISC_TLS_LDMCALL	239
+#define R_PARISC_TLS_LDO21L	240
+#define R_PARISC_TLS_LDO14R	241
+#define R_PARISC_TLS_DTPMOD32	242
+#define R_PARISC_TLS_DTPMOD64	243
+#define R_PARISC_TLS_DTPOFF32	244
+#define R_PARISC_TLS_DTPOFF64	245
+#define R_PARISC_TLS_LE21L	R_PARISC_TPREL21L
+#define R_PARISC_TLS_LE14R	R_PARISC_TPREL14R
+#define R_PARISC_TLS_IE21L	R_PARISC_LTOFF_TP21L
+#define R_PARISC_TLS_IE14R	R_PARISC_LTOFF_TP14R
+#define R_PARISC_TLS_TPREL32	R_PARISC_TPREL32
+#define R_PARISC_TLS_TPREL64	R_PARISC_TPREL64
+#define R_PARISC_HIRESERVE	255
+
+
+
+#define PT_HP_TLS		(PT_LOOS + 0x0)
+#define PT_HP_CORE_NONE		(PT_LOOS + 0x1)
+#define PT_HP_CORE_VERSION	(PT_LOOS + 0x2)
+#define PT_HP_CORE_KERNEL	(PT_LOOS + 0x3)
+#define PT_HP_CORE_COMM		(PT_LOOS + 0x4)
+#define PT_HP_CORE_PROC		(PT_LOOS + 0x5)
+#define PT_HP_CORE_LOADABLE	(PT_LOOS + 0x6)
+#define PT_HP_CORE_STACK	(PT_LOOS + 0x7)
+#define PT_HP_CORE_SHM		(PT_LOOS + 0x8)
+#define PT_HP_CORE_MMF		(PT_LOOS + 0x9)
+#define PT_HP_PARALLEL		(PT_LOOS + 0x10)
+#define PT_HP_FASTBIND		(PT_LOOS + 0x11)
+#define PT_HP_OPT_ANNOT		(PT_LOOS + 0x12)
+#define PT_HP_HSL_ANNOT		(PT_LOOS + 0x13)
+#define PT_HP_STACK		(PT_LOOS + 0x14)
+
+#define PT_PARISC_ARCHEXT	0x70000000
+#define PT_PARISC_UNWIND	0x70000001
+
+
+
+#define PF_PARISC_SBP		0x08000000
+
+#define PF_HP_PAGE_SIZE		0x00100000
+#define PF_HP_FAR_SHARED	0x00200000
+#define PF_HP_NEAR_SHARED	0x00400000
+#define PF_HP_CODE		0x01000000
+#define PF_HP_MODIFY		0x02000000
+#define PF_HP_LAZYSWAP		0x04000000
+#define PF_HP_SBP		0x08000000
+
+
+
+
+
+
+#define EF_ALPHA_32BIT		1
+#define EF_ALPHA_CANRELAX	2
+
+
+
+
+#define SHT_ALPHA_DEBUG		0x70000001
+#define SHT_ALPHA_REGINFO	0x70000002
+
+
+
+#define SHF_ALPHA_GPREL		0x10000000
+
+
+#define STO_ALPHA_NOPV		0x80
+#define STO_ALPHA_STD_GPLOAD	0x88
+
+
+
+#define R_ALPHA_NONE		0
+#define R_ALPHA_REFLONG		1
+#define R_ALPHA_REFQUAD		2
+#define R_ALPHA_GPREL32		3
+#define R_ALPHA_LITERAL		4
+#define R_ALPHA_LITUSE		5
+#define R_ALPHA_GPDISP		6
+#define R_ALPHA_BRADDR		7
+#define R_ALPHA_HINT		8
+#define R_ALPHA_SREL16		9
+#define R_ALPHA_SREL32		10
+#define R_ALPHA_SREL64		11
+#define R_ALPHA_GPRELHIGH	17
+#define R_ALPHA_GPRELLOW	18
+#define R_ALPHA_GPREL16		19
+#define R_ALPHA_COPY		24
+#define R_ALPHA_GLOB_DAT	25
+#define R_ALPHA_JMP_SLOT	26
+#define R_ALPHA_RELATIVE	27
+#define R_ALPHA_TLS_GD_HI	28
+#define R_ALPHA_TLSGD		29
+#define R_ALPHA_TLS_LDM		30
+#define R_ALPHA_DTPMOD64	31
+#define R_ALPHA_GOTDTPREL	32
+#define R_ALPHA_DTPREL64	33
+#define R_ALPHA_DTPRELHI	34
+#define R_ALPHA_DTPRELLO	35
+#define R_ALPHA_DTPREL16	36
+#define R_ALPHA_GOTTPREL	37
+#define R_ALPHA_TPREL64		38
+#define R_ALPHA_TPRELHI		39
+#define R_ALPHA_TPRELLO		40
+#define R_ALPHA_TPREL16		41
+
+#define R_ALPHA_NUM		46
+
+
+#define LITUSE_ALPHA_ADDR	0
+#define LITUSE_ALPHA_BASE	1
+#define LITUSE_ALPHA_BYTOFF	2
+#define LITUSE_ALPHA_JSR	3
+#define LITUSE_ALPHA_TLS_GD	4
+#define LITUSE_ALPHA_TLS_LDM	5
+
+
+#define DT_ALPHA_PLTRO		(DT_LOPROC + 0)
+#define DT_ALPHA_NUM		1
+
+
+
+
+#define EF_PPC_EMB		0x80000000
+
+
+#define EF_PPC_RELOCATABLE	0x00010000
+#define EF_PPC_RELOCATABLE_LIB	0x00008000
+
+
+
+#define R_PPC_NONE		0
+#define R_PPC_ADDR32		1
+#define R_PPC_ADDR24		2
+#define R_PPC_ADDR16		3
+#define R_PPC_ADDR16_LO		4
+#define R_PPC_ADDR16_HI		5
+#define R_PPC_ADDR16_HA		6
+#define R_PPC_ADDR14		7
+#define R_PPC_ADDR14_BRTAKEN	8
+#define R_PPC_ADDR14_BRNTAKEN	9
+#define R_PPC_REL24		10
+#define R_PPC_REL14		11
+#define R_PPC_REL14_BRTAKEN	12
+#define R_PPC_REL14_BRNTAKEN	13
+#define R_PPC_GOT16		14
+#define R_PPC_GOT16_LO		15
+#define R_PPC_GOT16_HI		16
+#define R_PPC_GOT16_HA		17
+#define R_PPC_PLTREL24		18
+#define R_PPC_COPY		19
+#define R_PPC_GLOB_DAT		20
+#define R_PPC_JMP_SLOT		21
+#define R_PPC_RELATIVE		22
+#define R_PPC_LOCAL24PC		23
+#define R_PPC_UADDR32		24
+#define R_PPC_UADDR16		25
+#define R_PPC_REL32		26
+#define R_PPC_PLT32		27
+#define R_PPC_PLTREL32		28
+#define R_PPC_PLT16_LO		29
+#define R_PPC_PLT16_HI		30
+#define R_PPC_PLT16_HA		31
+#define R_PPC_SDAREL16		32
+#define R_PPC_SECTOFF		33
+#define R_PPC_SECTOFF_LO	34
+#define R_PPC_SECTOFF_HI	35
+#define R_PPC_SECTOFF_HA	36
+
+
+#define R_PPC_TLS		67
+#define R_PPC_DTPMOD32		68
+#define R_PPC_TPREL16		69
+#define R_PPC_TPREL16_LO	70
+#define R_PPC_TPREL16_HI	71
+#define R_PPC_TPREL16_HA	72
+#define R_PPC_TPREL32		73
+#define R_PPC_DTPREL16		74
+#define R_PPC_DTPREL16_LO	75
+#define R_PPC_DTPREL16_HI	76
+#define R_PPC_DTPREL16_HA	77
+#define R_PPC_DTPREL32		78
+#define R_PPC_GOT_TLSGD16	79
+#define R_PPC_GOT_TLSGD16_LO	80
+#define R_PPC_GOT_TLSGD16_HI	81
+#define R_PPC_GOT_TLSGD16_HA	82
+#define R_PPC_GOT_TLSLD16	83
+#define R_PPC_GOT_TLSLD16_LO	84
+#define R_PPC_GOT_TLSLD16_HI	85
+#define R_PPC_GOT_TLSLD16_HA	86
+#define R_PPC_GOT_TPREL16	87
+#define R_PPC_GOT_TPREL16_LO	88
+#define R_PPC_GOT_TPREL16_HI	89
+#define R_PPC_GOT_TPREL16_HA	90
+#define R_PPC_GOT_DTPREL16	91
+#define R_PPC_GOT_DTPREL16_LO	92
+#define R_PPC_GOT_DTPREL16_HI	93
+#define R_PPC_GOT_DTPREL16_HA	94
+#define R_PPC_TLSGD		95
+#define R_PPC_TLSLD		96
+
+
+#define R_PPC_EMB_NADDR32	101
+#define R_PPC_EMB_NADDR16	102
+#define R_PPC_EMB_NADDR16_LO	103
+#define R_PPC_EMB_NADDR16_HI	104
+#define R_PPC_EMB_NADDR16_HA	105
+#define R_PPC_EMB_SDAI16	106
+#define R_PPC_EMB_SDA2I16	107
+#define R_PPC_EMB_SDA2REL	108
+#define R_PPC_EMB_SDA21		109
+#define R_PPC_EMB_MRKREF	110
+#define R_PPC_EMB_RELSEC16	111
+#define R_PPC_EMB_RELST_LO	112
+#define R_PPC_EMB_RELST_HI	113
+#define R_PPC_EMB_RELST_HA	114
+#define R_PPC_EMB_BIT_FLD	115
+#define R_PPC_EMB_RELSDA	116
+
+
+#define R_PPC_DIAB_SDA21_LO	180
+#define R_PPC_DIAB_SDA21_HI	181
+#define R_PPC_DIAB_SDA21_HA	182
+#define R_PPC_DIAB_RELSDA_LO	183
+#define R_PPC_DIAB_RELSDA_HI	184
+#define R_PPC_DIAB_RELSDA_HA	185
+
+
+#define R_PPC_IRELATIVE		248
+
+
+#define R_PPC_REL16		249
+#define R_PPC_REL16_LO		250
+#define R_PPC_REL16_HI		251
+#define R_PPC_REL16_HA		252
+
+
+
+#define R_PPC_TOC16		255
+
+
+#define DT_PPC_GOT		(DT_LOPROC + 0)
+#define DT_PPC_OPT		(DT_LOPROC + 1)
+#define DT_PPC_NUM		2
+
+#define PPC_OPT_TLS		1
+
+
+#define R_PPC64_NONE		R_PPC_NONE
+#define R_PPC64_ADDR32		R_PPC_ADDR32
+#define R_PPC64_ADDR24		R_PPC_ADDR24
+#define R_PPC64_ADDR16		R_PPC_ADDR16
+#define R_PPC64_ADDR16_LO	R_PPC_ADDR16_LO
+#define R_PPC64_ADDR16_HI	R_PPC_ADDR16_HI
+#define R_PPC64_ADDR16_HA	R_PPC_ADDR16_HA
+#define R_PPC64_ADDR14		R_PPC_ADDR14
+#define R_PPC64_ADDR14_BRTAKEN	R_PPC_ADDR14_BRTAKEN
+#define R_PPC64_ADDR14_BRNTAKEN	R_PPC_ADDR14_BRNTAKEN
+#define R_PPC64_REL24		R_PPC_REL24
+#define R_PPC64_REL14		R_PPC_REL14
+#define R_PPC64_REL14_BRTAKEN	R_PPC_REL14_BRTAKEN
+#define R_PPC64_REL14_BRNTAKEN	R_PPC_REL14_BRNTAKEN
+#define R_PPC64_GOT16		R_PPC_GOT16
+#define R_PPC64_GOT16_LO	R_PPC_GOT16_LO
+#define R_PPC64_GOT16_HI	R_PPC_GOT16_HI
+#define R_PPC64_GOT16_HA	R_PPC_GOT16_HA
+
+#define R_PPC64_COPY		R_PPC_COPY
+#define R_PPC64_GLOB_DAT	R_PPC_GLOB_DAT
+#define R_PPC64_JMP_SLOT	R_PPC_JMP_SLOT
+#define R_PPC64_RELATIVE	R_PPC_RELATIVE
+
+#define R_PPC64_UADDR32		R_PPC_UADDR32
+#define R_PPC64_UADDR16		R_PPC_UADDR16
+#define R_PPC64_REL32		R_PPC_REL32
+#define R_PPC64_PLT32		R_PPC_PLT32
+#define R_PPC64_PLTREL32	R_PPC_PLTREL32
+#define R_PPC64_PLT16_LO	R_PPC_PLT16_LO
+#define R_PPC64_PLT16_HI	R_PPC_PLT16_HI
+#define R_PPC64_PLT16_HA	R_PPC_PLT16_HA
+
+#define R_PPC64_SECTOFF		R_PPC_SECTOFF
+#define R_PPC64_SECTOFF_LO	R_PPC_SECTOFF_LO
+#define R_PPC64_SECTOFF_HI	R_PPC_SECTOFF_HI
+#define R_PPC64_SECTOFF_HA	R_PPC_SECTOFF_HA
+#define R_PPC64_ADDR30		37
+#define R_PPC64_ADDR64		38
+#define R_PPC64_ADDR16_HIGHER	39
+#define R_PPC64_ADDR16_HIGHERA	40
+#define R_PPC64_ADDR16_HIGHEST	41
+#define R_PPC64_ADDR16_HIGHESTA	42
+#define R_PPC64_UADDR64		43
+#define R_PPC64_REL64		44
+#define R_PPC64_PLT64		45
+#define R_PPC64_PLTREL64	46
+#define R_PPC64_TOC16		47
+#define R_PPC64_TOC16_LO	48
+#define R_PPC64_TOC16_HI	49
+#define R_PPC64_TOC16_HA	50
+#define R_PPC64_TOC		51
+#define R_PPC64_PLTGOT16	52
+#define R_PPC64_PLTGOT16_LO	53
+#define R_PPC64_PLTGOT16_HI	54
+#define R_PPC64_PLTGOT16_HA	55
+
+#define R_PPC64_ADDR16_DS	56
+#define R_PPC64_ADDR16_LO_DS	57
+#define R_PPC64_GOT16_DS	58
+#define R_PPC64_GOT16_LO_DS	59
+#define R_PPC64_PLT16_LO_DS	60
+#define R_PPC64_SECTOFF_DS	61
+#define R_PPC64_SECTOFF_LO_DS	62
+#define R_PPC64_TOC16_DS	63
+#define R_PPC64_TOC16_LO_DS	64
+#define R_PPC64_PLTGOT16_DS	65
+#define R_PPC64_PLTGOT16_LO_DS	66
+
+
+#define R_PPC64_TLS		67
+#define R_PPC64_DTPMOD64	68
+#define R_PPC64_TPREL16		69
+#define R_PPC64_TPREL16_LO	70
+#define R_PPC64_TPREL16_HI	71
+#define R_PPC64_TPREL16_HA	72
+#define R_PPC64_TPREL64		73
+#define R_PPC64_DTPREL16	74
+#define R_PPC64_DTPREL16_LO	75
+#define R_PPC64_DTPREL16_HI	76
+#define R_PPC64_DTPREL16_HA	77
+#define R_PPC64_DTPREL64	78
+#define R_PPC64_GOT_TLSGD16	79
+#define R_PPC64_GOT_TLSGD16_LO	80
+#define R_PPC64_GOT_TLSGD16_HI	81
+#define R_PPC64_GOT_TLSGD16_HA	82
+#define R_PPC64_GOT_TLSLD16	83
+#define R_PPC64_GOT_TLSLD16_LO	84
+#define R_PPC64_GOT_TLSLD16_HI	85
+#define R_PPC64_GOT_TLSLD16_HA	86
+#define R_PPC64_GOT_TPREL16_DS	87
+#define R_PPC64_GOT_TPREL16_LO_DS 88
+#define R_PPC64_GOT_TPREL16_HI	89
+#define R_PPC64_GOT_TPREL16_HA	90
+#define R_PPC64_GOT_DTPREL16_DS	91
+#define R_PPC64_GOT_DTPREL16_LO_DS 92
+#define R_PPC64_GOT_DTPREL16_HI	93
+#define R_PPC64_GOT_DTPREL16_HA	94
+#define R_PPC64_TPREL16_DS	95
+#define R_PPC64_TPREL16_LO_DS	96
+#define R_PPC64_TPREL16_HIGHER	97
+#define R_PPC64_TPREL16_HIGHERA	98
+#define R_PPC64_TPREL16_HIGHEST	99
+#define R_PPC64_TPREL16_HIGHESTA 100
+#define R_PPC64_DTPREL16_DS	101
+#define R_PPC64_DTPREL16_LO_DS	102
+#define R_PPC64_DTPREL16_HIGHER	103
+#define R_PPC64_DTPREL16_HIGHERA 104
+#define R_PPC64_DTPREL16_HIGHEST 105
+#define R_PPC64_DTPREL16_HIGHESTA 106
+#define R_PPC64_TLSGD		107
+#define R_PPC64_TLSLD		108
+#define R_PPC64_TOCSAVE		109
+#define R_PPC64_ADDR16_HIGH	110
+#define R_PPC64_ADDR16_HIGHA	111
+#define R_PPC64_TPREL16_HIGH	112
+#define R_PPC64_TPREL16_HIGHA	113
+#define R_PPC64_DTPREL16_HIGH	114
+#define R_PPC64_DTPREL16_HIGHA	115
+
+
+#define R_PPC64_JMP_IREL	247
+#define R_PPC64_IRELATIVE	248
+#define R_PPC64_REL16		249
+#define R_PPC64_REL16_LO	250
+#define R_PPC64_REL16_HI	251
+#define R_PPC64_REL16_HA	252
+
+#define EF_PPC64_ABI	3
+
+#define DT_PPC64_GLINK  (DT_LOPROC + 0)
+#define DT_PPC64_OPD	(DT_LOPROC + 1)
+#define DT_PPC64_OPDSZ	(DT_LOPROC + 2)
+#define DT_PPC64_OPT	(DT_LOPROC + 3)
+#define DT_PPC64_NUM	4
+
+#define PPC64_OPT_TLS		1
+#define PPC64_OPT_MULTI_TOC	2
+#define PPC64_OPT_LOCALENTRY	4
+
+#define STO_PPC64_LOCAL_BIT	5
+#define STO_PPC64_LOCAL_MASK	0xe0
+#define PPC64_LOCAL_ENTRY_OFFSET(x) (1 << (((x)&0xe0)>>5) & 0xfc)
+
+
+#define EF_ARM_RELEXEC		0x01
+#define EF_ARM_HASENTRY		0x02
+#define EF_ARM_INTERWORK	0x04
+#define EF_ARM_APCS_26		0x08
+#define EF_ARM_APCS_FLOAT	0x10
+#define EF_ARM_PIC		0x20
+#define EF_ARM_ALIGN8		0x40
+#define EF_ARM_NEW_ABI		0x80
+#define EF_ARM_OLD_ABI		0x100
+#define EF_ARM_SOFT_FLOAT	0x200
+#define EF_ARM_VFP_FLOAT	0x400
+#define EF_ARM_MAVERICK_FLOAT	0x800
+
+#define EF_ARM_ABI_FLOAT_SOFT	0x200
+#define EF_ARM_ABI_FLOAT_HARD	0x400
+
+
+#define EF_ARM_SYMSARESORTED	0x04
+#define EF_ARM_DYNSYMSUSESEGIDX	0x08
+#define EF_ARM_MAPSYMSFIRST	0x10
+#define EF_ARM_EABIMASK		0XFF000000
+
+
+#define EF_ARM_BE8	    0x00800000
+#define EF_ARM_LE8	    0x00400000
+
+#define EF_ARM_EABI_VERSION(flags)	((flags) & EF_ARM_EABIMASK)
+#define EF_ARM_EABI_UNKNOWN	0x00000000
+#define EF_ARM_EABI_VER1	0x01000000
+#define EF_ARM_EABI_VER2	0x02000000
+#define EF_ARM_EABI_VER3	0x03000000
+#define EF_ARM_EABI_VER4	0x04000000
+#define EF_ARM_EABI_VER5	0x05000000
+
+
+#define STT_ARM_TFUNC		STT_LOPROC
+#define STT_ARM_16BIT		STT_HIPROC
+
+
+#define SHF_ARM_ENTRYSECT	0x10000000
+#define SHF_ARM_COMDEF		0x80000000
+
+
+
+#define PF_ARM_SB		0x10000000
+
+#define PF_ARM_PI		0x20000000
+#define PF_ARM_ABS		0x40000000
+
+
+#define PT_ARM_EXIDX		(PT_LOPROC + 1)
+
+
+#define SHT_ARM_EXIDX		(SHT_LOPROC + 1)
+#define SHT_ARM_PREEMPTMAP	(SHT_LOPROC + 2)
+#define SHT_ARM_ATTRIBUTES	(SHT_LOPROC + 3)
+
+#define R_AARCH64_NONE            0
+#define R_AARCH64_P32_ABS32	1
+#define R_AARCH64_P32_COPY	180
+#define R_AARCH64_P32_GLOB_DAT	181
+#define R_AARCH64_P32_JUMP_SLOT	182
+#define R_AARCH64_P32_RELATIVE	183
+#define R_AARCH64_P32_TLS_DTPMOD 184
+#define R_AARCH64_P32_TLS_DTPREL 185
+#define R_AARCH64_P32_TLS_TPREL	186
+#define R_AARCH64_P32_TLSDESC	187
+#define R_AARCH64_P32_IRELATIVE	188
+#define R_AARCH64_ABS64         257
+#define R_AARCH64_ABS32         258
+#define R_AARCH64_ABS16		259
+#define R_AARCH64_PREL64	260
+#define R_AARCH64_PREL32	261
+#define R_AARCH64_PREL16	262
+#define R_AARCH64_MOVW_UABS_G0	263
+#define R_AARCH64_MOVW_UABS_G0_NC 264
+#define R_AARCH64_MOVW_UABS_G1	265
+#define R_AARCH64_MOVW_UABS_G1_NC 266
+#define R_AARCH64_MOVW_UABS_G2	267
+#define R_AARCH64_MOVW_UABS_G2_NC 268
+#define R_AARCH64_MOVW_UABS_G3	269
+#define R_AARCH64_MOVW_SABS_G0	270
+#define R_AARCH64_MOVW_SABS_G1	271
+#define R_AARCH64_MOVW_SABS_G2	272
+#define R_AARCH64_LD_PREL_LO19	273
+#define R_AARCH64_ADR_PREL_LO21	274
+#define R_AARCH64_ADR_PREL_PG_HI21 275
+#define R_AARCH64_ADR_PREL_PG_HI21_NC 276
+#define R_AARCH64_ADD_ABS_LO12_NC 277
+#define R_AARCH64_LDST8_ABS_LO12_NC 278
+#define R_AARCH64_TSTBR14	279
+#define R_AARCH64_CONDBR19	280
+#define R_AARCH64_JUMP26	282
+#define R_AARCH64_CALL26	283
+#define R_AARCH64_LDST16_ABS_LO12_NC 284
+#define R_AARCH64_LDST32_ABS_LO12_NC 285
+#define R_AARCH64_LDST64_ABS_LO12_NC 286
+#define R_AARCH64_MOVW_PREL_G0	287
+#define R_AARCH64_MOVW_PREL_G0_NC 288
+#define R_AARCH64_MOVW_PREL_G1	289
+#define R_AARCH64_MOVW_PREL_G1_NC 290
+#define R_AARCH64_MOVW_PREL_G2	291
+#define R_AARCH64_MOVW_PREL_G2_NC 292
+#define R_AARCH64_MOVW_PREL_G3	293
+#define R_AARCH64_LDST128_ABS_LO12_NC 299
+#define R_AARCH64_MOVW_GOTOFF_G0 300
+#define R_AARCH64_MOVW_GOTOFF_G0_NC 301
+#define R_AARCH64_MOVW_GOTOFF_G1 302
+#define R_AARCH64_MOVW_GOTOFF_G1_NC 303
+#define R_AARCH64_MOVW_GOTOFF_G2 304
+#define R_AARCH64_MOVW_GOTOFF_G2_NC 305
+#define R_AARCH64_MOVW_GOTOFF_G3 306
+#define R_AARCH64_GOTREL64	307
+#define R_AARCH64_GOTREL32	308
+#define R_AARCH64_GOT_LD_PREL19	309
+#define R_AARCH64_LD64_GOTOFF_LO15 310
+#define R_AARCH64_ADR_GOT_PAGE	311
+#define R_AARCH64_LD64_GOT_LO12_NC 312
+#define R_AARCH64_LD64_GOTPAGE_LO15 313
+#define R_AARCH64_TLSGD_ADR_PREL21 512
+#define R_AARCH64_TLSGD_ADR_PAGE21 513
+#define R_AARCH64_TLSGD_ADD_LO12_NC 514
+#define R_AARCH64_TLSGD_MOVW_G1	515
+#define R_AARCH64_TLSGD_MOVW_G0_NC 516
+#define R_AARCH64_TLSLD_ADR_PREL21 517
+#define R_AARCH64_TLSLD_ADR_PAGE21 518
+#define R_AARCH64_TLSLD_ADD_LO12_NC 519
+#define R_AARCH64_TLSLD_MOVW_G1	520
+#define R_AARCH64_TLSLD_MOVW_G0_NC 521
+#define R_AARCH64_TLSLD_LD_PREL19 522
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G2 523
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G1 524
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC 525
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G0 526
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC 527
+#define R_AARCH64_TLSLD_ADD_DTPREL_HI12 528
+#define R_AARCH64_TLSLD_ADD_DTPREL_LO12 529
+#define R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC 530
+#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12 531
+#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC 532
+#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12 533
+#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC 534
+#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12 535
+#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC 536
+#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12 537
+#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC 538
+#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 539
+#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC 540
+#define R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 541
+#define R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC 542
+#define R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 543
+#define R_AARCH64_TLSLE_MOVW_TPREL_G2 544
+#define R_AARCH64_TLSLE_MOVW_TPREL_G1 545
+#define R_AARCH64_TLSLE_MOVW_TPREL_G1_NC 546
+#define R_AARCH64_TLSLE_MOVW_TPREL_G0 547
+#define R_AARCH64_TLSLE_MOVW_TPREL_G0_NC 548
+#define R_AARCH64_TLSLE_ADD_TPREL_HI12 549
+#define R_AARCH64_TLSLE_ADD_TPREL_LO12 550
+#define R_AARCH64_TLSLE_ADD_TPREL_LO12_NC 551
+#define R_AARCH64_TLSLE_LDST8_TPREL_LO12 552
+#define R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC 553
+#define R_AARCH64_TLSLE_LDST16_TPREL_LO12 554
+#define R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC 555
+#define R_AARCH64_TLSLE_LDST32_TPREL_LO12 556
+#define R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC 557
+#define R_AARCH64_TLSLE_LDST64_TPREL_LO12 558
+#define R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC 559
+#define R_AARCH64_TLSDESC_LD_PREL19 560
+#define R_AARCH64_TLSDESC_ADR_PREL21 561
+#define R_AARCH64_TLSDESC_ADR_PAGE21 562
+#define R_AARCH64_TLSDESC_LD64_LO12 563
+#define R_AARCH64_TLSDESC_ADD_LO12 564
+#define R_AARCH64_TLSDESC_OFF_G1 565
+#define R_AARCH64_TLSDESC_OFF_G0_NC 566
+#define R_AARCH64_TLSDESC_LDR	567
+#define R_AARCH64_TLSDESC_ADD	568
+#define R_AARCH64_TLSDESC_CALL	569
+#define R_AARCH64_TLSLE_LDST128_TPREL_LO12 570
+#define R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC 571
+#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12 572
+#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC 573
+#define R_AARCH64_COPY         1024
+#define R_AARCH64_GLOB_DAT     1025
+#define R_AARCH64_JUMP_SLOT    1026
+#define R_AARCH64_RELATIVE     1027
+#define R_AARCH64_TLS_DTPMOD   1028
+#define R_AARCH64_TLS_DTPMOD64 1028
+#define R_AARCH64_TLS_DTPREL   1029
+#define R_AARCH64_TLS_DTPREL64 1029
+#define R_AARCH64_TLS_TPREL    1030
+#define R_AARCH64_TLS_TPREL64  1030
+#define R_AARCH64_TLSDESC      1031
+
+
+#define R_ARM_NONE		0
+#define R_ARM_PC24		1
+#define R_ARM_ABS32		2
+#define R_ARM_REL32		3
+#define R_ARM_PC13		4
+#define R_ARM_ABS16		5
+#define R_ARM_ABS12		6
+#define R_ARM_THM_ABS5		7
+#define R_ARM_ABS8		8
+#define R_ARM_SBREL32		9
+#define R_ARM_THM_PC22		10
+#define R_ARM_THM_PC8		11
+#define R_ARM_AMP_VCALL9	12
+#define R_ARM_TLS_DESC		13
+#define R_ARM_THM_SWI8		14
+#define R_ARM_XPC25		15
+#define R_ARM_THM_XPC22		16
+#define R_ARM_TLS_DTPMOD32	17
+#define R_ARM_TLS_DTPOFF32	18
+#define R_ARM_TLS_TPOFF32	19
+#define R_ARM_COPY		20
+#define R_ARM_GLOB_DAT		21
+#define R_ARM_JUMP_SLOT		22
+#define R_ARM_RELATIVE		23
+#define R_ARM_GOTOFF		24
+#define R_ARM_GOTPC		25
+#define R_ARM_GOT32		26
+#define R_ARM_PLT32		27
+#define R_ARM_CALL		28
+#define R_ARM_JUMP24		29
+#define R_ARM_THM_JUMP24	30
+#define R_ARM_BASE_ABS		31
+#define R_ARM_ALU_PCREL_7_0	32
+#define R_ARM_ALU_PCREL_15_8	33
+#define R_ARM_ALU_PCREL_23_15	34
+#define R_ARM_LDR_SBREL_11_0	35
+#define R_ARM_ALU_SBREL_19_12	36
+#define R_ARM_ALU_SBREL_27_20	37
+#define R_ARM_TARGET1		38
+#define R_ARM_SBREL31		39
+#define R_ARM_V4BX		40
+#define R_ARM_TARGET2		41
+#define R_ARM_PREL31		42
+#define R_ARM_MOVW_ABS_NC	43
+#define R_ARM_MOVT_ABS		44
+#define R_ARM_MOVW_PREL_NC	45
+#define R_ARM_MOVT_PREL		46
+#define R_ARM_THM_MOVW_ABS_NC	47
+#define R_ARM_THM_MOVT_ABS	48
+#define R_ARM_THM_MOVW_PREL_NC	49
+#define R_ARM_THM_MOVT_PREL	50
+#define R_ARM_THM_JUMP19	51
+#define R_ARM_THM_JUMP6		52
+#define R_ARM_THM_ALU_PREL_11_0	53
+#define R_ARM_THM_PC12		54
+#define R_ARM_ABS32_NOI		55
+#define R_ARM_REL32_NOI		56
+#define R_ARM_ALU_PC_G0_NC	57
+#define R_ARM_ALU_PC_G0		58
+#define R_ARM_ALU_PC_G1_NC	59
+#define R_ARM_ALU_PC_G1		60
+#define R_ARM_ALU_PC_G2		61
+#define R_ARM_LDR_PC_G1		62
+#define R_ARM_LDR_PC_G2		63
+#define R_ARM_LDRS_PC_G0	64
+#define R_ARM_LDRS_PC_G1	65
+#define R_ARM_LDRS_PC_G2	66
+#define R_ARM_LDC_PC_G0		67
+#define R_ARM_LDC_PC_G1		68
+#define R_ARM_LDC_PC_G2		69
+#define R_ARM_ALU_SB_G0_NC	70
+#define R_ARM_ALU_SB_G0		71
+#define R_ARM_ALU_SB_G1_NC	72
+#define R_ARM_ALU_SB_G1		73
+#define R_ARM_ALU_SB_G2		74
+#define R_ARM_LDR_SB_G0		75
+#define R_ARM_LDR_SB_G1		76
+#define R_ARM_LDR_SB_G2		77
+#define R_ARM_LDRS_SB_G0	78
+#define R_ARM_LDRS_SB_G1	79
+#define R_ARM_LDRS_SB_G2	80
+#define R_ARM_LDC_SB_G0		81
+#define R_ARM_LDC_SB_G1		82
+#define R_ARM_LDC_SB_G2		83
+#define R_ARM_MOVW_BREL_NC	84
+#define R_ARM_MOVT_BREL		85
+#define R_ARM_MOVW_BREL		86
+#define R_ARM_THM_MOVW_BREL_NC	87
+#define R_ARM_THM_MOVT_BREL	88
+#define R_ARM_THM_MOVW_BREL	89
+#define R_ARM_TLS_GOTDESC	90
+#define R_ARM_TLS_CALL		91
+#define R_ARM_TLS_DESCSEQ	92
+#define R_ARM_THM_TLS_CALL	93
+#define R_ARM_PLT32_ABS		94
+#define R_ARM_GOT_ABS		95
+#define R_ARM_GOT_PREL		96
+#define R_ARM_GOT_BREL12	97
+#define R_ARM_GOTOFF12		98
+#define R_ARM_GOTRELAX		99
+#define R_ARM_GNU_VTENTRY	100
+#define R_ARM_GNU_VTINHERIT	101
+#define R_ARM_THM_PC11		102
+#define R_ARM_THM_PC9		103
+#define R_ARM_TLS_GD32		104
+
+#define R_ARM_TLS_LDM32		105
+
+#define R_ARM_TLS_LDO32		106
+
+#define R_ARM_TLS_IE32		107
+
+#define R_ARM_TLS_LE32		108
+#define R_ARM_TLS_LDO12		109
+#define R_ARM_TLS_LE12		110
+#define R_ARM_TLS_IE12GP	111
+#define R_ARM_ME_TOO		128
+#define R_ARM_THM_TLS_DESCSEQ	129
+#define R_ARM_THM_TLS_DESCSEQ16	129
+#define R_ARM_THM_TLS_DESCSEQ32	130
+#define R_ARM_THM_GOT_BREL12	131
+#define R_ARM_IRELATIVE		160
+#define R_ARM_RXPC25		249
+#define R_ARM_RSBREL32		250
+#define R_ARM_THM_RPC22		251
+#define R_ARM_RREL32		252
+#define R_ARM_RABS22		253
+#define R_ARM_RPC24		254
+#define R_ARM_RBASE		255
+
+#define R_ARM_NUM		256
+
+
+#define R_CKCORE_NONE               0
+#define R_CKCORE_ADDR32             1
+#define R_CKCORE_PCRELIMM8BY4       2
+#define R_CKCORE_PCRELIMM11BY2      3
+#define R_CKCORE_PCREL32            5
+#define R_CKCORE_PCRELJSR_IMM11BY2  6
+#define R_CKCORE_RELATIVE           9
+#define R_CKCORE_COPY               10
+#define R_CKCORE_GLOB_DAT           11
+#define R_CKCORE_JUMP_SLOT          12
+#define R_CKCORE_GOTOFF             13
+#define R_CKCORE_GOTPC              14
+#define R_CKCORE_GOT32              15
+#define R_CKCORE_PLT32              16
+#define R_CKCORE_ADDRGOT            17
+#define R_CKCORE_ADDRPLT            18
+#define R_CKCORE_PCREL_IMM26BY2     19
+#define R_CKCORE_PCREL_IMM16BY2     20
+#define R_CKCORE_PCREL_IMM16BY4     21
+#define R_CKCORE_PCREL_IMM10BY2     22
+#define R_CKCORE_PCREL_IMM10BY4     23
+#define R_CKCORE_ADDR_HI16          24
+#define R_CKCORE_ADDR_LO16          25
+#define R_CKCORE_GOTPC_HI16         26
+#define R_CKCORE_GOTPC_LO16         27
+#define R_CKCORE_GOTOFF_HI16        28
+#define R_CKCORE_GOTOFF_LO16        29
+#define R_CKCORE_GOT12              30
+#define R_CKCORE_GOT_HI16           31
+#define R_CKCORE_GOT_LO16           32
+#define R_CKCORE_PLT12              33
+#define R_CKCORE_PLT_HI16           34
+#define R_CKCORE_PLT_LO16           35
+#define R_CKCORE_ADDRGOT_HI16       36
+#define R_CKCORE_ADDRGOT_LO16       37
+#define R_CKCORE_ADDRPLT_HI16       38
+#define R_CKCORE_ADDRPLT_LO16       39
+#define R_CKCORE_PCREL_JSR_IMM26BY2 40
+#define R_CKCORE_TOFFSET_LO16       41
+#define R_CKCORE_DOFFSET_LO16       42
+#define R_CKCORE_PCREL_IMM18BY2     43
+#define R_CKCORE_DOFFSET_IMM18      44
+#define R_CKCORE_DOFFSET_IMM18BY2   45
+#define R_CKCORE_DOFFSET_IMM18BY4   46
+#define R_CKCORE_GOT_IMM18BY4       48
+#define R_CKCORE_PLT_IMM18BY4       49
+#define R_CKCORE_PCREL_IMM7BY4      50
+#define R_CKCORE_TLS_LE32           51
+#define R_CKCORE_TLS_IE32           52
+#define R_CKCORE_TLS_GD32           53
+#define R_CKCORE_TLS_LDM32          54
+#define R_CKCORE_TLS_LDO32          55
+#define R_CKCORE_TLS_DTPMOD32       56
+#define R_CKCORE_TLS_DTPOFF32       57
+#define R_CKCORE_TLS_TPOFF32        58
+
+
+#define EF_IA_64_MASKOS		0x0000000f
+#define EF_IA_64_ABI64		0x00000010
+#define EF_IA_64_ARCH		0xff000000
+
+
+#define PT_IA_64_ARCHEXT	(PT_LOPROC + 0)
+#define PT_IA_64_UNWIND		(PT_LOPROC + 1)
+#define PT_IA_64_HP_OPT_ANOT	(PT_LOOS + 0x12)
+#define PT_IA_64_HP_HSL_ANOT	(PT_LOOS + 0x13)
+#define PT_IA_64_HP_STACK	(PT_LOOS + 0x14)
+
+
+#define PF_IA_64_NORECOV	0x80000000
+
+
+#define SHT_IA_64_EXT		(SHT_LOPROC + 0)
+#define SHT_IA_64_UNWIND	(SHT_LOPROC + 1)
+
+
+#define SHF_IA_64_SHORT		0x10000000
+#define SHF_IA_64_NORECOV	0x20000000
+
+
+#define DT_IA_64_PLT_RESERVE	(DT_LOPROC + 0)
+#define DT_IA_64_NUM		1
+
+
+#define R_IA64_NONE		0x00
+#define R_IA64_IMM14		0x21
+#define R_IA64_IMM22		0x22
+#define R_IA64_IMM64		0x23
+#define R_IA64_DIR32MSB		0x24
+#define R_IA64_DIR32LSB		0x25
+#define R_IA64_DIR64MSB		0x26
+#define R_IA64_DIR64LSB		0x27
+#define R_IA64_GPREL22		0x2a
+#define R_IA64_GPREL64I		0x2b
+#define R_IA64_GPREL32MSB	0x2c
+#define R_IA64_GPREL32LSB	0x2d
+#define R_IA64_GPREL64MSB	0x2e
+#define R_IA64_GPREL64LSB	0x2f
+#define R_IA64_LTOFF22		0x32
+#define R_IA64_LTOFF64I		0x33
+#define R_IA64_PLTOFF22		0x3a
+#define R_IA64_PLTOFF64I	0x3b
+#define R_IA64_PLTOFF64MSB	0x3e
+#define R_IA64_PLTOFF64LSB	0x3f
+#define R_IA64_FPTR64I		0x43
+#define R_IA64_FPTR32MSB	0x44
+#define R_IA64_FPTR32LSB	0x45
+#define R_IA64_FPTR64MSB	0x46
+#define R_IA64_FPTR64LSB	0x47
+#define R_IA64_PCREL60B		0x48
+#define R_IA64_PCREL21B		0x49
+#define R_IA64_PCREL21M		0x4a
+#define R_IA64_PCREL21F		0x4b
+#define R_IA64_PCREL32MSB	0x4c
+#define R_IA64_PCREL32LSB	0x4d
+#define R_IA64_PCREL64MSB	0x4e
+#define R_IA64_PCREL64LSB	0x4f
+#define R_IA64_LTOFF_FPTR22	0x52
+#define R_IA64_LTOFF_FPTR64I	0x53
+#define R_IA64_LTOFF_FPTR32MSB	0x54
+#define R_IA64_LTOFF_FPTR32LSB	0x55
+#define R_IA64_LTOFF_FPTR64MSB	0x56
+#define R_IA64_LTOFF_FPTR64LSB	0x57
+#define R_IA64_SEGREL32MSB	0x5c
+#define R_IA64_SEGREL32LSB	0x5d
+#define R_IA64_SEGREL64MSB	0x5e
+#define R_IA64_SEGREL64LSB	0x5f
+#define R_IA64_SECREL32MSB	0x64
+#define R_IA64_SECREL32LSB	0x65
+#define R_IA64_SECREL64MSB	0x66
+#define R_IA64_SECREL64LSB	0x67
+#define R_IA64_REL32MSB		0x6c
+#define R_IA64_REL32LSB		0x6d
+#define R_IA64_REL64MSB		0x6e
+#define R_IA64_REL64LSB		0x6f
+#define R_IA64_LTV32MSB		0x74
+#define R_IA64_LTV32LSB		0x75
+#define R_IA64_LTV64MSB		0x76
+#define R_IA64_LTV64LSB		0x77
+#define R_IA64_PCREL21BI	0x79
+#define R_IA64_PCREL22		0x7a
+#define R_IA64_PCREL64I		0x7b
+#define R_IA64_IPLTMSB		0x80
+#define R_IA64_IPLTLSB		0x81
+#define R_IA64_COPY		0x84
+#define R_IA64_SUB		0x85
+#define R_IA64_LTOFF22X		0x86
+#define R_IA64_LDXMOV		0x87
+#define R_IA64_TPREL14		0x91
+#define R_IA64_TPREL22		0x92
+#define R_IA64_TPREL64I		0x93
+#define R_IA64_TPREL64MSB	0x96
+#define R_IA64_TPREL64LSB	0x97
+#define R_IA64_LTOFF_TPREL22	0x9a
+#define R_IA64_DTPMOD64MSB	0xa6
+#define R_IA64_DTPMOD64LSB	0xa7
+#define R_IA64_LTOFF_DTPMOD22	0xaa
+#define R_IA64_DTPREL14		0xb1
+#define R_IA64_DTPREL22		0xb2
+#define R_IA64_DTPREL64I	0xb3
+#define R_IA64_DTPREL32MSB	0xb4
+#define R_IA64_DTPREL32LSB	0xb5
+#define R_IA64_DTPREL64MSB	0xb6
+#define R_IA64_DTPREL64LSB	0xb7
+#define R_IA64_LTOFF_DTPREL22	0xba
+
+
+#define EF_SH_MACH_MASK		0x1f
+#define EF_SH_UNKNOWN		0x0
+#define EF_SH1			0x1
+#define EF_SH2			0x2
+#define EF_SH3			0x3
+#define EF_SH_DSP		0x4
+#define EF_SH3_DSP		0x5
+#define EF_SH4AL_DSP		0x6
+#define EF_SH3E			0x8
+#define EF_SH4			0x9
+#define EF_SH2E			0xb
+#define EF_SH4A			0xc
+#define EF_SH2A			0xd
+#define EF_SH4_NOFPU		0x10
+#define EF_SH4A_NOFPU		0x11
+#define EF_SH4_NOMMU_NOFPU	0x12
+#define EF_SH2A_NOFPU		0x13
+#define EF_SH3_NOMMU		0x14
+#define EF_SH2A_SH4_NOFPU	0x15
+#define EF_SH2A_SH3_NOFPU	0x16
+#define EF_SH2A_SH4		0x17
+#define EF_SH2A_SH3E		0x18
+
+#define	R_SH_NONE		0
+#define	R_SH_DIR32		1
+#define	R_SH_REL32		2
+#define	R_SH_DIR8WPN		3
+#define	R_SH_IND12W		4
+#define	R_SH_DIR8WPL		5
+#define	R_SH_DIR8WPZ		6
+#define	R_SH_DIR8BP		7
+#define	R_SH_DIR8W		8
+#define	R_SH_DIR8L		9
+#define	R_SH_SWITCH16		25
+#define	R_SH_SWITCH32		26
+#define	R_SH_USES		27
+#define	R_SH_COUNT		28
+#define	R_SH_ALIGN		29
+#define	R_SH_CODE		30
+#define	R_SH_DATA		31
+#define	R_SH_LABEL		32
+#define	R_SH_SWITCH8		33
+#define	R_SH_GNU_VTINHERIT	34
+#define	R_SH_GNU_VTENTRY	35
+#define	R_SH_TLS_GD_32		144
+#define	R_SH_TLS_LD_32		145
+#define	R_SH_TLS_LDO_32		146
+#define	R_SH_TLS_IE_32		147
+#define	R_SH_TLS_LE_32		148
+#define	R_SH_TLS_DTPMOD32	149
+#define	R_SH_TLS_DTPOFF32	150
+#define	R_SH_TLS_TPOFF32	151
+#define	R_SH_GOT32		160
+#define	R_SH_PLT32		161
+#define	R_SH_COPY		162
+#define	R_SH_GLOB_DAT		163
+#define	R_SH_JMP_SLOT		164
+#define	R_SH_RELATIVE		165
+#define	R_SH_GOTOFF		166
+#define	R_SH_GOTPC		167
+#define	R_SH_GOT20		201
+#define	R_SH_GOTOFF20		202
+#define	R_SH_GOTFUNCDESC	203
+#define	R_SH_GOTFUNCDEST20	204
+#define	R_SH_GOTOFFFUNCDESC	205
+#define	R_SH_GOTOFFFUNCDEST20	206
+#define	R_SH_FUNCDESC		207
+#define	R_SH_FUNCDESC_VALUE	208
+
+#define	R_SH_NUM		256
+
+
+
+#define R_390_NONE		0
+#define R_390_8			1
+#define R_390_12		2
+#define R_390_16		3
+#define R_390_32		4
+#define R_390_PC32		5
+#define R_390_GOT12		6
+#define R_390_GOT32		7
+#define R_390_PLT32		8
+#define R_390_COPY		9
+#define R_390_GLOB_DAT		10
+#define R_390_JMP_SLOT		11
+#define R_390_RELATIVE		12
+#define R_390_GOTOFF32		13
+#define R_390_GOTPC		14
+#define R_390_GOT16		15
+#define R_390_PC16		16
+#define R_390_PC16DBL		17
+#define R_390_PLT16DBL		18
+#define R_390_PC32DBL		19
+#define R_390_PLT32DBL		20
+#define R_390_GOTPCDBL		21
+#define R_390_64		22
+#define R_390_PC64		23
+#define R_390_GOT64		24
+#define R_390_PLT64		25
+#define R_390_GOTENT		26
+#define R_390_GOTOFF16		27
+#define R_390_GOTOFF64		28
+#define R_390_GOTPLT12		29
+#define R_390_GOTPLT16		30
+#define R_390_GOTPLT32		31
+#define R_390_GOTPLT64		32
+#define R_390_GOTPLTENT		33
+#define R_390_PLTOFF16		34
+#define R_390_PLTOFF32		35
+#define R_390_PLTOFF64		36
+#define R_390_TLS_LOAD		37
+#define R_390_TLS_GDCALL	38
+
+#define R_390_TLS_LDCALL	39
+
+#define R_390_TLS_GD32		40
+
+#define R_390_TLS_GD64		41
+
+#define R_390_TLS_GOTIE12	42
+
+#define R_390_TLS_GOTIE32	43
+
+#define R_390_TLS_GOTIE64	44
+
+#define R_390_TLS_LDM32		45
+
+#define R_390_TLS_LDM64		46
+
+#define R_390_TLS_IE32		47
+
+#define R_390_TLS_IE64		48
+
+#define R_390_TLS_IEENT		49
+
+#define R_390_TLS_LE32		50
+
+#define R_390_TLS_LE64		51
+
+#define R_390_TLS_LDO32		52
+
+#define R_390_TLS_LDO64		53
+
+#define R_390_TLS_DTPMOD	54
+#define R_390_TLS_DTPOFF	55
+#define R_390_TLS_TPOFF		56
+
+#define R_390_20		57
+#define R_390_GOT20		58
+#define R_390_GOTPLT20		59
+#define R_390_TLS_GOTIE20	60
+
+
+#define R_390_NUM		61
+
+
+
+#define R_CRIS_NONE		0
+#define R_CRIS_8		1
+#define R_CRIS_16		2
+#define R_CRIS_32		3
+#define R_CRIS_8_PCREL		4
+#define R_CRIS_16_PCREL		5
+#define R_CRIS_32_PCREL		6
+#define R_CRIS_GNU_VTINHERIT	7
+#define R_CRIS_GNU_VTENTRY	8
+#define R_CRIS_COPY		9
+#define R_CRIS_GLOB_DAT		10
+#define R_CRIS_JUMP_SLOT	11
+#define R_CRIS_RELATIVE		12
+#define R_CRIS_16_GOT		13
+#define R_CRIS_32_GOT		14
+#define R_CRIS_16_GOTPLT	15
+#define R_CRIS_32_GOTPLT	16
+#define R_CRIS_32_GOTREL	17
+#define R_CRIS_32_PLT_GOTREL	18
+#define R_CRIS_32_PLT_PCREL	19
+
+#define R_CRIS_NUM		20
+
+
+
+#define R_X86_64_NONE		0
+#define R_X86_64_64		1
+#define R_X86_64_PC32		2
+#define R_X86_64_GOT32		3
+#define R_X86_64_PLT32		4
+#define R_X86_64_COPY		5
+#define R_X86_64_GLOB_DAT	6
+#define R_X86_64_JUMP_SLOT	7
+#define R_X86_64_RELATIVE	8
+#define R_X86_64_GOTPCREL	9
+
+#define R_X86_64_32		10
+#define R_X86_64_32S		11
+#define R_X86_64_16		12
+#define R_X86_64_PC16		13
+#define R_X86_64_8		14
+#define R_X86_64_PC8		15
+#define R_X86_64_DTPMOD64	16
+#define R_X86_64_DTPOFF64	17
+#define R_X86_64_TPOFF64	18
+#define R_X86_64_TLSGD		19
+
+#define R_X86_64_TLSLD		20
+
+#define R_X86_64_DTPOFF32	21
+#define R_X86_64_GOTTPOFF	22
+
+#define R_X86_64_TPOFF32	23
+#define R_X86_64_PC64		24
+#define R_X86_64_GOTOFF64	25
+#define R_X86_64_GOTPC32	26
+#define R_X86_64_GOT64		27
+#define R_X86_64_GOTPCREL64	28
+#define R_X86_64_GOTPC64	29
+#define R_X86_64_GOTPLT64	30
+#define R_X86_64_PLTOFF64	31
+#define R_X86_64_SIZE32		32
+#define R_X86_64_SIZE64		33
+
+#define R_X86_64_GOTPC32_TLSDESC 34
+#define R_X86_64_TLSDESC_CALL   35
+
+#define R_X86_64_TLSDESC        36
+#define R_X86_64_IRELATIVE	37
+#define R_X86_64_RELATIVE64	38
+#define R_X86_64_GOTPCRELX	41
+#define R_X86_64_REX_GOTPCRELX	42
+#define R_X86_64_NUM		43
+
+
+
+#define R_MN10300_NONE		0
+#define R_MN10300_32		1
+#define R_MN10300_16		2
+#define R_MN10300_8		3
+#define R_MN10300_PCREL32	4
+#define R_MN10300_PCREL16	5
+#define R_MN10300_PCREL8	6
+#define R_MN10300_GNU_VTINHERIT	7
+#define R_MN10300_GNU_VTENTRY	8
+#define R_MN10300_24		9
+#define R_MN10300_GOTPC32	10
+#define R_MN10300_GOTPC16	11
+#define R_MN10300_GOTOFF32	12
+#define R_MN10300_GOTOFF24	13
+#define R_MN10300_GOTOFF16	14
+#define R_MN10300_PLT32		15
+#define R_MN10300_PLT16		16
+#define R_MN10300_GOT32		17
+#define R_MN10300_GOT24		18
+#define R_MN10300_GOT16		19
+#define R_MN10300_COPY		20
+#define R_MN10300_GLOB_DAT	21
+#define R_MN10300_JMP_SLOT	22
+#define R_MN10300_RELATIVE	23
+
+#define R_MN10300_NUM		24
+
+
+
+#define R_M32R_NONE		0
+#define R_M32R_16		1
+#define R_M32R_32		2
+#define R_M32R_24		3
+#define R_M32R_10_PCREL		4
+#define R_M32R_18_PCREL		5
+#define R_M32R_26_PCREL		6
+#define R_M32R_HI16_ULO		7
+#define R_M32R_HI16_SLO		8
+#define R_M32R_LO16		9
+#define R_M32R_SDA16		10
+#define R_M32R_GNU_VTINHERIT	11
+#define R_M32R_GNU_VTENTRY	12
+
+#define R_M32R_16_RELA		33
+#define R_M32R_32_RELA		34
+#define R_M32R_24_RELA		35
+#define R_M32R_10_PCREL_RELA	36
+#define R_M32R_18_PCREL_RELA	37
+#define R_M32R_26_PCREL_RELA	38
+#define R_M32R_HI16_ULO_RELA	39
+#define R_M32R_HI16_SLO_RELA	40
+#define R_M32R_LO16_RELA	41
+#define R_M32R_SDA16_RELA	42
+#define R_M32R_RELA_GNU_VTINHERIT	43
+#define R_M32R_RELA_GNU_VTENTRY	44
+#define R_M32R_REL32		45
+
+#define R_M32R_GOT24		48
+#define R_M32R_26_PLTREL	49
+#define R_M32R_COPY		50
+#define R_M32R_GLOB_DAT		51
+#define R_M32R_JMP_SLOT		52
+#define R_M32R_RELATIVE		53
+#define R_M32R_GOTOFF		54
+#define R_M32R_GOTPC24		55
+#define R_M32R_GOT16_HI_ULO	56
+
+#define R_M32R_GOT16_HI_SLO	57
+
+#define R_M32R_GOT16_LO		58
+#define R_M32R_GOTPC_HI_ULO	59
+
+#define R_M32R_GOTPC_HI_SLO	60
+
+#define R_M32R_GOTPC_LO		61
+
+#define R_M32R_GOTOFF_HI_ULO	62
+
+#define R_M32R_GOTOFF_HI_SLO	63
+
+#define R_M32R_GOTOFF_LO	64
+#define R_M32R_NUM		256
+
+#define R_MICROBLAZE_NONE 0
+#define R_MICROBLAZE_32 1
+#define R_MICROBLAZE_32_PCREL 2
+#define R_MICROBLAZE_64_PCREL 3
+#define R_MICROBLAZE_32_PCREL_LO 4
+#define R_MICROBLAZE_64 5
+#define R_MICROBLAZE_32_LO 6
+#define R_MICROBLAZE_SRO32 7
+#define R_MICROBLAZE_SRW32 8
+#define R_MICROBLAZE_64_NONE 9
+#define R_MICROBLAZE_32_SYM_OP_SYM 10
+#define R_MICROBLAZE_GNU_VTINHERIT 11
+#define R_MICROBLAZE_GNU_VTENTRY 12
+#define R_MICROBLAZE_GOTPC_64 13
+#define R_MICROBLAZE_GOT_64 14
+#define R_MICROBLAZE_PLT_64 15
+#define R_MICROBLAZE_REL 16
+#define R_MICROBLAZE_JUMP_SLOT 17
+#define R_MICROBLAZE_GLOB_DAT 18
+#define R_MICROBLAZE_GOTOFF_64 19
+#define R_MICROBLAZE_GOTOFF_32 20
+#define R_MICROBLAZE_COPY 21
+#define R_MICROBLAZE_TLS 22
+#define R_MICROBLAZE_TLSGD 23
+#define R_MICROBLAZE_TLSLD 24
+#define R_MICROBLAZE_TLSDTPMOD32 25
+#define R_MICROBLAZE_TLSDTPREL32 26
+#define R_MICROBLAZE_TLSDTPREL64 27
+#define R_MICROBLAZE_TLSGOTTPREL32 28
+#define R_MICROBLAZE_TLSTPREL32	 29
+
+#define DT_NIOS2_GP             0x70000002
+
+#define R_NIOS2_NONE		0
+#define R_NIOS2_S16		1
+#define R_NIOS2_U16		2
+#define R_NIOS2_PCREL16		3
+#define R_NIOS2_CALL26		4
+#define R_NIOS2_IMM5		5
+#define R_NIOS2_CACHE_OPX	6
+#define R_NIOS2_IMM6		7
+#define R_NIOS2_IMM8		8
+#define R_NIOS2_HI16		9
+#define R_NIOS2_LO16		10
+#define R_NIOS2_HIADJ16		11
+#define R_NIOS2_BFD_RELOC_32	12
+#define R_NIOS2_BFD_RELOC_16	13
+#define R_NIOS2_BFD_RELOC_8	14
+#define R_NIOS2_GPREL		15
+#define R_NIOS2_GNU_VTINHERIT	16
+#define R_NIOS2_GNU_VTENTRY	17
+#define R_NIOS2_UJMP		18
+#define R_NIOS2_CJMP		19
+#define R_NIOS2_CALLR		20
+#define R_NIOS2_ALIGN		21
+#define R_NIOS2_GOT16		22
+#define R_NIOS2_CALL16		23
+#define R_NIOS2_GOTOFF_LO	24
+#define R_NIOS2_GOTOFF_HA	25
+#define R_NIOS2_PCREL_LO	26
+#define R_NIOS2_PCREL_HA	27
+#define R_NIOS2_TLS_GD16	28
+#define R_NIOS2_TLS_LDM16	29
+#define R_NIOS2_TLS_LDO16	30
+#define R_NIOS2_TLS_IE16	31
+#define R_NIOS2_TLS_LE16	32
+#define R_NIOS2_TLS_DTPMOD	33
+#define R_NIOS2_TLS_DTPREL	34
+#define R_NIOS2_TLS_TPREL	35
+#define R_NIOS2_COPY		36
+#define R_NIOS2_GLOB_DAT	37
+#define R_NIOS2_JUMP_SLOT	38
+#define R_NIOS2_RELATIVE	39
+#define R_NIOS2_GOTOFF		40
+#define R_NIOS2_CALL26_NOAT	41
+#define R_NIOS2_GOT_LO		42
+#define R_NIOS2_GOT_HA		43
+#define R_NIOS2_CALL_LO		44
+#define R_NIOS2_CALL_HA		45
+
+#define R_OR1K_NONE		0
+#define R_OR1K_32		1
+#define R_OR1K_16		2
+#define R_OR1K_8		3
+#define R_OR1K_LO_16_IN_INSN	4
+#define R_OR1K_HI_16_IN_INSN	5
+#define R_OR1K_INSN_REL_26	6
+#define R_OR1K_GNU_VTENTRY	7
+#define R_OR1K_GNU_VTINHERIT	8
+#define R_OR1K_32_PCREL		9
+#define R_OR1K_16_PCREL		10
+#define R_OR1K_8_PCREL		11
+#define R_OR1K_GOTPC_HI16	12
+#define R_OR1K_GOTPC_LO16	13
+#define R_OR1K_GOT16		14
+#define R_OR1K_PLT26		15
+#define R_OR1K_GOTOFF_HI16	16
+#define R_OR1K_GOTOFF_LO16	17
+#define R_OR1K_COPY		18
+#define R_OR1K_GLOB_DAT		19
+#define R_OR1K_JMP_SLOT		20
+#define R_OR1K_RELATIVE		21
+#define R_OR1K_TLS_GD_HI16	22
+#define R_OR1K_TLS_GD_LO16	23
+#define R_OR1K_TLS_LDM_HI16	24
+#define R_OR1K_TLS_LDM_LO16	25
+#define R_OR1K_TLS_LDO_HI16	26
+#define R_OR1K_TLS_LDO_LO16	27
+#define R_OR1K_TLS_IE_HI16	28
+#define R_OR1K_TLS_IE_LO16	29
+#define R_OR1K_TLS_LE_HI16	30
+#define R_OR1K_TLS_LE_LO16	31
+#define R_OR1K_TLS_TPOFF	32
+#define R_OR1K_TLS_DTPOFF	33
+#define R_OR1K_TLS_DTPMOD	34
+
+#define R_BPF_NONE		0
+#define R_BPF_MAP_FD		1
+
+#define R_RISCV_NONE            0
+#define R_RISCV_32              1
+#define R_RISCV_64              2
+#define R_RISCV_RELATIVE        3
+#define R_RISCV_COPY            4
+#define R_RISCV_JUMP_SLOT       5
+#define R_RISCV_TLS_DTPMOD32    6
+#define R_RISCV_TLS_DTPMOD64    7
+#define R_RISCV_TLS_DTPREL32    8
+#define R_RISCV_TLS_DTPREL64    9
+#define R_RISCV_TLS_TPREL32     10
+#define R_RISCV_TLS_TPREL64     11
+
+#define R_RISCV_BRANCH          16
+#define R_RISCV_JAL             17
+#define R_RISCV_CALL            18
+#define R_RISCV_CALL_PLT        19
+#define R_RISCV_GOT_HI20        20
+#define R_RISCV_TLS_GOT_HI20    21
+#define R_RISCV_TLS_GD_HI20     22
+#define R_RISCV_PCREL_HI20      23
+#define R_RISCV_PCREL_LO12_I    24
+#define R_RISCV_PCREL_LO12_S    25
+#define R_RISCV_HI20            26
+#define R_RISCV_LO12_I          27
+#define R_RISCV_LO12_S          28
+#define R_RISCV_TPREL_HI20      29
+#define R_RISCV_TPREL_LO12_I    30
+#define R_RISCV_TPREL_LO12_S    31
+#define R_RISCV_TPREL_ADD       32
+#define R_RISCV_ADD8            33
+#define R_RISCV_ADD16           34
+#define R_RISCV_ADD32           35
+#define R_RISCV_ADD64           36
+#define R_RISCV_SUB8            37
+#define R_RISCV_SUB16           38
+#define R_RISCV_SUB32           39
+#define R_RISCV_SUB64           40
+#define R_RISCV_GNU_VTINHERIT   41
+#define R_RISCV_GNU_VTENTRY     42
+#define R_RISCV_ALIGN           43
+#define R_RISCV_RVC_BRANCH      44
+#define R_RISCV_RVC_JUMP        45
+#define R_RISCV_RVC_LUI         46
+#define R_RISCV_GPREL_I         47
+#define R_RISCV_GPREL_S         48
+#define R_RISCV_TPREL_I         49
+#define R_RISCV_TPREL_S         50
+#define R_RISCV_RELAX           51
+#define R_RISCV_SUB6            52
+#define R_RISCV_SET6            53
+#define R_RISCV_SET8            54
+#define R_RISCV_SET16           55
+#define R_RISCV_SET32           56
+#define R_RISCV_32_PCREL        57
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif
diff --git a/x86_64-linux-musl/include/endian.h b/x86_64-linux-musl/include/endian.h
new file mode 100644
index 0000000..172c432
--- /dev/null
+++ b/x86_64-linux-musl/include/endian.h
@@ -0,0 +1,80 @@
+#ifndef _ENDIAN_H
+#define _ENDIAN_H
+
+#include <features.h>
+
+#define __NEED_uint16_t
+#define __NEED_uint32_t
+#define __NEED_uint64_t
+
+#include <bits/alltypes.h>
+
+#define __PDP_ENDIAN 3412
+
+#define BIG_ENDIAN __BIG_ENDIAN
+#define LITTLE_ENDIAN __LITTLE_ENDIAN
+#define PDP_ENDIAN __PDP_ENDIAN
+#define BYTE_ORDER __BYTE_ORDER
+
+static __inline uint16_t __bswap16(uint16_t __x)
+{
+	return __x<<8 | __x>>8;
+}
+
+static __inline uint32_t __bswap32(uint32_t __x)
+{
+	return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
+}
+
+static __inline uint64_t __bswap64(uint64_t __x)
+{
+	return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
+}
+
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+#define htobe16(x) __bswap16(x)
+#define be16toh(x) __bswap16(x)
+#define htobe32(x) __bswap32(x)
+#define be32toh(x) __bswap32(x)
+#define htobe64(x) __bswap64(x)
+#define be64toh(x) __bswap64(x)
+#define htole16(x) (uint16_t)(x)
+#define le16toh(x) (uint16_t)(x)
+#define htole32(x) (uint32_t)(x)
+#define le32toh(x) (uint32_t)(x)
+#define htole64(x) (uint64_t)(x)
+#define le64toh(x) (uint64_t)(x)
+#else
+#define htobe16(x) (uint16_t)(x)
+#define be16toh(x) (uint16_t)(x)
+#define htobe32(x) (uint32_t)(x)
+#define be32toh(x) (uint32_t)(x)
+#define htobe64(x) (uint64_t)(x)
+#define be64toh(x) (uint64_t)(x)
+#define htole16(x) __bswap16(x)
+#define le16toh(x) __bswap16(x)
+#define htole32(x) __bswap32(x)
+#define le32toh(x) __bswap32(x)
+#define htole64(x) __bswap64(x)
+#define le64toh(x) __bswap64(x)
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+#define betoh16(x) __bswap16(x)
+#define betoh32(x) __bswap32(x)
+#define betoh64(x) __bswap64(x)
+#define letoh16(x) (uint16_t)(x)
+#define letoh32(x) (uint32_t)(x)
+#define letoh64(x) (uint64_t)(x)
+#else
+#define betoh16(x) (uint16_t)(x)
+#define betoh32(x) (uint32_t)(x)
+#define betoh64(x) (uint64_t)(x)
+#define letoh16(x) __bswap16(x)
+#define letoh32(x) __bswap32(x)
+#define letoh64(x) __bswap64(x)
+#endif
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/err.h b/x86_64-linux-musl/include/err.h
new file mode 100644
index 0000000..9f5cb6b
--- /dev/null
+++ b/x86_64-linux-musl/include/err.h
@@ -0,0 +1,25 @@
+#ifndef _ERR_H
+#define _ERR_H
+
+#include <features.h>
+#include <stdarg.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void warn(const char *, ...);
+void vwarn(const char *, va_list);
+void warnx(const char *, ...);
+void vwarnx(const char *, va_list);
+
+_Noreturn void err(int, const char *, ...);
+_Noreturn void verr(int, const char *, va_list);
+_Noreturn void errx(int, const char *, ...);
+_Noreturn void verrx(int, const char *, va_list);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/errno.h b/x86_64-linux-musl/include/errno.h
new file mode 100644
index 0000000..0361b33
--- /dev/null
+++ b/x86_64-linux-musl/include/errno.h
@@ -0,0 +1,27 @@
+#ifndef	_ERRNO_H
+#define _ERRNO_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#include <bits/errno.h>
+
+#ifdef __GNUC__
+__attribute__((const))
+#endif
+int *__errno_location(void);
+#define errno (*__errno_location())
+
+#ifdef _GNU_SOURCE
+extern char *program_invocation_short_name, *program_invocation_name;
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/x86_64-linux-musl/include/execinfo.h b/x86_64-linux-musl/include/execinfo.h
new file mode 100644
index 0000000..e092c00
--- /dev/null
+++ b/x86_64-linux-musl/include/execinfo.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#pragma once
+
+/*
+ * This file is exported as part of libexecinfo for use with musl, which doesn't
+ * define __INTRODUCED_IN.  Stub it out.
+ */
+#define __INTRODUCED_IN(x)
+#include <bionic/execinfo.h>
+#undef __INTRODUCED_IN
diff --git a/x86_64-linux-musl/include/fcntl.h b/x86_64-linux-musl/include/fcntl.h
new file mode 100644
index 0000000..b664cdc
--- /dev/null
+++ b/x86_64-linux-musl/include/fcntl.h
@@ -0,0 +1,216 @@
+#ifndef	_FCNTL_H
+#define	_FCNTL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_off_t
+#define __NEED_pid_t
+#define __NEED_mode_t
+
+#ifdef _GNU_SOURCE
+#define __NEED_size_t
+#define __NEED_ssize_t
+#define __NEED_struct_iovec
+#endif
+
+#include <bits/alltypes.h>
+
+#include <bits/fcntl.h>
+
+struct flock {
+	short l_type;
+	short l_whence;
+	off_t l_start;
+	off_t l_len;
+	pid_t l_pid;
+};
+
+int creat(const char *, mode_t);
+int fcntl(int, int, ...);
+int open(const char *, int, ...);
+int openat(int, const char *, int, ...);
+int posix_fadvise(int, off_t, off_t, int);
+int posix_fallocate(int, off_t, off_t);
+
+#define O_SEARCH   O_PATH
+#define O_EXEC     O_PATH
+#define O_TTY_INIT 0
+
+#define O_ACCMODE (03|O_SEARCH)
+#define O_RDONLY  00
+#define O_WRONLY  01
+#define O_RDWR    02
+
+#define F_OFD_GETLK 36
+#define F_OFD_SETLK 37
+#define F_OFD_SETLKW 38
+
+#define F_DUPFD_CLOEXEC 1030
+
+#define F_RDLCK 0
+#define F_WRLCK 1
+#define F_UNLCK 2
+
+#define FD_CLOEXEC 1
+
+#define AT_FDCWD (-100)
+#define AT_SYMLINK_NOFOLLOW 0x100
+#define AT_REMOVEDIR 0x200
+#define AT_SYMLINK_FOLLOW 0x400
+#define AT_EACCESS 0x200
+
+#define POSIX_FADV_NORMAL     0
+#define POSIX_FADV_RANDOM     1
+#define POSIX_FADV_SEQUENTIAL 2
+#define POSIX_FADV_WILLNEED   3
+#ifndef POSIX_FADV_DONTNEED
+#define POSIX_FADV_DONTNEED   4
+#define POSIX_FADV_NOREUSE    5
+#endif
+
+#undef SEEK_SET
+#undef SEEK_CUR
+#undef SEEK_END
+#define SEEK_SET 0
+#define SEEK_CUR 1
+#define SEEK_END 2
+
+#ifndef S_IRUSR
+#define S_ISUID 04000
+#define S_ISGID 02000
+#define S_ISVTX 01000
+#define S_IRUSR 0400
+#define S_IWUSR 0200
+#define S_IXUSR 0100
+#define S_IRWXU 0700
+#define S_IRGRP 0040
+#define S_IWGRP 0020
+#define S_IXGRP 0010
+#define S_IRWXG 0070
+#define S_IROTH 0004
+#define S_IWOTH 0002
+#define S_IXOTH 0001
+#define S_IRWXO 0007
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#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
+
+#define FAPPEND O_APPEND
+#define FFSYNC O_SYNC
+#define FASYNC O_ASYNC
+#define FNONBLOCK O_NONBLOCK
+#define FNDELAY O_NDELAY
+
+#define F_OK 0
+#define R_OK 4
+#define W_OK 2
+#define X_OK 1
+#define F_ULOCK 0
+#define F_LOCK  1
+#define F_TLOCK 2
+#define F_TEST  3
+
+#define F_SETLEASE	1024
+#define F_GETLEASE	1025
+#define F_NOTIFY	1026
+#define F_CANCELLK	1029
+#define F_SETPIPE_SZ	1031
+#define F_GETPIPE_SZ	1032
+#define F_ADD_SEALS	1033
+#define F_GET_SEALS	1034
+
+#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		1035
+#define F_SET_RW_HINT		1036
+#define F_GET_FILE_RW_HINT	1037
+#define F_SET_FILE_RW_HINT	1038
+
+#define RWF_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 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
+
+int lockf(int, int, off_t);
+#endif
+
+#if defined(_GNU_SOURCE)
+#define F_OWNER_TID 0
+#define F_OWNER_PID 1
+#define F_OWNER_PGRP 2
+#define F_OWNER_GID 2
+struct file_handle {
+	unsigned handle_bytes;
+	int handle_type;
+	unsigned char f_handle[];
+};
+struct f_owner_ex {
+	int type;
+	pid_t pid;
+};
+#define FALLOC_FL_KEEP_SIZE 1
+#define FALLOC_FL_PUNCH_HOLE 2
+#define MAX_HANDLE_SZ 128
+#define SYNC_FILE_RANGE_WAIT_BEFORE 1
+#define SYNC_FILE_RANGE_WRITE 2
+#define SYNC_FILE_RANGE_WAIT_AFTER 4
+#define SPLICE_F_MOVE 1
+#define SPLICE_F_NONBLOCK 2
+#define SPLICE_F_MORE 4
+#define SPLICE_F_GIFT 8
+int fallocate(int, int, off_t, off_t);
+#define fallocate64 fallocate
+int name_to_handle_at(int, const char *, struct file_handle *, int *, int);
+int open_by_handle_at(int, struct file_handle *, int);
+ssize_t readahead(int, off_t, size_t);
+int sync_file_range(int, off_t, off_t, unsigned);
+ssize_t vmsplice(int, const struct iovec *, size_t, unsigned);
+ssize_t splice(int, off_t *, int, off_t *, size_t, unsigned);
+ssize_t tee(int, int, size_t, unsigned);
+#define loff_t off_t
+#endif
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define F_GETLK64 F_GETLK
+#define F_SETLK64 F_SETLK
+#define F_SETLKW64 F_SETLKW
+#define flock64 flock
+#define open64 open
+#define openat64 openat
+#define creat64 creat
+#define lockf64 lockf
+#define posix_fadvise64 posix_fadvise
+#define posix_fallocate64 posix_fallocate
+#define off64_t off_t
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/features.h b/x86_64-linux-musl/include/features.h
new file mode 100644
index 0000000..85cfb72
--- /dev/null
+++ b/x86_64-linux-musl/include/features.h
@@ -0,0 +1,40 @@
+#ifndef _FEATURES_H
+#define _FEATURES_H
+
+#if defined(_ALL_SOURCE) && !defined(_GNU_SOURCE)
+#define _GNU_SOURCE 1
+#endif
+
+#if defined(_DEFAULT_SOURCE) && !defined(_BSD_SOURCE)
+#define _BSD_SOURCE 1
+#endif
+
+#if !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE) \
+ && !defined(_XOPEN_SOURCE) && !defined(_GNU_SOURCE) \
+ && !defined(_BSD_SOURCE) && !defined(__STRICT_ANSI__)
+#define _BSD_SOURCE 1
+#define _XOPEN_SOURCE 700
+#endif
+
+#if __STDC_VERSION__ >= 199901L
+#define __restrict restrict
+#elif !defined(__GNUC__)
+#define __restrict
+#endif
+
+#if __STDC_VERSION__ >= 199901L || defined(__cplusplus)
+#define __inline inline
+#elif !defined(__GNUC__)
+#define __inline
+#endif
+
+#if __STDC_VERSION__ >= 201112L
+#elif defined(__GNUC__)
+#define _Noreturn __attribute__((__noreturn__))
+#else
+#define _Noreturn
+#endif
+
+#define __REDIR(x,y) __typeof__(x) x __asm__(#y)
+
+#endif
diff --git a/x86_64-linux-musl/include/fenv.h b/x86_64-linux-musl/include/fenv.h
new file mode 100644
index 0000000..05de990
--- /dev/null
+++ b/x86_64-linux-musl/include/fenv.h
@@ -0,0 +1,28 @@
+#ifndef _FENV_H
+#define _FENV_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <bits/fenv.h>
+
+int feclearexcept(int);
+int fegetexceptflag(fexcept_t *, int);
+int feraiseexcept(int);
+int fesetexceptflag(const fexcept_t *, int);
+int fetestexcept(int);
+
+int fegetround(void);
+int fesetround(int);
+
+int fegetenv(fenv_t *);
+int feholdexcept(fenv_t *);
+int fesetenv(const fenv_t *);
+int feupdateenv(const fenv_t *);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+
diff --git a/x86_64-linux-musl/include/float.h b/x86_64-linux-musl/include/float.h
new file mode 100644
index 0000000..713aadb
--- /dev/null
+++ b/x86_64-linux-musl/include/float.h
@@ -0,0 +1,52 @@
+#ifndef _FLOAT_H
+#define _FLOAT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int __flt_rounds(void);
+#define FLT_ROUNDS (__flt_rounds())
+
+#define FLT_RADIX 2
+
+#define FLT_TRUE_MIN 1.40129846432481707092e-45F
+#define FLT_MIN 1.17549435082228750797e-38F
+#define FLT_MAX 3.40282346638528859812e+38F
+#define FLT_EPSILON 1.1920928955078125e-07F
+
+#define FLT_MANT_DIG 24
+#define FLT_MIN_EXP (-125)
+#define FLT_MAX_EXP 128
+#define FLT_HAS_SUBNORM 1
+
+#define FLT_DIG 6
+#define FLT_DECIMAL_DIG 9
+#define FLT_MIN_10_EXP (-37)
+#define FLT_MAX_10_EXP 38
+
+#define DBL_TRUE_MIN 4.94065645841246544177e-324
+#define DBL_MIN 2.22507385850720138309e-308
+#define DBL_MAX 1.79769313486231570815e+308
+#define DBL_EPSILON 2.22044604925031308085e-16
+
+#define DBL_MANT_DIG 53
+#define DBL_MIN_EXP (-1021)
+#define DBL_MAX_EXP 1024
+#define DBL_HAS_SUBNORM 1
+
+#define DBL_DIG 15
+#define DBL_DECIMAL_DIG 17
+#define DBL_MIN_10_EXP (-307)
+#define DBL_MAX_10_EXP 308
+
+#define LDBL_HAS_SUBNORM 1
+#define LDBL_DECIMAL_DIG DECIMAL_DIG
+
+#include <bits/float.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/fmtmsg.h b/x86_64-linux-musl/include/fmtmsg.h
new file mode 100644
index 0000000..d944b06
--- /dev/null
+++ b/x86_64-linux-musl/include/fmtmsg.h
@@ -0,0 +1,47 @@
+#ifndef _FMTMSG_H
+#define _FMTMSG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MM_HARD		1
+#define MM_SOFT		2
+#define MM_FIRM		4
+
+#define MM_APPL		8
+#define MM_UTIL		16
+#define MM_OPSYS	32
+
+#define MM_RECOVER	64
+#define MM_NRECOV	128
+
+#define MM_PRINT	256
+#define MM_CONSOLE	512
+
+#define MM_NULLMC	0L
+
+#define MM_HALT		1
+#define MM_ERROR	2
+#define MM_WARNING	3
+#define MM_INFO		4
+#define MM_NOSEV	0
+
+#define MM_OK		0
+#define MM_NOTOK	(-1)
+#define MM_NOMSG	1
+#define MM_NOCON	4
+
+#define MM_NULLLBL	((char*)0)
+#define MM_NULLTXT	((char*)0)
+#define MM_NULLACT	((char*)0)
+#define MM_NULLTAG	((char*)0)
+#define MM_NULLSEV	0
+
+int fmtmsg(long, const char *, int, const char *, const char *, const char *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/fnmatch.h b/x86_64-linux-musl/include/fnmatch.h
new file mode 100644
index 0000000..f959321
--- /dev/null
+++ b/x86_64-linux-musl/include/fnmatch.h
@@ -0,0 +1,24 @@
+#ifndef	_FNMATCH_H
+#define	_FNMATCH_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define	FNM_PATHNAME 0x1
+#define	FNM_NOESCAPE 0x2
+#define	FNM_PERIOD   0x4
+#define	FNM_LEADING_DIR	0x8           
+#define	FNM_CASEFOLD	0x10
+#define	FNM_FILE_NAME	FNM_PATHNAME
+
+#define	FNM_NOMATCH 1
+#define FNM_NOSYS   (-1)
+
+int fnmatch(const char *, const char *, int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/ftw.h b/x86_64-linux-musl/include/ftw.h
new file mode 100644
index 0000000..b15c062
--- /dev/null
+++ b/x86_64-linux-musl/include/ftw.h
@@ -0,0 +1,41 @@
+#ifndef _FTW_H
+#define	_FTW_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <sys/stat.h>
+
+#define FTW_F   1
+#define FTW_D   2
+#define FTW_DNR 3
+#define FTW_NS  4
+#define FTW_SL  5
+#define FTW_DP  6
+#define FTW_SLN 7
+
+#define FTW_PHYS  1
+#define FTW_MOUNT 2
+#define FTW_CHDIR 4
+#define FTW_DEPTH 8
+
+struct FTW {
+	int base;
+	int level;
+};
+
+int ftw(const char *, int (*)(const char *, const struct stat *, int), int);
+int nftw(const char *, int (*)(const char *, const struct stat *, int, struct FTW *), int, int);
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define ftw64 ftw
+#define nftw64 nftw
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/getopt.h b/x86_64-linux-musl/include/getopt.h
new file mode 100644
index 0000000..35cbd35
--- /dev/null
+++ b/x86_64-linux-musl/include/getopt.h
@@ -0,0 +1,30 @@
+#ifndef _GETOPT_H
+#define _GETOPT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int getopt(int, char * const [], const char *);
+extern char *optarg;
+extern int optind, opterr, optopt, optreset;
+
+struct option {
+	const char *name;
+	int has_arg;
+	int *flag;
+	int val;
+};
+
+int getopt_long(int, char *const *, const char *, const struct option *, int *);
+int getopt_long_only(int, char *const *, const char *, const struct option *, int *);
+
+#define no_argument        0
+#define required_argument  1
+#define optional_argument  2
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/glob.h b/x86_64-linux-musl/include/glob.h
new file mode 100644
index 0000000..4a562a2
--- /dev/null
+++ b/x86_64-linux-musl/include/glob.h
@@ -0,0 +1,52 @@
+#ifndef	_GLOB_H
+#define	_GLOB_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_size_t
+
+#include <bits/alltypes.h>
+
+typedef struct {
+	size_t gl_pathc;
+	char **gl_pathv;
+	size_t gl_offs;
+	int __dummy1;
+	void *__dummy2[5];
+} glob_t;
+
+int  glob(const char *__restrict, int, int (*)(const char *, int), glob_t *__restrict);
+void globfree(glob_t *);
+
+#define GLOB_ERR      0x01
+#define GLOB_MARK     0x02
+#define GLOB_NOSORT   0x04
+#define GLOB_DOOFFS   0x08
+#define GLOB_NOCHECK  0x10
+#define GLOB_APPEND   0x20
+#define GLOB_NOESCAPE 0x40
+#define	GLOB_PERIOD   0x80
+
+#define GLOB_TILDE       0x1000
+#define GLOB_TILDE_CHECK 0x4000
+
+#define GLOB_NOSPACE 1
+#define GLOB_ABORTED 2
+#define GLOB_NOMATCH 3
+#define GLOB_NOSYS   4
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define glob64 glob
+#define globfree64 globfree
+#define glob64_t glob_t
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/grp.h b/x86_64-linux-musl/include/grp.h
new file mode 100644
index 0000000..27e8c5e
--- /dev/null
+++ b/x86_64-linux-musl/include/grp.h
@@ -0,0 +1,53 @@
+#ifndef	_GRP_H
+#define	_GRP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_size_t
+#define __NEED_gid_t
+
+#ifdef _GNU_SOURCE
+#define __NEED_FILE
+#endif
+
+#include <bits/alltypes.h>
+
+struct group {
+	char *gr_name;
+	char *gr_passwd;
+	gid_t gr_gid;
+	char **gr_mem;
+};
+
+struct group  *getgrgid(gid_t);
+struct group  *getgrnam(const char *);
+
+int getgrgid_r(gid_t, struct group *, char *, size_t, struct group **);
+int getgrnam_r(const char *, struct group *, char *, size_t, struct group **);
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+struct group  *getgrent(void);
+void           endgrent(void);
+void           setgrent(void);
+#endif
+
+#ifdef _GNU_SOURCE
+struct group  *fgetgrent(FILE *);
+int putgrent(const struct group *, FILE *);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+int getgrouplist(const char *, gid_t, gid_t *, int *);
+int setgroups(size_t, const gid_t *);
+int initgroups(const char *, gid_t);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/iconv.h b/x86_64-linux-musl/include/iconv.h
new file mode 100644
index 0000000..ebe9bfd
--- /dev/null
+++ b/x86_64-linux-musl/include/iconv.h
@@ -0,0 +1,24 @@
+#ifndef _ICONV_H
+#define _ICONV_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_size_t
+
+#include <bits/alltypes.h>
+
+typedef void *iconv_t;
+
+iconv_t iconv_open(const char *, const char *);
+size_t iconv(iconv_t, char **__restrict, size_t *__restrict, char **__restrict, size_t *__restrict);
+int iconv_close(iconv_t);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/ifaddrs.h b/x86_64-linux-musl/include/ifaddrs.h
new file mode 100644
index 0000000..c0328a8
--- /dev/null
+++ b/x86_64-linux-musl/include/ifaddrs.h
@@ -0,0 +1,35 @@
+#ifndef _IFADDRS_H
+#define _IFADDRS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <netinet/in.h>
+#include <sys/socket.h>
+
+struct ifaddrs {
+	struct ifaddrs *ifa_next;
+	char *ifa_name;
+	unsigned ifa_flags;
+	struct sockaddr *ifa_addr;
+	struct sockaddr *ifa_netmask;
+	union {
+		struct sockaddr *ifu_broadaddr;
+		struct sockaddr *ifu_dstaddr;
+	} ifa_ifu;
+	void *ifa_data;
+};
+#define ifa_broadaddr ifa_ifu.ifu_broadaddr
+#define ifa_dstaddr ifa_ifu.ifu_dstaddr
+
+void freeifaddrs(struct ifaddrs *);
+int getifaddrs(struct ifaddrs **);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/x86_64-linux-musl/include/inttypes.h b/x86_64-linux-musl/include/inttypes.h
new file mode 100644
index 0000000..61dcb72
--- /dev/null
+++ b/x86_64-linux-musl/include/inttypes.h
@@ -0,0 +1,229 @@
+#ifndef _INTTYPES_H
+#define _INTTYPES_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <stdint.h>
+
+#define __NEED_wchar_t
+#include <bits/alltypes.h>
+
+typedef struct { intmax_t quot, rem; } imaxdiv_t;
+
+intmax_t imaxabs(intmax_t);
+imaxdiv_t imaxdiv(intmax_t, intmax_t);
+
+intmax_t strtoimax(const char *__restrict, char **__restrict, int);
+uintmax_t strtoumax(const char *__restrict, char **__restrict, int);
+
+intmax_t wcstoimax(const wchar_t *__restrict, wchar_t **__restrict, int);
+uintmax_t wcstoumax(const wchar_t *__restrict, wchar_t **__restrict, int);
+
+#if UINTPTR_MAX == UINT64_MAX
+#define __PRI64  "l"
+#define __PRIPTR "l"
+#else
+#define __PRI64  "ll"
+#define __PRIPTR ""
+#endif
+
+#define PRId8  "d"
+#define PRId16 "d"
+#define PRId32 "d"
+#define PRId64 __PRI64 "d"
+
+#define PRIdLEAST8  "d"
+#define PRIdLEAST16 "d"
+#define PRIdLEAST32 "d"
+#define PRIdLEAST64 __PRI64 "d"
+
+#define PRIdFAST8  "d"
+#define PRIdFAST16 "d"
+#define PRIdFAST32 "d"
+#define PRIdFAST64 __PRI64 "d"
+
+#define PRIi8  "i"
+#define PRIi16 "i"
+#define PRIi32 "i"
+#define PRIi64 __PRI64 "i"
+
+#define PRIiLEAST8  "i"
+#define PRIiLEAST16 "i"
+#define PRIiLEAST32 "i"
+#define PRIiLEAST64 __PRI64 "i"
+
+#define PRIiFAST8  "i"
+#define PRIiFAST16 "i"
+#define PRIiFAST32 "i"
+#define PRIiFAST64 __PRI64 "i"
+
+#define PRIo8  "o"
+#define PRIo16 "o"
+#define PRIo32 "o"
+#define PRIo64 __PRI64 "o"
+
+#define PRIoLEAST8  "o"
+#define PRIoLEAST16 "o"
+#define PRIoLEAST32 "o"
+#define PRIoLEAST64 __PRI64 "o"
+
+#define PRIoFAST8  "o"
+#define PRIoFAST16 "o"
+#define PRIoFAST32 "o"
+#define PRIoFAST64 __PRI64 "o"
+
+#define PRIu8  "u"
+#define PRIu16 "u"
+#define PRIu32 "u"
+#define PRIu64 __PRI64 "u"
+
+#define PRIuLEAST8  "u"
+#define PRIuLEAST16 "u"
+#define PRIuLEAST32 "u"
+#define PRIuLEAST64 __PRI64 "u"
+
+#define PRIuFAST8  "u"
+#define PRIuFAST16 "u"
+#define PRIuFAST32 "u"
+#define PRIuFAST64 __PRI64 "u"
+
+#define PRIx8  "x"
+#define PRIx16 "x"
+#define PRIx32 "x"
+#define PRIx64 __PRI64 "x"
+
+#define PRIxLEAST8  "x"
+#define PRIxLEAST16 "x"
+#define PRIxLEAST32 "x"
+#define PRIxLEAST64 __PRI64 "x"
+
+#define PRIxFAST8  "x"
+#define PRIxFAST16 "x"
+#define PRIxFAST32 "x"
+#define PRIxFAST64 __PRI64 "x"
+
+#define PRIX8  "X"
+#define PRIX16 "X"
+#define PRIX32 "X"
+#define PRIX64 __PRI64 "X"
+
+#define PRIXLEAST8  "X"
+#define PRIXLEAST16 "X"
+#define PRIXLEAST32 "X"
+#define PRIXLEAST64 __PRI64 "X"
+
+#define PRIXFAST8  "X"
+#define PRIXFAST16 "X"
+#define PRIXFAST32 "X"
+#define PRIXFAST64 __PRI64 "X"
+
+#define PRIdMAX __PRI64 "d"
+#define PRIiMAX __PRI64 "i"
+#define PRIoMAX __PRI64 "o"
+#define PRIuMAX __PRI64 "u"
+#define PRIxMAX __PRI64 "x"
+#define PRIXMAX __PRI64 "X"
+
+#define PRIdPTR __PRIPTR "d"
+#define PRIiPTR __PRIPTR "i"
+#define PRIoPTR __PRIPTR "o"
+#define PRIuPTR __PRIPTR "u"
+#define PRIxPTR __PRIPTR "x"
+#define PRIXPTR __PRIPTR "X"
+
+#define SCNd8   "hhd"
+#define SCNd16  "hd"
+#define SCNd32  "d"
+#define SCNd64  __PRI64 "d"
+
+#define SCNdLEAST8  "hhd"
+#define SCNdLEAST16 "hd"
+#define SCNdLEAST32 "d"
+#define SCNdLEAST64 __PRI64 "d"
+
+#define SCNdFAST8  "hhd"
+#define SCNdFAST16 "d"
+#define SCNdFAST32 "d"
+#define SCNdFAST64 __PRI64 "d"
+
+#define SCNi8   "hhi"
+#define SCNi16  "hi"
+#define SCNi32  "i"
+#define SCNi64  __PRI64 "i"
+
+#define SCNiLEAST8  "hhi"
+#define SCNiLEAST16 "hi"
+#define SCNiLEAST32 "i"
+#define SCNiLEAST64 __PRI64 "i"
+
+#define SCNiFAST8  "hhi"
+#define SCNiFAST16 "i"
+#define SCNiFAST32 "i"
+#define SCNiFAST64 __PRI64 "i"
+
+#define SCNu8   "hhu"
+#define SCNu16  "hu"
+#define SCNu32  "u"
+#define SCNu64  __PRI64 "u"
+
+#define SCNuLEAST8  "hhu"
+#define SCNuLEAST16 "hu"
+#define SCNuLEAST32 "u"
+#define SCNuLEAST64 __PRI64 "u"
+
+#define SCNuFAST8 "hhu"
+#define SCNuFAST16 "u"
+#define SCNuFAST32 "u"
+#define SCNuFAST64 __PRI64 "u"
+
+#define SCNo8   "hho"
+#define SCNo16  "ho"
+#define SCNo32  "o"
+#define SCNo64  __PRI64 "o"
+
+#define SCNoLEAST8  "hho"
+#define SCNoLEAST16 "ho"
+#define SCNoLEAST32 "o"
+#define SCNoLEAST64 __PRI64 "o"
+
+#define SCNoFAST8  "hho"
+#define SCNoFAST16 "o"
+#define SCNoFAST32 "o"
+#define SCNoFAST64 __PRI64 "o"
+
+#define SCNx8   "hhx"
+#define SCNx16  "hx"
+#define SCNx32  "x"
+#define SCNx64  __PRI64 "x"
+
+#define SCNxLEAST8  "hhx"
+#define SCNxLEAST16 "hx"
+#define SCNxLEAST32 "x"
+#define SCNxLEAST64 __PRI64 "x"
+
+#define SCNxFAST8  "hhx"
+#define SCNxFAST16 "x"
+#define SCNxFAST32 "x"
+#define SCNxFAST64 __PRI64 "x"
+
+#define SCNdMAX __PRI64 "d"
+#define SCNiMAX __PRI64 "i"
+#define SCNoMAX __PRI64 "o"
+#define SCNuMAX __PRI64 "u"
+#define SCNxMAX __PRI64 "x"
+
+#define SCNdPTR __PRIPTR "d"
+#define SCNiPTR __PRIPTR "i"
+#define SCNoPTR __PRIPTR "o"
+#define SCNuPTR __PRIPTR "u"
+#define SCNxPTR __PRIPTR "x"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/x86_64-linux-musl/include/iso646.h b/x86_64-linux-musl/include/iso646.h
new file mode 100644
index 0000000..88ff53d
--- /dev/null
+++ b/x86_64-linux-musl/include/iso646.h
@@ -0,0 +1,20 @@
+#ifndef _ISO646_H
+#define _ISO646_H
+
+#ifndef __cplusplus
+
+#define and    &&
+#define and_eq &=
+#define bitand &
+#define bitor  |
+#define compl  ~
+#define not    !
+#define not_eq !=
+#define or     ||
+#define or_eq  |=
+#define xor    ^
+#define xor_eq ^=
+
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/langinfo.h b/x86_64-linux-musl/include/langinfo.h
new file mode 100644
index 0000000..519c061
--- /dev/null
+++ b/x86_64-linux-musl/include/langinfo.h
@@ -0,0 +1,98 @@
+#ifndef _LANGINFO_H
+#define _LANGINFO_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <nl_types.h>
+
+#define __NEED_locale_t
+
+#include <bits/alltypes.h>
+
+#define ABDAY_1 0x20000
+#define ABDAY_2 0x20001
+#define ABDAY_3 0x20002
+#define ABDAY_4 0x20003
+#define ABDAY_5 0x20004
+#define ABDAY_6 0x20005
+#define ABDAY_7 0x20006
+
+#define DAY_1 0x20007
+#define DAY_2 0x20008
+#define DAY_3 0x20009
+#define DAY_4 0x2000A
+#define DAY_5 0x2000B
+#define DAY_6 0x2000C
+#define DAY_7 0x2000D
+
+#define ABMON_1 0x2000E
+#define ABMON_2 0x2000F
+#define ABMON_3 0x20010
+#define ABMON_4 0x20011
+#define ABMON_5 0x20012
+#define ABMON_6 0x20013
+#define ABMON_7 0x20014
+#define ABMON_8 0x20015
+#define ABMON_9 0x20016
+#define ABMON_10 0x20017
+#define ABMON_11 0x20018
+#define ABMON_12 0x20019
+
+#define MON_1 0x2001A
+#define MON_2 0x2001B
+#define MON_3 0x2001C
+#define MON_4 0x2001D
+#define MON_5 0x2001E
+#define MON_6 0x2001F
+#define MON_7 0x20020
+#define MON_8 0x20021
+#define MON_9 0x20022
+#define MON_10 0x20023
+#define MON_11 0x20024
+#define MON_12 0x20025
+
+#define AM_STR 0x20026
+#define PM_STR 0x20027
+
+#define D_T_FMT 0x20028
+#define D_FMT 0x20029
+#define T_FMT 0x2002A
+#define T_FMT_AMPM 0x2002B
+
+#define ERA 0x2002C
+#define ERA_D_FMT 0x2002E
+#define ALT_DIGITS 0x2002F
+#define ERA_D_T_FMT 0x20030
+#define ERA_T_FMT 0x20031
+
+#define CODESET 14
+
+#define CRNCYSTR 0x4000F
+
+#define RADIXCHAR 0x10000
+#define THOUSEP 0x10001
+#define YESEXPR 0x50000
+#define NOEXPR 0x50001
+
+#define _NL_LOCALE_NAME(cat) (((cat)<<16) | 0xffff)
+
+#if defined(_GNU_SOURCE)
+#define NL_LOCALE_NAME(cat) _NL_LOCALE_NAME(cat)
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define YESSTR 0x50002
+#define NOSTR 0x50003
+#endif
+
+char *nl_langinfo(nl_item);
+char *nl_langinfo_l(nl_item, locale_t);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/lastlog.h b/x86_64-linux-musl/include/lastlog.h
new file mode 100644
index 0000000..5fa45ee
--- /dev/null
+++ b/x86_64-linux-musl/include/lastlog.h
@@ -0,0 +1 @@
+#include <utmp.h>
diff --git a/x86_64-linux-musl/include/libgen.h b/x86_64-linux-musl/include/libgen.h
new file mode 100644
index 0000000..7c7fd9c
--- /dev/null
+++ b/x86_64-linux-musl/include/libgen.h
@@ -0,0 +1,15 @@
+#ifndef _LIBGEN_H
+#define _LIBGEN_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+char *dirname(char *);
+char *basename(char *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/libintl.h b/x86_64-linux-musl/include/libintl.h
new file mode 100644
index 0000000..6a707bf
--- /dev/null
+++ b/x86_64-linux-musl/include/libintl.h
@@ -0,0 +1,33 @@
+#ifndef _LIBINTL_H
+#define _LIBINTL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __USE_GNU_GETTEXT 1
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 1 : -1)
+
+#if __GNUC__ >= 3
+#define __fa(n) __attribute__ ((__format_arg__ (n)))
+#else
+#define __fa(n)
+#endif
+
+char *gettext(const char *) __fa(1);
+char *dgettext(const char *, const char *) __fa(2);
+char *dcgettext(const char *, const char *, int) __fa(2);
+char *ngettext(const char *, const char *, unsigned long) __fa(1) __fa(2);
+char *dngettext(const char *, const char *, const char *, unsigned long) __fa(2) __fa(3);
+char *dcngettext(const char *, const char *, const char *, unsigned long, int) __fa(2) __fa(3);
+char *textdomain(const char *);
+char *bindtextdomain (const char *, const char *);
+char *bind_textdomain_codeset(const char *, const char *);
+
+#undef __fa
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/limits.h b/x86_64-linux-musl/include/limits.h
new file mode 100644
index 0000000..53a27b9
--- /dev/null
+++ b/x86_64-linux-musl/include/limits.h
@@ -0,0 +1,166 @@
+#ifndef _LIMITS_H
+#define _LIMITS_H
+
+#include <features.h>
+
+#include <bits/alltypes.h> /* __LONG_MAX */
+
+/* Support signed or unsigned plain-char */
+
+#if '\xff' > 0
+#define CHAR_MIN 0
+#define CHAR_MAX 255
+#else
+#define CHAR_MIN (-128)
+#define CHAR_MAX 127
+#endif
+
+#define CHAR_BIT 8
+#define SCHAR_MIN (-128)
+#define SCHAR_MAX 127
+#define UCHAR_MAX 255
+#define SHRT_MIN  (-1-0x7fff)
+#define SHRT_MAX  0x7fff
+#define USHRT_MAX 0xffff
+#define INT_MIN  (-1-0x7fffffff)
+#define INT_MAX  0x7fffffff
+#define UINT_MAX 0xffffffffU
+#define LONG_MIN (-LONG_MAX-1)
+#define LONG_MAX __LONG_MAX
+#define ULONG_MAX (2UL*LONG_MAX+1)
+#define LLONG_MIN (-LLONG_MAX-1)
+#define LLONG_MAX  0x7fffffffffffffffLL
+#define ULLONG_MAX (2ULL*LLONG_MAX+1)
+
+#define MB_LEN_MAX 4
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+
+#include <bits/limits.h>
+
+#define PIPE_BUF 4096
+#define FILESIZEBITS 64
+#ifndef NAME_MAX
+#define NAME_MAX 255
+#endif
+#define PATH_MAX 4096
+#define NGROUPS_MAX 32
+#define ARG_MAX 131072
+#define IOV_MAX 1024
+#define SYMLOOP_MAX 40
+#define WORD_BIT 32
+#define SSIZE_MAX LONG_MAX
+#define TZNAME_MAX 6
+#define TTY_NAME_MAX 32
+#define HOST_NAME_MAX 255
+
+#if LONG_MAX == 0x7fffffffL
+#define LONG_BIT 32
+#else
+#define LONG_BIT 64
+#endif
+
+/* Implementation choices... */
+
+#define PTHREAD_KEYS_MAX 128
+#define PTHREAD_STACK_MIN 2048
+#define PTHREAD_DESTRUCTOR_ITERATIONS 4
+#define SEM_VALUE_MAX 0x7fffffff
+#define SEM_NSEMS_MAX 256
+#define DELAYTIMER_MAX 0x7fffffff
+#define MQ_PRIO_MAX 32768
+#define LOGIN_NAME_MAX 256
+
+/* Arbitrary numbers... */
+
+#define BC_BASE_MAX 99
+#define BC_DIM_MAX 2048
+#define BC_SCALE_MAX 99
+#define BC_STRING_MAX 1000
+#define CHARCLASS_NAME_MAX 14
+#define COLL_WEIGHTS_MAX 2
+#define EXPR_NEST_MAX 32
+#define LINE_MAX 4096
+#define RE_DUP_MAX 255
+
+#define NL_ARGMAX 9
+#define NL_MSGMAX 32767
+#define NL_SETMAX 255
+#define NL_TEXTMAX 2048
+
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_XOPEN_SOURCE)
+
+#ifdef PAGESIZE
+#define PAGE_SIZE PAGESIZE
+#endif
+#define NZERO 20
+#define NL_LANGMAX 32
+
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) \
+ || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700)
+
+#define NL_NMAX 16
+
+#endif
+
+/* POSIX/SUS requirements follow. These numbers come directly
+ * from SUS and have nothing to do with the host system. */
+
+#define _POSIX_AIO_LISTIO_MAX   2
+#define _POSIX_AIO_MAX          1
+#define _POSIX_ARG_MAX          4096
+#define _POSIX_CHILD_MAX        25
+#define _POSIX_CLOCKRES_MIN     20000000
+#define _POSIX_DELAYTIMER_MAX   32
+#define _POSIX_HOST_NAME_MAX    255
+#define _POSIX_LINK_MAX         8
+#define _POSIX_LOGIN_NAME_MAX   9
+#define _POSIX_MAX_CANON        255
+#define _POSIX_MAX_INPUT        255
+#define _POSIX_MQ_OPEN_MAX      8
+#define _POSIX_MQ_PRIO_MAX      32
+#define _POSIX_NAME_MAX         14
+#define _POSIX_NGROUPS_MAX      8
+#define _POSIX_OPEN_MAX         20
+#define _POSIX_PATH_MAX         256
+#define _POSIX_PIPE_BUF         512
+#define _POSIX_RE_DUP_MAX       255
+#define _POSIX_RTSIG_MAX        8
+#define _POSIX_SEM_NSEMS_MAX    256
+#define _POSIX_SEM_VALUE_MAX    32767
+#define _POSIX_SIGQUEUE_MAX     32
+#define _POSIX_SSIZE_MAX        32767
+#define _POSIX_STREAM_MAX       8
+#define _POSIX_SS_REPL_MAX      4
+#define _POSIX_SYMLINK_MAX      255
+#define _POSIX_SYMLOOP_MAX      8
+#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
+#define _POSIX_THREAD_KEYS_MAX  128
+#define _POSIX_THREAD_THREADS_MAX 64
+#define _POSIX_TIMER_MAX        32
+#define _POSIX_TRACE_EVENT_NAME_MAX 30
+#define _POSIX_TRACE_NAME_MAX   8
+#define _POSIX_TRACE_SYS_MAX    8
+#define _POSIX_TRACE_USER_EVENT_MAX 32
+#define _POSIX_TTY_NAME_MAX     9
+#define _POSIX_TZNAME_MAX       6
+#define _POSIX2_BC_BASE_MAX     99
+#define _POSIX2_BC_DIM_MAX      2048
+#define _POSIX2_BC_SCALE_MAX    99
+#define _POSIX2_BC_STRING_MAX   1000
+#define _POSIX2_CHARCLASS_NAME_MAX 14
+#define _POSIX2_COLL_WEIGHTS_MAX 2
+#define _POSIX2_EXPR_NEST_MAX   32
+#define _POSIX2_LINE_MAX        2048
+#define _POSIX2_RE_DUP_MAX      255
+
+#define _XOPEN_IOV_MAX          16
+#define _XOPEN_NAME_MAX         255
+#define _XOPEN_PATH_MAX         1024
+
+#endif
diff --git a/x86_64-linux-musl/include/link.h b/x86_64-linux-musl/include/link.h
new file mode 100644
index 0000000..8150185
--- /dev/null
+++ b/x86_64-linux-musl/include/link.h
@@ -0,0 +1,53 @@
+#ifndef _LINK_H
+#define _LINK_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <elf.h>
+#define __NEED_size_t
+#define __NEED_uint32_t
+#include <bits/alltypes.h>
+
+#if UINTPTR_MAX > 0xffffffff
+#define ElfW(type) Elf64_ ## type
+#else
+#define ElfW(type) Elf32_ ## type
+#endif
+
+#include <bits/link.h>
+
+struct dl_phdr_info {
+	ElfW(Addr) dlpi_addr;
+	const char *dlpi_name;
+	const ElfW(Phdr) *dlpi_phdr;
+	ElfW(Half) dlpi_phnum;
+	unsigned long long int dlpi_adds;
+	unsigned long long int dlpi_subs;
+	size_t dlpi_tls_modid;
+	void *dlpi_tls_data;
+};
+
+struct link_map {
+	ElfW(Addr) l_addr;
+	char *l_name;
+	ElfW(Dyn) *l_ld;
+	struct link_map *l_next, *l_prev;
+};
+
+struct r_debug {
+	int r_version;
+	struct link_map *r_map;
+	ElfW(Addr) r_brk;
+	enum { RT_CONSISTENT, RT_ADD, RT_DELETE } r_state;
+	ElfW(Addr) r_ldbase;
+};
+
+int dl_iterate_phdr(int (*)(struct dl_phdr_info *, size_t, void *), void *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/linux/a.out.h b/x86_64-linux-musl/include/linux/a.out.h
new file mode 100644
index 0000000..8f58c99
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/acct.h b/x86_64-linux-musl/include/linux/acct.h
new file mode 100644
index 0000000..aecc9f6
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/acrn.h b/x86_64-linux-musl/include/linux/acrn.h
new file mode 100644
index 0000000..c991ac0
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/adb.h b/x86_64-linux-musl/include/linux/adb.h
new file mode 100644
index 0000000..ddb3b65
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/adfs_fs.h b/x86_64-linux-musl/include/linux/adfs_fs.h
new file mode 100644
index 0000000..aa1d732
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/affs_hardblocks.h b/x86_64-linux-musl/include/linux/affs_hardblocks.h
new file mode 100644
index 0000000..f46bdf1
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/agpgart.h b/x86_64-linux-musl/include/linux/agpgart.h
new file mode 100644
index 0000000..3b126f1
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/aio_abi.h b/x86_64-linux-musl/include/linux/aio_abi.h
new file mode 100644
index 0000000..17ca2f9
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/am437x-vpfe.h b/x86_64-linux-musl/include/linux/am437x-vpfe.h
new file mode 100644
index 0000000..9ea21d2
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/amt.h b/x86_64-linux-musl/include/linux/amt.h
new file mode 100644
index 0000000..049006d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/android/binder.h b/x86_64-linux-musl/include/linux/android/binder.h
new file mode 100644
index 0000000..ded1756
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/android/binderfs.h b/x86_64-linux-musl/include/linux/android/binderfs.h
new file mode 100644
index 0000000..d58c333
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/apm_bios.h b/x86_64-linux-musl/include/linux/apm_bios.h
new file mode 100644
index 0000000..b2ffe01
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/arcfb.h b/x86_64-linux-musl/include/linux/arcfb.h
new file mode 100644
index 0000000..93fc722
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/arm_sdei.h b/x86_64-linux-musl/include/linux/arm_sdei.h
new file mode 100644
index 0000000..4ec9294
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ashmem.h b/x86_64-linux-musl/include/linux/ashmem.h
new file mode 100644
index 0000000..174667f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/aspeed-lpc-ctrl.h b/x86_64-linux-musl/include/linux/aspeed-lpc-ctrl.h
new file mode 100644
index 0000000..fcde081
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/aspeed-p2a-ctrl.h b/x86_64-linux-musl/include/linux/aspeed-p2a-ctrl.h
new file mode 100644
index 0000000..94e5132
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/atalk.h b/x86_64-linux-musl/include/linux/atalk.h
new file mode 100644
index 0000000..0619cf5
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/atm.h b/x86_64-linux-musl/include/linux/atm.h
new file mode 100644
index 0000000..488fa05
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/atm_eni.h b/x86_64-linux-musl/include/linux/atm_eni.h
new file mode 100644
index 0000000..fd721f0
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/atm_he.h b/x86_64-linux-musl/include/linux/atm_he.h
new file mode 100644
index 0000000..65ec396
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/atm_idt77105.h b/x86_64-linux-musl/include/linux/atm_idt77105.h
new file mode 100644
index 0000000..c3332ee
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/atm_nicstar.h b/x86_64-linux-musl/include/linux/atm_nicstar.h
new file mode 100644
index 0000000..856dbd5
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/atm_tcp.h b/x86_64-linux-musl/include/linux/atm_tcp.h
new file mode 100644
index 0000000..1e08b08
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/atm_zatm.h b/x86_64-linux-musl/include/linux/atm_zatm.h
new file mode 100644
index 0000000..1649b85
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/atmapi.h b/x86_64-linux-musl/include/linux/atmapi.h
new file mode 100644
index 0000000..65f48ba
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/atmarp.h b/x86_64-linux-musl/include/linux/atmarp.h
new file mode 100644
index 0000000..78f8cae
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/atmbr2684.h b/x86_64-linux-musl/include/linux/atmbr2684.h
new file mode 100644
index 0000000..8e115db
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/atmclip.h b/x86_64-linux-musl/include/linux/atmclip.h
new file mode 100644
index 0000000..52e491c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/atmdev.h b/x86_64-linux-musl/include/linux/atmdev.h
new file mode 100644
index 0000000..69eb240
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/atmioc.h b/x86_64-linux-musl/include/linux/atmioc.h
new file mode 100644
index 0000000..1907288
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/atmlec.h b/x86_64-linux-musl/include/linux/atmlec.h
new file mode 100644
index 0000000..d70c517
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/atmmpc.h b/x86_64-linux-musl/include/linux/atmmpc.h
new file mode 100644
index 0000000..a420581
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/atmppp.h b/x86_64-linux-musl/include/linux/atmppp.h
new file mode 100644
index 0000000..1cc0d08
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/atmsap.h b/x86_64-linux-musl/include/linux/atmsap.h
new file mode 100644
index 0000000..1487f9a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/atmsvc.h b/x86_64-linux-musl/include/linux/atmsvc.h
new file mode 100644
index 0000000..ca038f5
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/audit.h b/x86_64-linux-musl/include/linux/audit.h
new file mode 100644
index 0000000..342c7ce
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/auto_dev-ioctl.h b/x86_64-linux-musl/include/linux/auto_dev-ioctl.h
new file mode 100644
index 0000000..23c8096
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/auto_fs.h b/x86_64-linux-musl/include/linux/auto_fs.h
new file mode 100644
index 0000000..39d1ac8
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/auto_fs4.h b/x86_64-linux-musl/include/linux/auto_fs4.h
new file mode 100644
index 0000000..41f3c8c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/auxvec.h b/x86_64-linux-musl/include/linux/auxvec.h
new file mode 100644
index 0000000..c80c170
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ax25.h b/x86_64-linux-musl/include/linux/ax25.h
new file mode 100644
index 0000000..0d6aa95
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/batadv_packet.h b/x86_64-linux-musl/include/linux/batadv_packet.h
new file mode 100644
index 0000000..ede53cf
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/batman_adv.h b/x86_64-linux-musl/include/linux/batman_adv.h
new file mode 100644
index 0000000..9f48dac
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/baycom.h b/x86_64-linux-musl/include/linux/baycom.h
new file mode 100644
index 0000000..ce0edf5
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/bcm933xx_hcs.h b/x86_64-linux-musl/include/linux/bcm933xx_hcs.h
new file mode 100644
index 0000000..a57828f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/bfs_fs.h b/x86_64-linux-musl/include/linux/bfs_fs.h
new file mode 100644
index 0000000..4a11e8a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/binfmts.h b/x86_64-linux-musl/include/linux/binfmts.h
new file mode 100644
index 0000000..053be3c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/blkpg.h b/x86_64-linux-musl/include/linux/blkpg.h
new file mode 100644
index 0000000..fdde696
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/blktrace_api.h b/x86_64-linux-musl/include/linux/blktrace_api.h
new file mode 100644
index 0000000..64c0b77
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/blkzoned.h b/x86_64-linux-musl/include/linux/blkzoned.h
new file mode 100644
index 0000000..b551e8b
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/bpf.h b/x86_64-linux-musl/include/linux/bpf.h
new file mode 100644
index 0000000..833f00e
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/bpf_common.h b/x86_64-linux-musl/include/linux/bpf_common.h
new file mode 100644
index 0000000..a368db7
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/bpf_perf_event.h b/x86_64-linux-musl/include/linux/bpf_perf_event.h
new file mode 100644
index 0000000..190b916
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/bpfilter.h b/x86_64-linux-musl/include/linux/bpfilter.h
new file mode 100644
index 0000000..a7d8d66
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/bpqether.h b/x86_64-linux-musl/include/linux/bpqether.h
new file mode 100644
index 0000000..0b0b861
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/bsg.h b/x86_64-linux-musl/include/linux/bsg.h
new file mode 100644
index 0000000..0fcf8fc
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/bt-bmc.h b/x86_64-linux-musl/include/linux/bt-bmc.h
new file mode 100644
index 0000000..4bd566d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/btf.h b/x86_64-linux-musl/include/linux/btf.h
new file mode 100644
index 0000000..1bb64db
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/btrfs.h b/x86_64-linux-musl/include/linux/btrfs.h
new file mode 100644
index 0000000..08b96a3
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/btrfs_tree.h b/x86_64-linux-musl/include/linux/btrfs_tree.h
new file mode 100644
index 0000000..0476733
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/byteorder/big_endian.h b/x86_64-linux-musl/include/linux/byteorder/big_endian.h
new file mode 100644
index 0000000..b6c978b
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/byteorder/little_endian.h b/x86_64-linux-musl/include/linux/byteorder/little_endian.h
new file mode 100644
index 0000000..a272d4d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/caif/caif_socket.h b/x86_64-linux-musl/include/linux/caif/caif_socket.h
new file mode 100644
index 0000000..999d1b7
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/caif/if_caif.h b/x86_64-linux-musl/include/linux/caif/if_caif.h
new file mode 100644
index 0000000..36dfe08
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/can.h b/x86_64-linux-musl/include/linux/can.h
new file mode 100644
index 0000000..30eeca2
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/can/bcm.h b/x86_64-linux-musl/include/linux/can/bcm.h
new file mode 100644
index 0000000..42e0782
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/can/error.h b/x86_64-linux-musl/include/linux/can/error.h
new file mode 100644
index 0000000..645373b
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/can/gw.h b/x86_64-linux-musl/include/linux/can/gw.h
new file mode 100644
index 0000000..f76bafb
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/can/isotp.h b/x86_64-linux-musl/include/linux/can/isotp.h
new file mode 100644
index 0000000..dd5e4f5
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/can/j1939.h b/x86_64-linux-musl/include/linux/can/j1939.h
new file mode 100644
index 0000000..42dbf15
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/can/netlink.h b/x86_64-linux-musl/include/linux/can/netlink.h
new file mode 100644
index 0000000..5ea6346
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/can/raw.h b/x86_64-linux-musl/include/linux/can/raw.h
new file mode 100644
index 0000000..a3bddb7
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/can/vxcan.h b/x86_64-linux-musl/include/linux/can/vxcan.h
new file mode 100644
index 0000000..950b645
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/capability.h b/x86_64-linux-musl/include/linux/capability.h
new file mode 100644
index 0000000..958e6ab
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/capi.h b/x86_64-linux-musl/include/linux/capi.h
new file mode 100644
index 0000000..de2a839
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/cciss_defs.h b/x86_64-linux-musl/include/linux/cciss_defs.h
new file mode 100644
index 0000000..99d8e56
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/cciss_ioctl.h b/x86_64-linux-musl/include/linux/cciss_ioctl.h
new file mode 100644
index 0000000..3e9bb3b
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ccs.h b/x86_64-linux-musl/include/linux/ccs.h
new file mode 100644
index 0000000..53c88af
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/cdrom.h b/x86_64-linux-musl/include/linux/cdrom.h
new file mode 100644
index 0000000..0fe0727
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/cec-funcs.h b/x86_64-linux-musl/include/linux/cec-funcs.h
new file mode 100644
index 0000000..650dc19
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/cec.h b/x86_64-linux-musl/include/linux/cec.h
new file mode 100644
index 0000000..b90dc49
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/cfm_bridge.h b/x86_64-linux-musl/include/linux/cfm_bridge.h
new file mode 100644
index 0000000..de9d023
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/cgroupstats.h b/x86_64-linux-musl/include/linux/cgroupstats.h
new file mode 100644
index 0000000..3d6a037
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/chio.h b/x86_64-linux-musl/include/linux/chio.h
new file mode 100644
index 0000000..725e760
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/cifs/cifs_mount.h b/x86_64-linux-musl/include/linux/cifs/cifs_mount.h
new file mode 100644
index 0000000..33f6fd6
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/cifs/cifs_netlink.h b/x86_64-linux-musl/include/linux/cifs/cifs_netlink.h
new file mode 100644
index 0000000..7286cfa
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/close_range.h b/x86_64-linux-musl/include/linux/close_range.h
new file mode 100644
index 0000000..279e4bb
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/cm4000_cs.h b/x86_64-linux-musl/include/linux/cm4000_cs.h
new file mode 100644
index 0000000..41b7aa7
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/cn_proc.h b/x86_64-linux-musl/include/linux/cn_proc.h
new file mode 100644
index 0000000..411b725
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/coda.h b/x86_64-linux-musl/include/linux/coda.h
new file mode 100644
index 0000000..aad1b97
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/coff.h b/x86_64-linux-musl/include/linux/coff.h
new file mode 100644
index 0000000..8f93b61
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/compiler.h b/x86_64-linux-musl/include/linux/compiler.h
new file mode 100644
index 0000000..8e89655
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/compiler_types.h b/x86_64-linux-musl/include/linux/compiler_types.h
new file mode 100644
index 0000000..94f4fbe
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/connector.h b/x86_64-linux-musl/include/linux/connector.h
new file mode 100644
index 0000000..adf3a7f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/const.h b/x86_64-linux-musl/include/linux/const.h
new file mode 100644
index 0000000..c62a702
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/coresight-stm.h b/x86_64-linux-musl/include/linux/coresight-stm.h
new file mode 100644
index 0000000..86d80ca
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/counter.h b/x86_64-linux-musl/include/linux/counter.h
new file mode 100644
index 0000000..091e33d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/cramfs_fs.h b/x86_64-linux-musl/include/linux/cramfs_fs.h
new file mode 100644
index 0000000..8872914
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/cryptouser.h b/x86_64-linux-musl/include/linux/cryptouser.h
new file mode 100644
index 0000000..1d145bd
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/cuda.h b/x86_64-linux-musl/include/linux/cuda.h
new file mode 100644
index 0000000..64393db
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/cxl_mem.h b/x86_64-linux-musl/include/linux/cxl_mem.h
new file mode 100644
index 0000000..15e9e29
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/cycx_cfm.h b/x86_64-linux-musl/include/linux/cycx_cfm.h
new file mode 100644
index 0000000..052de53
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dcbnl.h b/x86_64-linux-musl/include/linux/dcbnl.h
new file mode 100644
index 0000000..d1f2eba
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dccp.h b/x86_64-linux-musl/include/linux/dccp.h
new file mode 100644
index 0000000..9ed840d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/devlink.h b/x86_64-linux-musl/include/linux/devlink.h
new file mode 100644
index 0000000..a809306
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dlm.h b/x86_64-linux-musl/include/linux/dlm.h
new file mode 100644
index 0000000..c75918f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dlm_device.h b/x86_64-linux-musl/include/linux/dlm_device.h
new file mode 100644
index 0000000..5e54d2e
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dlm_netlink.h b/x86_64-linux-musl/include/linux/dlm_netlink.h
new file mode 100644
index 0000000..0c655fa
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dlm_plock.h b/x86_64-linux-musl/include/linux/dlm_plock.h
new file mode 100644
index 0000000..332397b
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dlmconstants.h b/x86_64-linux-musl/include/linux/dlmconstants.h
new file mode 100644
index 0000000..e1b1cb5
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dm-ioctl.h b/x86_64-linux-musl/include/linux/dm-ioctl.h
new file mode 100644
index 0000000..09f8a98
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dm-log-userspace.h b/x86_64-linux-musl/include/linux/dm-log-userspace.h
new file mode 100644
index 0000000..4f0671b
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dm-user.h b/x86_64-linux-musl/include/linux/dm-user.h
new file mode 100644
index 0000000..39624c8
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dma-buf.h b/x86_64-linux-musl/include/linux/dma-buf.h
new file mode 100644
index 0000000..221c20f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dma-heap.h b/x86_64-linux-musl/include/linux/dma-heap.h
new file mode 100644
index 0000000..a2746e3
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dn.h b/x86_64-linux-musl/include/linux/dn.h
new file mode 100644
index 0000000..621f60f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dns_resolver.h b/x86_64-linux-musl/include/linux/dns_resolver.h
new file mode 100644
index 0000000..21cb5c0
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dqblk_xfs.h b/x86_64-linux-musl/include/linux/dqblk_xfs.h
new file mode 100644
index 0000000..6164991
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dvb/audio.h b/x86_64-linux-musl/include/linux/dvb/audio.h
new file mode 100644
index 0000000..0a527c1
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dvb/ca.h b/x86_64-linux-musl/include/linux/dvb/ca.h
new file mode 100644
index 0000000..fa977c7
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dvb/dmx.h b/x86_64-linux-musl/include/linux/dvb/dmx.h
new file mode 100644
index 0000000..e142e57
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dvb/frontend.h b/x86_64-linux-musl/include/linux/dvb/frontend.h
new file mode 100644
index 0000000..d060138
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dvb/net.h b/x86_64-linux-musl/include/linux/dvb/net.h
new file mode 100644
index 0000000..4809e64
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dvb/osd.h b/x86_64-linux-musl/include/linux/dvb/osd.h
new file mode 100644
index 0000000..84b268b
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dvb/version.h b/x86_64-linux-musl/include/linux/dvb/version.h
new file mode 100644
index 0000000..47c8c74
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/dvb/video.h b/x86_64-linux-musl/include/linux/dvb/video.h
new file mode 100644
index 0000000..6577e1f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/edd.h b/x86_64-linux-musl/include/linux/edd.h
new file mode 100644
index 0000000..cc6e973
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/efs_fs_sb.h b/x86_64-linux-musl/include/linux/efs_fs_sb.h
new file mode 100644
index 0000000..9b861c8
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/elf-em.h b/x86_64-linux-musl/include/linux/elf-em.h
new file mode 100644
index 0000000..d1ed1f6
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/elf-fdpic.h b/x86_64-linux-musl/include/linux/elf-fdpic.h
new file mode 100644
index 0000000..4e81292
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/elf.h b/x86_64-linux-musl/include/linux/elf.h
new file mode 100644
index 0000000..7655f12
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/errno.h b/x86_64-linux-musl/include/linux/errno.h
new file mode 100644
index 0000000..01399c5
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/errqueue.h b/x86_64-linux-musl/include/linux/errqueue.h
new file mode 100644
index 0000000..e93bad2
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/erspan.h b/x86_64-linux-musl/include/linux/erspan.h
new file mode 100644
index 0000000..790a85e
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ethtool.h b/x86_64-linux-musl/include/linux/ethtool.h
new file mode 100644
index 0000000..baf417d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ethtool_netlink.h b/x86_64-linux-musl/include/linux/ethtool_netlink.h
new file mode 100644
index 0000000..95d69b4
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/eventpoll.h b/x86_64-linux-musl/include/linux/eventpoll.h
new file mode 100644
index 0000000..d2601e5
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/f2fs.h b/x86_64-linux-musl/include/linux/f2fs.h
new file mode 100644
index 0000000..76da8f6
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/fadvise.h b/x86_64-linux-musl/include/linux/fadvise.h
new file mode 100644
index 0000000..21d884c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/falloc.h b/x86_64-linux-musl/include/linux/falloc.h
new file mode 100644
index 0000000..7015b03
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/fanotify.h b/x86_64-linux-musl/include/linux/fanotify.h
new file mode 100644
index 0000000..b9a9364
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/fb.h b/x86_64-linux-musl/include/linux/fb.h
new file mode 100644
index 0000000..a0ef0c4
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/fcntl.h b/x86_64-linux-musl/include/linux/fcntl.h
new file mode 100644
index 0000000..a46726b
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/fd.h b/x86_64-linux-musl/include/linux/fd.h
new file mode 100644
index 0000000..4d72d69
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/fdreg.h b/x86_64-linux-musl/include/linux/fdreg.h
new file mode 100644
index 0000000..2aeaf9a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/fib_rules.h b/x86_64-linux-musl/include/linux/fib_rules.h
new file mode 100644
index 0000000..733c1b1
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/fiemap.h b/x86_64-linux-musl/include/linux/fiemap.h
new file mode 100644
index 0000000..4310786
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/filter.h b/x86_64-linux-musl/include/linux/filter.h
new file mode 100644
index 0000000..d13c59d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/firewire-cdev.h b/x86_64-linux-musl/include/linux/firewire-cdev.h
new file mode 100644
index 0000000..92957bc
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/firewire-constants.h b/x86_64-linux-musl/include/linux/firewire-constants.h
new file mode 100644
index 0000000..b599852
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/fou.h b/x86_64-linux-musl/include/linux/fou.h
new file mode 100644
index 0000000..a16b8c6
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/fpga-dfl.h b/x86_64-linux-musl/include/linux/fpga-dfl.h
new file mode 100644
index 0000000..54b93d0
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/fs.h b/x86_64-linux-musl/include/linux/fs.h
new file mode 100644
index 0000000..3bb4183
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/fscrypt.h b/x86_64-linux-musl/include/linux/fscrypt.h
new file mode 100644
index 0000000..ca42eb3
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/fsi.h b/x86_64-linux-musl/include/linux/fsi.h
new file mode 100644
index 0000000..fc88464
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/fsl_hypervisor.h b/x86_64-linux-musl/include/linux/fsl_hypervisor.h
new file mode 100644
index 0000000..7d00973
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/fsl_mc.h b/x86_64-linux-musl/include/linux/fsl_mc.h
new file mode 100644
index 0000000..721da93
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/fsmap.h b/x86_64-linux-musl/include/linux/fsmap.h
new file mode 100644
index 0000000..fcfea79
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/fsverity.h b/x86_64-linux-musl/include/linux/fsverity.h
new file mode 100644
index 0000000..ff1603c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/fuse.h b/x86_64-linux-musl/include/linux/fuse.h
new file mode 100644
index 0000000..358db19
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/futex.h b/x86_64-linux-musl/include/linux/futex.h
new file mode 100644
index 0000000..c80b90c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/gameport.h b/x86_64-linux-musl/include/linux/gameport.h
new file mode 100644
index 0000000..c29864e
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/gen_stats.h b/x86_64-linux-musl/include/linux/gen_stats.h
new file mode 100644
index 0000000..2df6616
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/genetlink.h b/x86_64-linux-musl/include/linux/genetlink.h
new file mode 100644
index 0000000..2e2137d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/genwqe/genwqe_card.h b/x86_64-linux-musl/include/linux/genwqe/genwqe_card.h
new file mode 100644
index 0000000..d14c251
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/gfs2_ondisk.h b/x86_64-linux-musl/include/linux/gfs2_ondisk.h
new file mode 100644
index 0000000..1ce4278
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/gpio.h b/x86_64-linux-musl/include/linux/gpio.h
new file mode 100644
index 0000000..7e010d9
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/gsmmux.h b/x86_64-linux-musl/include/linux/gsmmux.h
new file mode 100644
index 0000000..4e6920a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/gtp.h b/x86_64-linux-musl/include/linux/gtp.h
new file mode 100644
index 0000000..3b9416e
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/hash_info.h b/x86_64-linux-musl/include/linux/hash_info.h
new file mode 100644
index 0000000..824b71a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/hdlc.h b/x86_64-linux-musl/include/linux/hdlc.h
new file mode 100644
index 0000000..10e3983
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/hdlc/ioctl.h b/x86_64-linux-musl/include/linux/hdlc/ioctl.h
new file mode 100644
index 0000000..3c727c5
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/hdlcdrv.h b/x86_64-linux-musl/include/linux/hdlcdrv.h
new file mode 100644
index 0000000..9f6cdb7
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/hdreg.h b/x86_64-linux-musl/include/linux/hdreg.h
new file mode 100644
index 0000000..29a2c24
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/hid.h b/x86_64-linux-musl/include/linux/hid.h
new file mode 100644
index 0000000..ce93cd7
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/hiddev.h b/x86_64-linux-musl/include/linux/hiddev.h
new file mode 100644
index 0000000..a7553ca
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/hidraw.h b/x86_64-linux-musl/include/linux/hidraw.h
new file mode 100644
index 0000000..65020ac
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/hpet.h b/x86_64-linux-musl/include/linux/hpet.h
new file mode 100644
index 0000000..ab944b4
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/hsi/cs-protocol.h b/x86_64-linux-musl/include/linux/hsi/cs-protocol.h
new file mode 100644
index 0000000..baac345
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/hsi/hsi_char.h b/x86_64-linux-musl/include/linux/hsi/hsi_char.h
new file mode 100644
index 0000000..e127a35
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/hsr_netlink.h b/x86_64-linux-musl/include/linux/hsr_netlink.h
new file mode 100644
index 0000000..e410e57
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/hw_breakpoint.h b/x86_64-linux-musl/include/linux/hw_breakpoint.h
new file mode 100644
index 0000000..74acd53
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/hyperv.h b/x86_64-linux-musl/include/linux/hyperv.h
new file mode 100644
index 0000000..4790bbf
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/i2c-dev.h b/x86_64-linux-musl/include/linux/i2c-dev.h
new file mode 100644
index 0000000..07fdda2
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/i2c.h b/x86_64-linux-musl/include/linux/i2c.h
new file mode 100644
index 0000000..fe578e8
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/i2o-dev.h b/x86_64-linux-musl/include/linux/i2o-dev.h
new file mode 100644
index 0000000..fc8b26d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/i8k.h b/x86_64-linux-musl/include/linux/i8k.h
new file mode 100644
index 0000000..47ada4b
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/icmp.h b/x86_64-linux-musl/include/linux/icmp.h
new file mode 100644
index 0000000..8847a48
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/icmpv6.h b/x86_64-linux-musl/include/linux/icmpv6.h
new file mode 100644
index 0000000..5285698
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/idxd.h b/x86_64-linux-musl/include/linux/idxd.h
new file mode 100644
index 0000000..2966447
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if.h b/x86_64-linux-musl/include/linux/if.h
new file mode 100644
index 0000000..63c77eb
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_addr.h b/x86_64-linux-musl/include/linux/if_addr.h
new file mode 100644
index 0000000..6a6b640
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_addrlabel.h b/x86_64-linux-musl/include/linux/if_addrlabel.h
new file mode 100644
index 0000000..cf73767
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_alg.h b/x86_64-linux-musl/include/linux/if_alg.h
new file mode 100644
index 0000000..6530a16
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_arcnet.h b/x86_64-linux-musl/include/linux/if_arcnet.h
new file mode 100644
index 0000000..6aece37
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_arp.h b/x86_64-linux-musl/include/linux/if_arp.h
new file mode 100644
index 0000000..1cd23ef
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_bonding.h b/x86_64-linux-musl/include/linux/if_bonding.h
new file mode 100644
index 0000000..60abfde
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_bridge.h b/x86_64-linux-musl/include/linux/if_bridge.h
new file mode 100644
index 0000000..2054fb3
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_cablemodem.h b/x86_64-linux-musl/include/linux/if_cablemodem.h
new file mode 100644
index 0000000..172c287
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_eql.h b/x86_64-linux-musl/include/linux/if_eql.h
new file mode 100644
index 0000000..11432ce
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_ether.h b/x86_64-linux-musl/include/linux/if_ether.h
new file mode 100644
index 0000000..1f7f8f2
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_fc.h b/x86_64-linux-musl/include/linux/if_fc.h
new file mode 100644
index 0000000..b655178
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_fddi.h b/x86_64-linux-musl/include/linux/if_fddi.h
new file mode 100644
index 0000000..4b5074b
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_hippi.h b/x86_64-linux-musl/include/linux/if_hippi.h
new file mode 100644
index 0000000..29691d9
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_infiniband.h b/x86_64-linux-musl/include/linux/if_infiniband.h
new file mode 100644
index 0000000..7f1a58c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_link.h b/x86_64-linux-musl/include/linux/if_link.h
new file mode 100644
index 0000000..6a1d89f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_ltalk.h b/x86_64-linux-musl/include/linux/if_ltalk.h
new file mode 100644
index 0000000..9dbd6ec
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_macsec.h b/x86_64-linux-musl/include/linux/if_macsec.h
new file mode 100644
index 0000000..e60d767
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_packet.h b/x86_64-linux-musl/include/linux/if_packet.h
new file mode 100644
index 0000000..e7e7a33
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_phonet.h b/x86_64-linux-musl/include/linux/if_phonet.h
new file mode 100644
index 0000000..058d0d9
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_plip.h b/x86_64-linux-musl/include/linux/if_plip.h
new file mode 100644
index 0000000..4cd6beb
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_ppp.h b/x86_64-linux-musl/include/linux/if_ppp.h
new file mode 100644
index 0000000..68f3ce5
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_pppol2tp.h b/x86_64-linux-musl/include/linux/if_pppol2tp.h
new file mode 100644
index 0000000..1ca3238
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_pppox.h b/x86_64-linux-musl/include/linux/if_pppox.h
new file mode 100644
index 0000000..40d25e8
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_slip.h b/x86_64-linux-musl/include/linux/if_slip.h
new file mode 100644
index 0000000..845fec3
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_team.h b/x86_64-linux-musl/include/linux/if_team.h
new file mode 100644
index 0000000..2f591e0
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_tun.h b/x86_64-linux-musl/include/linux/if_tun.h
new file mode 100644
index 0000000..d1a8f9e
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_tunnel.h b/x86_64-linux-musl/include/linux/if_tunnel.h
new file mode 100644
index 0000000..8e1847f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_vlan.h b/x86_64-linux-musl/include/linux/if_vlan.h
new file mode 100644
index 0000000..8ca8900
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_x25.h b/x86_64-linux-musl/include/linux/if_x25.h
new file mode 100644
index 0000000..e266f5e
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/if_xdp.h b/x86_64-linux-musl/include/linux/if_xdp.h
new file mode 100644
index 0000000..d2b6bfd
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ife.h b/x86_64-linux-musl/include/linux/ife.h
new file mode 100644
index 0000000..0cfc583
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/igmp.h b/x86_64-linux-musl/include/linux/igmp.h
new file mode 100644
index 0000000..885b0f8
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/iio/buffer.h b/x86_64-linux-musl/include/linux/iio/buffer.h
new file mode 100644
index 0000000..ba2f5e3
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/iio/events.h b/x86_64-linux-musl/include/linux/iio/events.h
new file mode 100644
index 0000000..5a23eef
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/iio/types.h b/x86_64-linux-musl/include/linux/iio/types.h
new file mode 100644
index 0000000..22409a7
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ila.h b/x86_64-linux-musl/include/linux/ila.h
new file mode 100644
index 0000000..75de8eb
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/in.h b/x86_64-linux-musl/include/linux/in.h
new file mode 100644
index 0000000..d4060e7
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/in6.h b/x86_64-linux-musl/include/linux/in6.h
new file mode 100644
index 0000000..49efe3c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/in_route.h b/x86_64-linux-musl/include/linux/in_route.h
new file mode 100644
index 0000000..f7326e2
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/incrementalfs.h b/x86_64-linux-musl/include/linux/incrementalfs.h
new file mode 100644
index 0000000..0804cc2
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/inet_diag.h b/x86_64-linux-musl/include/linux/inet_diag.h
new file mode 100644
index 0000000..8656dd4
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/inotify.h b/x86_64-linux-musl/include/linux/inotify.h
new file mode 100644
index 0000000..eb9ac3c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/input-event-codes.h b/x86_64-linux-musl/include/linux/input-event-codes.h
new file mode 100644
index 0000000..b283f56
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/input.h b/x86_64-linux-musl/include/linux/input.h
new file mode 100644
index 0000000..fe17226
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/io_uring.h b/x86_64-linux-musl/include/linux/io_uring.h
new file mode 100644
index 0000000..f6e8250
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ioam6.h b/x86_64-linux-musl/include/linux/ioam6.h
new file mode 100644
index 0000000..e32c8e9
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ioam6_genl.h b/x86_64-linux-musl/include/linux/ioam6_genl.h
new file mode 100644
index 0000000..1d00c47
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ioam6_iptunnel.h b/x86_64-linux-musl/include/linux/ioam6_iptunnel.h
new file mode 100644
index 0000000..7426225
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ioctl.h b/x86_64-linux-musl/include/linux/ioctl.h
new file mode 100644
index 0000000..98e3c06
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/iommu.h b/x86_64-linux-musl/include/linux/iommu.h
new file mode 100644
index 0000000..0a0af92
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ioprio.h b/x86_64-linux-musl/include/linux/ioprio.h
new file mode 100644
index 0000000..7a90d87
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ip.h b/x86_64-linux-musl/include/linux/ip.h
new file mode 100644
index 0000000..9571cac
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ip6_tunnel.h b/x86_64-linux-musl/include/linux/ip6_tunnel.h
new file mode 100644
index 0000000..ba59235
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ip_vs.h b/x86_64-linux-musl/include/linux/ip_vs.h
new file mode 100644
index 0000000..6e3defe
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ipc.h b/x86_64-linux-musl/include/linux/ipc.h
new file mode 100644
index 0000000..a0699cf
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ipmi.h b/x86_64-linux-musl/include/linux/ipmi.h
new file mode 100644
index 0000000..dd88f2f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ipmi_bmc.h b/x86_64-linux-musl/include/linux/ipmi_bmc.h
new file mode 100644
index 0000000..18f8b9d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ipmi_msgdefs.h b/x86_64-linux-musl/include/linux/ipmi_msgdefs.h
new file mode 100644
index 0000000..cfd435f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ipsec.h b/x86_64-linux-musl/include/linux/ipsec.h
new file mode 100644
index 0000000..4fef750
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ipv6.h b/x86_64-linux-musl/include/linux/ipv6.h
new file mode 100644
index 0000000..b3db9ce
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ipv6_route.h b/x86_64-linux-musl/include/linux/ipv6_route.h
new file mode 100644
index 0000000..b7271a7
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/irqnr.h b/x86_64-linux-musl/include/linux/irqnr.h
new file mode 100644
index 0000000..878419c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/isdn/capicmd.h b/x86_64-linux-musl/include/linux/isdn/capicmd.h
new file mode 100644
index 0000000..419b278
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/iso_fs.h b/x86_64-linux-musl/include/linux/iso_fs.h
new file mode 100644
index 0000000..8227031
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/isst_if.h b/x86_64-linux-musl/include/linux/isst_if.h
new file mode 100644
index 0000000..322f70d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ivtv.h b/x86_64-linux-musl/include/linux/ivtv.h
new file mode 100644
index 0000000..549d6a8
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ivtvfb.h b/x86_64-linux-musl/include/linux/ivtvfb.h
new file mode 100644
index 0000000..9addcbf
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/jffs2.h b/x86_64-linux-musl/include/linux/jffs2.h
new file mode 100644
index 0000000..698f953
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/joystick.h b/x86_64-linux-musl/include/linux/joystick.h
new file mode 100644
index 0000000..3f16f11
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/kcm.h b/x86_64-linux-musl/include/linux/kcm.h
new file mode 100644
index 0000000..04bf5f5
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/kcmp.h b/x86_64-linux-musl/include/linux/kcmp.h
new file mode 100644
index 0000000..d185c0a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/kcov.h b/x86_64-linux-musl/include/linux/kcov.h
new file mode 100644
index 0000000..cf2660b
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/kd.h b/x86_64-linux-musl/include/linux/kd.h
new file mode 100644
index 0000000..2385037
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/kdev_t.h b/x86_64-linux-musl/include/linux/kdev_t.h
new file mode 100644
index 0000000..7dfceca
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/kernel-page-flags.h b/x86_64-linux-musl/include/linux/kernel-page-flags.h
new file mode 100644
index 0000000..d66cd7f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/kernel.h b/x86_64-linux-musl/include/linux/kernel.h
new file mode 100644
index 0000000..7506a41
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/kernelcapi.h b/x86_64-linux-musl/include/linux/kernelcapi.h
new file mode 100644
index 0000000..519a043
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/kexec.h b/x86_64-linux-musl/include/linux/kexec.h
new file mode 100644
index 0000000..2e3bd0c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/keyboard.h b/x86_64-linux-musl/include/linux/keyboard.h
new file mode 100644
index 0000000..a05438b
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/keyctl.h b/x86_64-linux-musl/include/linux/keyctl.h
new file mode 100644
index 0000000..01ea576
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/kfd_ioctl.h b/x86_64-linux-musl/include/linux/kfd_ioctl.h
new file mode 100644
index 0000000..c52ac64
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/kvm.h b/x86_64-linux-musl/include/linux/kvm.h
new file mode 100644
index 0000000..4e815cc
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/kvm_para.h b/x86_64-linux-musl/include/linux/kvm_para.h
new file mode 100644
index 0000000..85084c2
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/l2tp.h b/x86_64-linux-musl/include/linux/l2tp.h
new file mode 100644
index 0000000..a054819
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/landlock.h b/x86_64-linux-musl/include/linux/landlock.h
new file mode 100644
index 0000000..50d79d8
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/libc-compat.h b/x86_64-linux-musl/include/linux/libc-compat.h
new file mode 100644
index 0000000..447a46a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/limits.h b/x86_64-linux-musl/include/linux/limits.h
new file mode 100644
index 0000000..101b7aa
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/lirc.h b/x86_64-linux-musl/include/linux/lirc.h
new file mode 100644
index 0000000..a0ac24a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/llc.h b/x86_64-linux-musl/include/linux/llc.h
new file mode 100644
index 0000000..e6f778f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/loop.h b/x86_64-linux-musl/include/linux/loop.h
new file mode 100644
index 0000000..56eba91
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/lp.h b/x86_64-linux-musl/include/linux/lp.h
new file mode 100644
index 0000000..35d5d5a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/lwtunnel.h b/x86_64-linux-musl/include/linux/lwtunnel.h
new file mode 100644
index 0000000..e6fb536
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/magic.h b/x86_64-linux-musl/include/linux/magic.h
new file mode 100644
index 0000000..6d583f3
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/major.h b/x86_64-linux-musl/include/linux/major.h
new file mode 100644
index 0000000..f5e2cfb
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/map_to_14segment.h b/x86_64-linux-musl/include/linux/map_to_14segment.h
new file mode 100644
index 0000000..657df6c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/map_to_7segment.h b/x86_64-linux-musl/include/linux/map_to_7segment.h
new file mode 100644
index 0000000..ccb76d3
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/matroxfb.h b/x86_64-linux-musl/include/linux/matroxfb.h
new file mode 100644
index 0000000..37f6322
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/max2175.h b/x86_64-linux-musl/include/linux/max2175.h
new file mode 100644
index 0000000..e6998e1
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/mctp.h b/x86_64-linux-musl/include/linux/mctp.h
new file mode 100644
index 0000000..21a9a14
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/mdio.h b/x86_64-linux-musl/include/linux/mdio.h
new file mode 100644
index 0000000..d5c9da8
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/media-bus-format.h b/x86_64-linux-musl/include/linux/media-bus-format.h
new file mode 100644
index 0000000..2542a32
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/media.h b/x86_64-linux-musl/include/linux/media.h
new file mode 100644
index 0000000..5c8efcd
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/mei.h b/x86_64-linux-musl/include/linux/mei.h
new file mode 100644
index 0000000..ed37abd
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/membarrier.h b/x86_64-linux-musl/include/linux/membarrier.h
new file mode 100644
index 0000000..43c103b
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/memfd.h b/x86_64-linux-musl/include/linux/memfd.h
new file mode 100644
index 0000000..914c076
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/mempolicy.h b/x86_64-linux-musl/include/linux/mempolicy.h
new file mode 100644
index 0000000..f92970f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/meye.h b/x86_64-linux-musl/include/linux/meye.h
new file mode 100644
index 0000000..a1112c4
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/mii.h b/x86_64-linux-musl/include/linux/mii.h
new file mode 100644
index 0000000..a489015
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/minix_fs.h b/x86_64-linux-musl/include/linux/minix_fs.h
new file mode 100644
index 0000000..b6f1c69
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/misc/bcm_vk.h b/x86_64-linux-musl/include/linux/misc/bcm_vk.h
new file mode 100644
index 0000000..b1b966d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/mman.h b/x86_64-linux-musl/include/linux/mman.h
new file mode 100644
index 0000000..9fdccf6
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/mmc/ioctl.h b/x86_64-linux-musl/include/linux/mmc/ioctl.h
new file mode 100644
index 0000000..afea6a5
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/mmtimer.h b/x86_64-linux-musl/include/linux/mmtimer.h
new file mode 100644
index 0000000..babdb24
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/module.h b/x86_64-linux-musl/include/linux/module.h
new file mode 100644
index 0000000..f08dc67
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/mount.h b/x86_64-linux-musl/include/linux/mount.h
new file mode 100644
index 0000000..2099b48
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/mpls.h b/x86_64-linux-musl/include/linux/mpls.h
new file mode 100644
index 0000000..86d8e07
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/mpls_iptunnel.h b/x86_64-linux-musl/include/linux/mpls_iptunnel.h
new file mode 100644
index 0000000..473cb0d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/mptcp.h b/x86_64-linux-musl/include/linux/mptcp.h
new file mode 100644
index 0000000..67b0ce3
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/mqueue.h b/x86_64-linux-musl/include/linux/mqueue.h
new file mode 100644
index 0000000..a540830
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/mroute.h b/x86_64-linux-musl/include/linux/mroute.h
new file mode 100644
index 0000000..e934d09
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/mroute6.h b/x86_64-linux-musl/include/linux/mroute6.h
new file mode 100644
index 0000000..c73765c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/mrp_bridge.h b/x86_64-linux-musl/include/linux/mrp_bridge.h
new file mode 100644
index 0000000..0f93514
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/msdos_fs.h b/x86_64-linux-musl/include/linux/msdos_fs.h
new file mode 100644
index 0000000..4b777db
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/msg.h b/x86_64-linux-musl/include/linux/msg.h
new file mode 100644
index 0000000..bb32b93
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/mtio.h b/x86_64-linux-musl/include/linux/mtio.h
new file mode 100644
index 0000000..b87c1fa
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nbd-netlink.h b/x86_64-linux-musl/include/linux/nbd-netlink.h
new file mode 100644
index 0000000..dffb077
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nbd.h b/x86_64-linux-musl/include/linux/nbd.h
new file mode 100644
index 0000000..3b74393
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ncsi.h b/x86_64-linux-musl/include/linux/ncsi.h
new file mode 100644
index 0000000..6334a8a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ndctl.h b/x86_64-linux-musl/include/linux/ndctl.h
new file mode 100644
index 0000000..53f8ba4
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/neighbour.h b/x86_64-linux-musl/include/linux/neighbour.h
new file mode 100644
index 0000000..278f7d1
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/net.h b/x86_64-linux-musl/include/linux/net.h
new file mode 100644
index 0000000..a53b329
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/net_dropmon.h b/x86_64-linux-musl/include/linux/net_dropmon.h
new file mode 100644
index 0000000..01b76cb
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/net_namespace.h b/x86_64-linux-musl/include/linux/net_namespace.h
new file mode 100644
index 0000000..a54c9e1
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/net_tstamp.h b/x86_64-linux-musl/include/linux/net_tstamp.h
new file mode 100644
index 0000000..949bcad
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netconf.h b/x86_64-linux-musl/include/linux/netconf.h
new file mode 100644
index 0000000..27d3854
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netdevice.h b/x86_64-linux-musl/include/linux/netdevice.h
new file mode 100644
index 0000000..ff2d959
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter.h b/x86_64-linux-musl/include/linux/netfilter.h
new file mode 100644
index 0000000..77b8a91
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/ipset/ip_set.h b/x86_64-linux-musl/include/linux/netfilter/ipset/ip_set.h
new file mode 100644
index 0000000..4252530
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/ipset/ip_set_bitmap.h b/x86_64-linux-musl/include/linux/netfilter/ipset/ip_set_bitmap.h
new file mode 100644
index 0000000..e323396
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/ipset/ip_set_hash.h b/x86_64-linux-musl/include/linux/netfilter/ipset/ip_set_hash.h
new file mode 100644
index 0000000..d4aadcb
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/ipset/ip_set_list.h b/x86_64-linux-musl/include/linux/netfilter/ipset/ip_set_list.h
new file mode 100644
index 0000000..d3b5165
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/nf_conntrack_common.h b/x86_64-linux-musl/include/linux/netfilter/nf_conntrack_common.h
new file mode 100644
index 0000000..3ff6030
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/nf_conntrack_ftp.h b/x86_64-linux-musl/include/linux/netfilter/nf_conntrack_ftp.h
new file mode 100644
index 0000000..0c79774
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/nf_conntrack_sctp.h b/x86_64-linux-musl/include/linux/netfilter/nf_conntrack_sctp.h
new file mode 100644
index 0000000..060059c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/nf_conntrack_tcp.h b/x86_64-linux-musl/include/linux/netfilter/nf_conntrack_tcp.h
new file mode 100644
index 0000000..8894aa1
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/nf_conntrack_tuple_common.h b/x86_64-linux-musl/include/linux/netfilter/nf_conntrack_tuple_common.h
new file mode 100644
index 0000000..b2f795c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/nf_log.h b/x86_64-linux-musl/include/linux/netfilter/nf_log.h
new file mode 100644
index 0000000..f7a729d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/nf_nat.h b/x86_64-linux-musl/include/linux/netfilter/nf_nat.h
new file mode 100644
index 0000000..84373ed
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/nf_synproxy.h b/x86_64-linux-musl/include/linux/netfilter/nf_synproxy.h
new file mode 100644
index 0000000..474838e
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/nf_tables.h b/x86_64-linux-musl/include/linux/netfilter/nf_tables.h
new file mode 100644
index 0000000..441cd60
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/nf_tables_compat.h b/x86_64-linux-musl/include/linux/netfilter/nf_tables_compat.h
new file mode 100644
index 0000000..32c129d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/nfnetlink.h b/x86_64-linux-musl/include/linux/netfilter/nfnetlink.h
new file mode 100644
index 0000000..705de74
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/nfnetlink_acct.h b/x86_64-linux-musl/include/linux/netfilter/nfnetlink_acct.h
new file mode 100644
index 0000000..497337b
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/nfnetlink_compat.h b/x86_64-linux-musl/include/linux/netfilter/nfnetlink_compat.h
new file mode 100644
index 0000000..07110bf
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/nfnetlink_conntrack.h b/x86_64-linux-musl/include/linux/netfilter/nfnetlink_conntrack.h
new file mode 100644
index 0000000..200f1a0
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/nfnetlink_cthelper.h b/x86_64-linux-musl/include/linux/netfilter/nfnetlink_cthelper.h
new file mode 100644
index 0000000..e8c2825
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/nfnetlink_cttimeout.h b/x86_64-linux-musl/include/linux/netfilter/nfnetlink_cttimeout.h
new file mode 100644
index 0000000..da9fe71
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/nfnetlink_hook.h b/x86_64-linux-musl/include/linux/netfilter/nfnetlink_hook.h
new file mode 100644
index 0000000..ce1692c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/nfnetlink_log.h b/x86_64-linux-musl/include/linux/netfilter/nfnetlink_log.h
new file mode 100644
index 0000000..f6a2708
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/nfnetlink_osf.h b/x86_64-linux-musl/include/linux/netfilter/nfnetlink_osf.h
new file mode 100644
index 0000000..3f930da
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/nfnetlink_queue.h b/x86_64-linux-musl/include/linux/netfilter/nfnetlink_queue.h
new file mode 100644
index 0000000..75fa359
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/x_tables.h b/x86_64-linux-musl/include/linux/netfilter/x_tables.h
new file mode 100644
index 0000000..46bde57
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_AUDIT.h b/x86_64-linux-musl/include/linux/netfilter/xt_AUDIT.h
new file mode 100644
index 0000000..a238375
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_CHECKSUM.h b/x86_64-linux-musl/include/linux/netfilter/xt_CHECKSUM.h
new file mode 100644
index 0000000..ecbce0e
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_CLASSIFY.h b/x86_64-linux-musl/include/linux/netfilter/xt_CLASSIFY.h
new file mode 100644
index 0000000..df0fcd2
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_CONNMARK.h b/x86_64-linux-musl/include/linux/netfilter/xt_CONNMARK.h
new file mode 100644
index 0000000..449511e
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_CONNSECMARK.h b/x86_64-linux-musl/include/linux/netfilter/xt_CONNSECMARK.h
new file mode 100644
index 0000000..d58385a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_CT.h b/x86_64-linux-musl/include/linux/netfilter/xt_CT.h
new file mode 100644
index 0000000..9c4b255
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_DSCP.h b/x86_64-linux-musl/include/linux/netfilter/xt_DSCP.h
new file mode 100644
index 0000000..adc3785
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_HMARK.h b/x86_64-linux-musl/include/linux/netfilter/xt_HMARK.h
new file mode 100644
index 0000000..b72c23c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_IDLETIMER.h b/x86_64-linux-musl/include/linux/netfilter/xt_IDLETIMER.h
new file mode 100644
index 0000000..f4defb6
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_LED.h b/x86_64-linux-musl/include/linux/netfilter/xt_LED.h
new file mode 100644
index 0000000..cbd1522
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_LOG.h b/x86_64-linux-musl/include/linux/netfilter/xt_LOG.h
new file mode 100644
index 0000000..c80c936
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_MARK.h b/x86_64-linux-musl/include/linux/netfilter/xt_MARK.h
new file mode 100644
index 0000000..e091cc6
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_NFLOG.h b/x86_64-linux-musl/include/linux/netfilter/xt_NFLOG.h
new file mode 100644
index 0000000..135109c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_NFQUEUE.h b/x86_64-linux-musl/include/linux/netfilter/xt_NFQUEUE.h
new file mode 100644
index 0000000..977ba5f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_RATEEST.h b/x86_64-linux-musl/include/linux/netfilter/xt_RATEEST.h
new file mode 100644
index 0000000..0517d79
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_SECMARK.h b/x86_64-linux-musl/include/linux/netfilter/xt_SECMARK.h
new file mode 100644
index 0000000..6dd8dbc
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_SYNPROXY.h b/x86_64-linux-musl/include/linux/netfilter/xt_SYNPROXY.h
new file mode 100644
index 0000000..4d7f436
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_TCPMSS.h b/x86_64-linux-musl/include/linux/netfilter/xt_TCPMSS.h
new file mode 100644
index 0000000..ec6adc6
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_TCPOPTSTRIP.h b/x86_64-linux-musl/include/linux/netfilter/xt_TCPOPTSTRIP.h
new file mode 100644
index 0000000..7b7a25b
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_TEE.h b/x86_64-linux-musl/include/linux/netfilter/xt_TEE.h
new file mode 100644
index 0000000..4dca1d7
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_TPROXY.h b/x86_64-linux-musl/include/linux/netfilter/xt_TPROXY.h
new file mode 100644
index 0000000..3cfbc90
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_addrtype.h b/x86_64-linux-musl/include/linux/netfilter/xt_addrtype.h
new file mode 100644
index 0000000..a4acc5d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_bpf.h b/x86_64-linux-musl/include/linux/netfilter/xt_bpf.h
new file mode 100644
index 0000000..043af45
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_cgroup.h b/x86_64-linux-musl/include/linux/netfilter/xt_cgroup.h
new file mode 100644
index 0000000..6d939ea
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_cluster.h b/x86_64-linux-musl/include/linux/netfilter/xt_cluster.h
new file mode 100644
index 0000000..e532f7d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_comment.h b/x86_64-linux-musl/include/linux/netfilter/xt_comment.h
new file mode 100644
index 0000000..2b44718
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_connbytes.h b/x86_64-linux-musl/include/linux/netfilter/xt_connbytes.h
new file mode 100644
index 0000000..a3efa02
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_connlabel.h b/x86_64-linux-musl/include/linux/netfilter/xt_connlabel.h
new file mode 100644
index 0000000..7548fa1
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_connlimit.h b/x86_64-linux-musl/include/linux/netfilter/xt_connlimit.h
new file mode 100644
index 0000000..9ff2de9
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_connmark.h b/x86_64-linux-musl/include/linux/netfilter/xt_connmark.h
new file mode 100644
index 0000000..f14474f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_conntrack.h b/x86_64-linux-musl/include/linux/netfilter/xt_conntrack.h
new file mode 100644
index 0000000..5472cc5
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_cpu.h b/x86_64-linux-musl/include/linux/netfilter/xt_cpu.h
new file mode 100644
index 0000000..76e8134
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_dccp.h b/x86_64-linux-musl/include/linux/netfilter/xt_dccp.h
new file mode 100644
index 0000000..b4e5748
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_devgroup.h b/x86_64-linux-musl/include/linux/netfilter/xt_devgroup.h
new file mode 100644
index 0000000..639484a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_dscp.h b/x86_64-linux-musl/include/linux/netfilter/xt_dscp.h
new file mode 100644
index 0000000..f34afc0
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_ecn.h b/x86_64-linux-musl/include/linux/netfilter/xt_ecn.h
new file mode 100644
index 0000000..aee7d84
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_esp.h b/x86_64-linux-musl/include/linux/netfilter/xt_esp.h
new file mode 100644
index 0000000..22e7632
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_hashlimit.h b/x86_64-linux-musl/include/linux/netfilter/xt_hashlimit.h
new file mode 100644
index 0000000..572c85d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_helper.h b/x86_64-linux-musl/include/linux/netfilter/xt_helper.h
new file mode 100644
index 0000000..d792274
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_ipcomp.h b/x86_64-linux-musl/include/linux/netfilter/xt_ipcomp.h
new file mode 100644
index 0000000..4e99d70
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_iprange.h b/x86_64-linux-musl/include/linux/netfilter/xt_iprange.h
new file mode 100644
index 0000000..57ab108
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_ipvs.h b/x86_64-linux-musl/include/linux/netfilter/xt_ipvs.h
new file mode 100644
index 0000000..6f649b1
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_l2tp.h b/x86_64-linux-musl/include/linux/netfilter/xt_l2tp.h
new file mode 100644
index 0000000..cad9921
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_length.h b/x86_64-linux-musl/include/linux/netfilter/xt_length.h
new file mode 100644
index 0000000..4a0792a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_limit.h b/x86_64-linux-musl/include/linux/netfilter/xt_limit.h
new file mode 100644
index 0000000..785679f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_mac.h b/x86_64-linux-musl/include/linux/netfilter/xt_mac.h
new file mode 100644
index 0000000..bc7b7c8
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_mark.h b/x86_64-linux-musl/include/linux/netfilter/xt_mark.h
new file mode 100644
index 0000000..0ec01e9
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_multiport.h b/x86_64-linux-musl/include/linux/netfilter/xt_multiport.h
new file mode 100644
index 0000000..fff7045
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_nfacct.h b/x86_64-linux-musl/include/linux/netfilter/xt_nfacct.h
new file mode 100644
index 0000000..a2b042e
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_osf.h b/x86_64-linux-musl/include/linux/netfilter/xt_osf.h
new file mode 100644
index 0000000..892ad40
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_owner.h b/x86_64-linux-musl/include/linux/netfilter/xt_owner.h
new file mode 100644
index 0000000..e077aad
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_physdev.h b/x86_64-linux-musl/include/linux/netfilter/xt_physdev.h
new file mode 100644
index 0000000..be3734c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_pkttype.h b/x86_64-linux-musl/include/linux/netfilter/xt_pkttype.h
new file mode 100644
index 0000000..f9b2f3f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_policy.h b/x86_64-linux-musl/include/linux/netfilter/xt_policy.h
new file mode 100644
index 0000000..495aeb0
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_quota.h b/x86_64-linux-musl/include/linux/netfilter/xt_quota.h
new file mode 100644
index 0000000..96743f4
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_rateest.h b/x86_64-linux-musl/include/linux/netfilter/xt_rateest.h
new file mode 100644
index 0000000..5d509b3
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_realm.h b/x86_64-linux-musl/include/linux/netfilter/xt_realm.h
new file mode 100644
index 0000000..6c78694
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_recent.h b/x86_64-linux-musl/include/linux/netfilter/xt_recent.h
new file mode 100644
index 0000000..d7b3609
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_rpfilter.h b/x86_64-linux-musl/include/linux/netfilter/xt_rpfilter.h
new file mode 100644
index 0000000..958d92a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_sctp.h b/x86_64-linux-musl/include/linux/netfilter/xt_sctp.h
new file mode 100644
index 0000000..98dd0d1
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_set.h b/x86_64-linux-musl/include/linux/netfilter/xt_set.h
new file mode 100644
index 0000000..5374159
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_socket.h b/x86_64-linux-musl/include/linux/netfilter/xt_socket.h
new file mode 100644
index 0000000..055b579
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_state.h b/x86_64-linux-musl/include/linux/netfilter/xt_state.h
new file mode 100644
index 0000000..d692e60
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_statistic.h b/x86_64-linux-musl/include/linux/netfilter/xt_statistic.h
new file mode 100644
index 0000000..3aae832
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_string.h b/x86_64-linux-musl/include/linux/netfilter/xt_string.h
new file mode 100644
index 0000000..9296dfb
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_tcpmss.h b/x86_64-linux-musl/include/linux/netfilter/xt_tcpmss.h
new file mode 100644
index 0000000..87a9fdd
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_tcpudp.h b/x86_64-linux-musl/include/linux/netfilter/xt_tcpudp.h
new file mode 100644
index 0000000..4bca77f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_time.h b/x86_64-linux-musl/include/linux/netfilter/xt_time.h
new file mode 100644
index 0000000..ded53b8
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter/xt_u32.h b/x86_64-linux-musl/include/linux/netfilter/xt_u32.h
new file mode 100644
index 0000000..d7de9c9
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_arp.h b/x86_64-linux-musl/include/linux/netfilter_arp.h
new file mode 100644
index 0000000..a5e427c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_arp/arp_tables.h b/x86_64-linux-musl/include/linux/netfilter_arp/arp_tables.h
new file mode 100644
index 0000000..340625f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_arp/arpt_mangle.h b/x86_64-linux-musl/include/linux/netfilter_arp/arpt_mangle.h
new file mode 100644
index 0000000..ff07a0a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_bridge.h b/x86_64-linux-musl/include/linux/netfilter_bridge.h
new file mode 100644
index 0000000..e1434f4
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_802_3.h b/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_802_3.h
new file mode 100644
index 0000000..5f11ba4
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_among.h b/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_among.h
new file mode 100644
index 0000000..74cd550
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_arp.h b/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_arp.h
new file mode 100644
index 0000000..17fb19f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_arpreply.h b/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_arpreply.h
new file mode 100644
index 0000000..c880f01
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_ip.h b/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_ip.h
new file mode 100644
index 0000000..6ee8afb
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_ip6.h b/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_ip6.h
new file mode 100644
index 0000000..d49e074
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_limit.h b/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_limit.h
new file mode 100644
index 0000000..80e1a09
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_log.h b/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_log.h
new file mode 100644
index 0000000..dbe3fec
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_mark_m.h b/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_mark_m.h
new file mode 100644
index 0000000..cc35658
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_mark_t.h b/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_mark_t.h
new file mode 100644
index 0000000..5b662f9
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_nat.h b/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_nat.h
new file mode 100644
index 0000000..c0b58c0
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_nflog.h b/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_nflog.h
new file mode 100644
index 0000000..de50e04
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_pkttype.h b/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_pkttype.h
new file mode 100644
index 0000000..dfb7e70
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_redirect.h b/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_redirect.h
new file mode 100644
index 0000000..e329c74
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_stp.h b/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_stp.h
new file mode 100644
index 0000000..47565e3
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_vlan.h b/x86_64-linux-musl/include/linux/netfilter_bridge/ebt_vlan.h
new file mode 100644
index 0000000..9cc2420
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_bridge/ebtables.h b/x86_64-linux-musl/include/linux/netfilter_bridge/ebtables.h
new file mode 100644
index 0000000..7c8f435
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_decnet.h b/x86_64-linux-musl/include/linux/netfilter_decnet.h
new file mode 100644
index 0000000..c9c16ca
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv4.h b/x86_64-linux-musl/include/linux/netfilter_ipv4.h
new file mode 100644
index 0000000..bb2a1d9
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv4/ip_tables.h b/x86_64-linux-musl/include/linux/netfilter_ipv4/ip_tables.h
new file mode 100644
index 0000000..033c519
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h b/x86_64-linux-musl/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h
new file mode 100644
index 0000000..b5376b8
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv4/ipt_ECN.h b/x86_64-linux-musl/include/linux/netfilter_ipv4/ipt_ECN.h
new file mode 100644
index 0000000..a67f997
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv4/ipt_LOG.h b/x86_64-linux-musl/include/linux/netfilter_ipv4/ipt_LOG.h
new file mode 100644
index 0000000..c049244
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv4/ipt_REJECT.h b/x86_64-linux-musl/include/linux/netfilter_ipv4/ipt_REJECT.h
new file mode 100644
index 0000000..2650d04
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv4/ipt_TTL.h b/x86_64-linux-musl/include/linux/netfilter_ipv4/ipt_TTL.h
new file mode 100644
index 0000000..d4509ac
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv4/ipt_ah.h b/x86_64-linux-musl/include/linux/netfilter_ipv4/ipt_ah.h
new file mode 100644
index 0000000..652db9c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv4/ipt_ecn.h b/x86_64-linux-musl/include/linux/netfilter_ipv4/ipt_ecn.h
new file mode 100644
index 0000000..a892af5
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv4/ipt_ttl.h b/x86_64-linux-musl/include/linux/netfilter_ipv4/ipt_ttl.h
new file mode 100644
index 0000000..26c1a4f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv6.h b/x86_64-linux-musl/include/linux/netfilter_ipv6.h
new file mode 100644
index 0000000..f454eb6
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6_tables.h b/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6_tables.h
new file mode 100644
index 0000000..b3f426d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_HL.h b/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_HL.h
new file mode 100644
index 0000000..85983c6
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_LOG.h b/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_LOG.h
new file mode 100644
index 0000000..eb3f26a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_NPT.h b/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_NPT.h
new file mode 100644
index 0000000..4f41cde
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_REJECT.h b/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_REJECT.h
new file mode 100644
index 0000000..96fcdbe
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_ah.h b/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_ah.h
new file mode 100644
index 0000000..a566e6c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_frag.h b/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_frag.h
new file mode 100644
index 0000000..accbe18
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_hl.h b/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_hl.h
new file mode 100644
index 0000000..048636d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_ipv6header.h b/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_ipv6header.h
new file mode 100644
index 0000000..3c5dca5
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_mh.h b/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_mh.h
new file mode 100644
index 0000000..849119f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_opts.h b/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_opts.h
new file mode 100644
index 0000000..21052ee
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_rt.h b/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_rt.h
new file mode 100644
index 0000000..2203b82
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_srh.h b/x86_64-linux-musl/include/linux/netfilter_ipv6/ip6t_srh.h
new file mode 100644
index 0000000..a9474e7
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netlink.h b/x86_64-linux-musl/include/linux/netlink.h
new file mode 100644
index 0000000..77825cc
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netlink_diag.h b/x86_64-linux-musl/include/linux/netlink_diag.h
new file mode 100644
index 0000000..afe1521
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/netrom.h b/x86_64-linux-musl/include/linux/netrom.h
new file mode 100644
index 0000000..917b850
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nexthop.h b/x86_64-linux-musl/include/linux/nexthop.h
new file mode 100644
index 0000000..4bc9ff0
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nfc.h b/x86_64-linux-musl/include/linux/nfc.h
new file mode 100644
index 0000000..ff980f4
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nfs.h b/x86_64-linux-musl/include/linux/nfs.h
new file mode 100644
index 0000000..e8c0499
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nfs2.h b/x86_64-linux-musl/include/linux/nfs2.h
new file mode 100644
index 0000000..4cbca12
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nfs3.h b/x86_64-linux-musl/include/linux/nfs3.h
new file mode 100644
index 0000000..af0d668
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nfs4.h b/x86_64-linux-musl/include/linux/nfs4.h
new file mode 100644
index 0000000..9d614ce
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nfs4_mount.h b/x86_64-linux-musl/include/linux/nfs4_mount.h
new file mode 100644
index 0000000..0f794dd
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nfs_fs.h b/x86_64-linux-musl/include/linux/nfs_fs.h
new file mode 100644
index 0000000..f8228ec
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nfs_idmap.h b/x86_64-linux-musl/include/linux/nfs_idmap.h
new file mode 100644
index 0000000..6287cc6
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nfs_mount.h b/x86_64-linux-musl/include/linux/nfs_mount.h
new file mode 100644
index 0000000..5b00222
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nfsacl.h b/x86_64-linux-musl/include/linux/nfsacl.h
new file mode 100644
index 0000000..65dccad
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nfsd/cld.h b/x86_64-linux-musl/include/linux/nfsd/cld.h
new file mode 100644
index 0000000..92b89c0
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nfsd/debug.h b/x86_64-linux-musl/include/linux/nfsd/debug.h
new file mode 100644
index 0000000..d4ccf69
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nfsd/export.h b/x86_64-linux-musl/include/linux/nfsd/export.h
new file mode 100644
index 0000000..4716fb1
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nfsd/stats.h b/x86_64-linux-musl/include/linux/nfsd/stats.h
new file mode 100644
index 0000000..91b4a74
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nilfs2_api.h b/x86_64-linux-musl/include/linux/nilfs2_api.h
new file mode 100644
index 0000000..d6a6b8f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nilfs2_ondisk.h b/x86_64-linux-musl/include/linux/nilfs2_ondisk.h
new file mode 100644
index 0000000..a05e7b7
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nitro_enclaves.h b/x86_64-linux-musl/include/linux/nitro_enclaves.h
new file mode 100644
index 0000000..20b26ef
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nl80211-vnd-intel.h b/x86_64-linux-musl/include/linux/nl80211-vnd-intel.h
new file mode 100644
index 0000000..9ade75a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nl80211.h b/x86_64-linux-musl/include/linux/nl80211.h
new file mode 100644
index 0000000..edcda8a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nsfs.h b/x86_64-linux-musl/include/linux/nsfs.h
new file mode 100644
index 0000000..d32d31c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nubus.h b/x86_64-linux-musl/include/linux/nubus.h
new file mode 100644
index 0000000..141c2f2
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nvme_ioctl.h b/x86_64-linux-musl/include/linux/nvme_ioctl.h
new file mode 100644
index 0000000..f2a328e
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/nvram.h b/x86_64-linux-musl/include/linux/nvram.h
new file mode 100644
index 0000000..575b49a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/omap3isp.h b/x86_64-linux-musl/include/linux/omap3isp.h
new file mode 100644
index 0000000..d2eceb7
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/omapfb.h b/x86_64-linux-musl/include/linux/omapfb.h
new file mode 100644
index 0000000..6ebec08
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/oom.h b/x86_64-linux-musl/include/linux/oom.h
new file mode 100644
index 0000000..2fcdd29
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/openat2.h b/x86_64-linux-musl/include/linux/openat2.h
new file mode 100644
index 0000000..d397a00
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/openvswitch.h b/x86_64-linux-musl/include/linux/openvswitch.h
new file mode 100644
index 0000000..1f8ae17
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/packet_diag.h b/x86_64-linux-musl/include/linux/packet_diag.h
new file mode 100644
index 0000000..35d5413
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/param.h b/x86_64-linux-musl/include/linux/param.h
new file mode 100644
index 0000000..be5bb63
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/parport.h b/x86_64-linux-musl/include/linux/parport.h
new file mode 100644
index 0000000..8152224
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/patchkey.h b/x86_64-linux-musl/include/linux/patchkey.h
new file mode 100644
index 0000000..12c2731
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/pci.h b/x86_64-linux-musl/include/linux/pci.h
new file mode 100644
index 0000000..14a68e4
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/pci_regs.h b/x86_64-linux-musl/include/linux/pci_regs.h
new file mode 100644
index 0000000..5920633
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/pcitest.h b/x86_64-linux-musl/include/linux/pcitest.h
new file mode 100644
index 0000000..98248bd
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/perf_event.h b/x86_64-linux-musl/include/linux/perf_event.h
new file mode 100644
index 0000000..dee8cd7
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/personality.h b/x86_64-linux-musl/include/linux/personality.h
new file mode 100644
index 0000000..1db5026
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/pfkeyv2.h b/x86_64-linux-musl/include/linux/pfkeyv2.h
new file mode 100644
index 0000000..8f65681
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/pg.h b/x86_64-linux-musl/include/linux/pg.h
new file mode 100644
index 0000000..dd52282
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/phantom.h b/x86_64-linux-musl/include/linux/phantom.h
new file mode 100644
index 0000000..2016cc5
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/phonet.h b/x86_64-linux-musl/include/linux/phonet.h
new file mode 100644
index 0000000..8134016
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/pidfd.h b/x86_64-linux-musl/include/linux/pidfd.h
new file mode 100644
index 0000000..cd60118
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/pkt_cls.h b/x86_64-linux-musl/include/linux/pkt_cls.h
new file mode 100644
index 0000000..4907a78
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/pkt_sched.h b/x86_64-linux-musl/include/linux/pkt_sched.h
new file mode 100644
index 0000000..e298b74
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/pktcdvd.h b/x86_64-linux-musl/include/linux/pktcdvd.h
new file mode 100644
index 0000000..eed22f8
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/pmu.h b/x86_64-linux-musl/include/linux/pmu.h
new file mode 100644
index 0000000..d3d08b0
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/poll.h b/x86_64-linux-musl/include/linux/poll.h
new file mode 100644
index 0000000..cd542e6
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/posix_acl.h b/x86_64-linux-musl/include/linux/posix_acl.h
new file mode 100644
index 0000000..96c302a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/posix_acl_xattr.h b/x86_64-linux-musl/include/linux/posix_acl_xattr.h
new file mode 100644
index 0000000..c66bfa7
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/posix_types.h b/x86_64-linux-musl/include/linux/posix_types.h
new file mode 100644
index 0000000..19fdf48
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ppdev.h b/x86_64-linux-musl/include/linux/ppdev.h
new file mode 100644
index 0000000..450d6fd
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ppp-comp.h b/x86_64-linux-musl/include/linux/ppp-comp.h
new file mode 100644
index 0000000..08aeab3
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ppp-ioctl.h b/x86_64-linux-musl/include/linux/ppp-ioctl.h
new file mode 100644
index 0000000..69c6e6d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ppp_defs.h b/x86_64-linux-musl/include/linux/ppp_defs.h
new file mode 100644
index 0000000..84c23d9
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/pps.h b/x86_64-linux-musl/include/linux/pps.h
new file mode 100644
index 0000000..4bfe30d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/pr.h b/x86_64-linux-musl/include/linux/pr.h
new file mode 100644
index 0000000..7a7b8b1
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/prctl.h b/x86_64-linux-musl/include/linux/prctl.h
new file mode 100644
index 0000000..9b4c695
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/psample.h b/x86_64-linux-musl/include/linux/psample.h
new file mode 100644
index 0000000..efb1c24
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/psci.h b/x86_64-linux-musl/include/linux/psci.h
new file mode 100644
index 0000000..bc522e7
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/psp-sev.h b/x86_64-linux-musl/include/linux/psp-sev.h
new file mode 100644
index 0000000..6c4f73d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ptp_clock.h b/x86_64-linux-musl/include/linux/ptp_clock.h
new file mode 100644
index 0000000..ca6f3c3
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ptrace.h b/x86_64-linux-musl/include/linux/ptrace.h
new file mode 100644
index 0000000..4bfa59a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/qemu_fw_cfg.h b/x86_64-linux-musl/include/linux/qemu_fw_cfg.h
new file mode 100644
index 0000000..173af1f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/qnx4_fs.h b/x86_64-linux-musl/include/linux/qnx4_fs.h
new file mode 100644
index 0000000..c6f1a8e
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/qnxtypes.h b/x86_64-linux-musl/include/linux/qnxtypes.h
new file mode 100644
index 0000000..d313361
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/qrtr.h b/x86_64-linux-musl/include/linux/qrtr.h
new file mode 100644
index 0000000..c0a4c72
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/quota.h b/x86_64-linux-musl/include/linux/quota.h
new file mode 100644
index 0000000..280b396
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/radeonfb.h b/x86_64-linux-musl/include/linux/radeonfb.h
new file mode 100644
index 0000000..b7a6b9d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/raid/md_p.h b/x86_64-linux-musl/include/linux/raid/md_p.h
new file mode 100644
index 0000000..4ad444a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/raid/md_u.h b/x86_64-linux-musl/include/linux/raid/md_u.h
new file mode 100644
index 0000000..8c7fadc
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/random.h b/x86_64-linux-musl/include/linux/random.h
new file mode 100644
index 0000000..2d3cfef
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/rds.h b/x86_64-linux-musl/include/linux/rds.h
new file mode 100644
index 0000000..7006c87
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/reboot.h b/x86_64-linux-musl/include/linux/reboot.h
new file mode 100644
index 0000000..6bf017a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/reiserfs_fs.h b/x86_64-linux-musl/include/linux/reiserfs_fs.h
new file mode 100644
index 0000000..5485b1f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/reiserfs_xattr.h b/x86_64-linux-musl/include/linux/reiserfs_xattr.h
new file mode 100644
index 0000000..36d31f6
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/remoteproc_cdev.h b/x86_64-linux-musl/include/linux/remoteproc_cdev.h
new file mode 100644
index 0000000..a10ff01
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/resource.h b/x86_64-linux-musl/include/linux/resource.h
new file mode 100644
index 0000000..6f531a0
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/rfkill.h b/x86_64-linux-musl/include/linux/rfkill.h
new file mode 100644
index 0000000..6020baf
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/rio_cm_cdev.h b/x86_64-linux-musl/include/linux/rio_cm_cdev.h
new file mode 100644
index 0000000..39799bc
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/rio_mport_cdev.h b/x86_64-linux-musl/include/linux/rio_mport_cdev.h
new file mode 100644
index 0000000..3e6d6de
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/rkisp1-config.h b/x86_64-linux-musl/include/linux/rkisp1-config.h
new file mode 100644
index 0000000..cea14cd
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/romfs_fs.h b/x86_64-linux-musl/include/linux/romfs_fs.h
new file mode 100644
index 0000000..8e98714
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/rose.h b/x86_64-linux-musl/include/linux/rose.h
new file mode 100644
index 0000000..fa813c7
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/route.h b/x86_64-linux-musl/include/linux/route.h
new file mode 100644
index 0000000..4ba6023
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/rpl.h b/x86_64-linux-musl/include/linux/rpl.h
new file mode 100644
index 0000000..3648bfc
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/rpl_iptunnel.h b/x86_64-linux-musl/include/linux/rpl_iptunnel.h
new file mode 100644
index 0000000..c61725d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/rpmsg.h b/x86_64-linux-musl/include/linux/rpmsg.h
new file mode 100644
index 0000000..c5b5a76
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/rpmsg_types.h b/x86_64-linux-musl/include/linux/rpmsg_types.h
new file mode 100644
index 0000000..6599f4c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/rseq.h b/x86_64-linux-musl/include/linux/rseq.h
new file mode 100644
index 0000000..ba0ceb1
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/rtc.h b/x86_64-linux-musl/include/linux/rtc.h
new file mode 100644
index 0000000..cf5f22a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/rtnetlink.h b/x86_64-linux-musl/include/linux/rtnetlink.h
new file mode 100644
index 0000000..b3d082a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/rxrpc.h b/x86_64-linux-musl/include/linux/rxrpc.h
new file mode 100644
index 0000000..16207dd
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/scc.h b/x86_64-linux-musl/include/linux/scc.h
new file mode 100644
index 0000000..a2a5503
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/sched.h b/x86_64-linux-musl/include/linux/sched.h
new file mode 100644
index 0000000..f9c00df
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/sched/types.h b/x86_64-linux-musl/include/linux/sched/types.h
new file mode 100644
index 0000000..385b21a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/scif_ioctl.h b/x86_64-linux-musl/include/linux/scif_ioctl.h
new file mode 100644
index 0000000..14e199c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/screen_info.h b/x86_64-linux-musl/include/linux/screen_info.h
new file mode 100644
index 0000000..7dfadba
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/sctp.h b/x86_64-linux-musl/include/linux/sctp.h
new file mode 100644
index 0000000..765d6c9
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/seccomp.h b/x86_64-linux-musl/include/linux/seccomp.h
new file mode 100644
index 0000000..e58b421
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/securebits.h b/x86_64-linux-musl/include/linux/securebits.h
new file mode 100644
index 0000000..b73053e
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/sed-opal.h b/x86_64-linux-musl/include/linux/sed-opal.h
new file mode 100644
index 0000000..a20197a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/seg6.h b/x86_64-linux-musl/include/linux/seg6.h
new file mode 100644
index 0000000..f180485
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/seg6_genl.h b/x86_64-linux-musl/include/linux/seg6_genl.h
new file mode 100644
index 0000000..bcd5f36
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/seg6_hmac.h b/x86_64-linux-musl/include/linux/seg6_hmac.h
new file mode 100644
index 0000000..d5ef671
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/seg6_iptunnel.h b/x86_64-linux-musl/include/linux/seg6_iptunnel.h
new file mode 100644
index 0000000..1c1ad83
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/seg6_local.h b/x86_64-linux-musl/include/linux/seg6_local.h
new file mode 100644
index 0000000..61a8d97
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/selinux_netlink.h b/x86_64-linux-musl/include/linux/selinux_netlink.h
new file mode 100644
index 0000000..16d928d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/sem.h b/x86_64-linux-musl/include/linux/sem.h
new file mode 100644
index 0000000..98ed1bf
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/serial.h b/x86_64-linux-musl/include/linux/serial.h
new file mode 100644
index 0000000..e4e903d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/serial_core.h b/x86_64-linux-musl/include/linux/serial_core.h
new file mode 100644
index 0000000..0caf698
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/serial_reg.h b/x86_64-linux-musl/include/linux/serial_reg.h
new file mode 100644
index 0000000..b6648f8
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/serio.h b/x86_64-linux-musl/include/linux/serio.h
new file mode 100644
index 0000000..605a4e4
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/shm.h b/x86_64-linux-musl/include/linux/shm.h
new file mode 100644
index 0000000..72ee715
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/signal.h b/x86_64-linux-musl/include/linux/signal.h
new file mode 100644
index 0000000..dd00a32
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/signalfd.h b/x86_64-linux-musl/include/linux/signalfd.h
new file mode 100644
index 0000000..5108ef0
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/smc.h b/x86_64-linux-musl/include/linux/smc.h
new file mode 100644
index 0000000..5c07207
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/smc_diag.h b/x86_64-linux-musl/include/linux/smc_diag.h
new file mode 100644
index 0000000..30e0fa2
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/smiapp.h b/x86_64-linux-musl/include/linux/smiapp.h
new file mode 100644
index 0000000..3dd54cc
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/snmp.h b/x86_64-linux-musl/include/linux/snmp.h
new file mode 100644
index 0000000..a503a7e
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/sock_diag.h b/x86_64-linux-musl/include/linux/sock_diag.h
new file mode 100644
index 0000000..a4e40d9
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/socket.h b/x86_64-linux-musl/include/linux/socket.h
new file mode 100644
index 0000000..be16548
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/sockios.h b/x86_64-linux-musl/include/linux/sockios.h
new file mode 100644
index 0000000..2d13d93
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/sonet.h b/x86_64-linux-musl/include/linux/sonet.h
new file mode 100644
index 0000000..ca10ec2
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/sonypi.h b/x86_64-linux-musl/include/linux/sonypi.h
new file mode 100644
index 0000000..84befde
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/sound.h b/x86_64-linux-musl/include/linux/sound.h
new file mode 100644
index 0000000..c303564
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/soundcard.h b/x86_64-linux-musl/include/linux/soundcard.h
new file mode 100644
index 0000000..1c345bd
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/spi/spi.h b/x86_64-linux-musl/include/linux/spi/spi.h
new file mode 100644
index 0000000..39267a2
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/spi/spidev.h b/x86_64-linux-musl/include/linux/spi/spidev.h
new file mode 100644
index 0000000..19d1d84
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/stat.h b/x86_64-linux-musl/include/linux/stat.h
new file mode 100644
index 0000000..a15b9b5
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/stddef.h b/x86_64-linux-musl/include/linux/stddef.h
new file mode 100644
index 0000000..d5cdf80
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/stm.h b/x86_64-linux-musl/include/linux/stm.h
new file mode 100644
index 0000000..1c7f7f3
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/string.h b/x86_64-linux-musl/include/linux/string.h
new file mode 100644
index 0000000..2ff62f2
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/sunrpc/debug.h b/x86_64-linux-musl/include/linux/sunrpc/debug.h
new file mode 100644
index 0000000..86c4d86
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/surface_aggregator/cdev.h b/x86_64-linux-musl/include/linux/surface_aggregator/cdev.h
new file mode 100644
index 0000000..2e097f0
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/surface_aggregator/dtx.h b/x86_64-linux-musl/include/linux/surface_aggregator/dtx.h
new file mode 100644
index 0000000..dde5ad3
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/suspend_ioctls.h b/x86_64-linux-musl/include/linux/suspend_ioctls.h
new file mode 100644
index 0000000..b011d93
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/swab.h b/x86_64-linux-musl/include/linux/swab.h
new file mode 100644
index 0000000..e96085e
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/switchtec_ioctl.h b/x86_64-linux-musl/include/linux/switchtec_ioctl.h
new file mode 100644
index 0000000..204839d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/sync_file.h b/x86_64-linux-musl/include/linux/sync_file.h
new file mode 100644
index 0000000..497300e
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/synclink.h b/x86_64-linux-musl/include/linux/synclink.h
new file mode 100644
index 0000000..ba8ecb9
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/sysctl.h b/x86_64-linux-musl/include/linux/sysctl.h
new file mode 100644
index 0000000..ae9c2ba
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/sysinfo.h b/x86_64-linux-musl/include/linux/sysinfo.h
new file mode 100644
index 0000000..6501a8c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/target_core_user.h b/x86_64-linux-musl/include/linux/target_core_user.h
new file mode 100644
index 0000000..dcba00e
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/taskstats.h b/x86_64-linux-musl/include/linux/taskstats.h
new file mode 100644
index 0000000..5f9d0cc
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_act/tc_bpf.h b/x86_64-linux-musl/include/linux/tc_act/tc_bpf.h
new file mode 100644
index 0000000..48094d4
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_act/tc_connmark.h b/x86_64-linux-musl/include/linux/tc_act/tc_connmark.h
new file mode 100644
index 0000000..5fe979c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_act/tc_csum.h b/x86_64-linux-musl/include/linux/tc_act/tc_csum.h
new file mode 100644
index 0000000..1fcd00d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_act/tc_ct.h b/x86_64-linux-musl/include/linux/tc_act/tc_ct.h
new file mode 100644
index 0000000..0443b95
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_act/tc_ctinfo.h b/x86_64-linux-musl/include/linux/tc_act/tc_ctinfo.h
new file mode 100644
index 0000000..18fdf60
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_act/tc_defact.h b/x86_64-linux-musl/include/linux/tc_act/tc_defact.h
new file mode 100644
index 0000000..f3fb529
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_act/tc_gact.h b/x86_64-linux-musl/include/linux/tc_act/tc_gact.h
new file mode 100644
index 0000000..ac96dff
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_act/tc_gate.h b/x86_64-linux-musl/include/linux/tc_act/tc_gate.h
new file mode 100644
index 0000000..f0a6412
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_act/tc_ife.h b/x86_64-linux-musl/include/linux/tc_act/tc_ife.h
new file mode 100644
index 0000000..346ebac
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_act/tc_ipt.h b/x86_64-linux-musl/include/linux/tc_act/tc_ipt.h
new file mode 100644
index 0000000..d578ce7
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_act/tc_mirred.h b/x86_64-linux-musl/include/linux/tc_act/tc_mirred.h
new file mode 100644
index 0000000..af04d03
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_act/tc_mpls.h b/x86_64-linux-musl/include/linux/tc_act/tc_mpls.h
new file mode 100644
index 0000000..5e23fde
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_act/tc_nat.h b/x86_64-linux-musl/include/linux/tc_act/tc_nat.h
new file mode 100644
index 0000000..14aeffb
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_act/tc_pedit.h b/x86_64-linux-musl/include/linux/tc_act/tc_pedit.h
new file mode 100644
index 0000000..cb8bd22
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_act/tc_sample.h b/x86_64-linux-musl/include/linux/tc_act/tc_sample.h
new file mode 100644
index 0000000..7d9a32e
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_act/tc_skbedit.h b/x86_64-linux-musl/include/linux/tc_act/tc_skbedit.h
new file mode 100644
index 0000000..5706d4d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_act/tc_skbmod.h b/x86_64-linux-musl/include/linux/tc_act/tc_skbmod.h
new file mode 100644
index 0000000..f0cd928
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_act/tc_tunnel_key.h b/x86_64-linux-musl/include/linux/tc_act/tc_tunnel_key.h
new file mode 100644
index 0000000..e137ae8
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_act/tc_vlan.h b/x86_64-linux-musl/include/linux/tc_act/tc_vlan.h
new file mode 100644
index 0000000..004c7ae
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_ematch/tc_em_cmp.h b/x86_64-linux-musl/include/linux/tc_ematch/tc_em_cmp.h
new file mode 100644
index 0000000..4e01cf5
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_ematch/tc_em_ipt.h b/x86_64-linux-musl/include/linux/tc_ematch/tc_em_ipt.h
new file mode 100644
index 0000000..8cd06ee
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_ematch/tc_em_meta.h b/x86_64-linux-musl/include/linux/tc_ematch/tc_em_meta.h
new file mode 100644
index 0000000..1b91cd1
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_ematch/tc_em_nbyte.h b/x86_64-linux-musl/include/linux/tc_ematch/tc_em_nbyte.h
new file mode 100644
index 0000000..cce2d2c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tc_ematch/tc_em_text.h b/x86_64-linux-musl/include/linux/tc_ematch/tc_em_text.h
new file mode 100644
index 0000000..9d0ab65
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tcp.h b/x86_64-linux-musl/include/linux/tcp.h
new file mode 100644
index 0000000..c96d695
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tcp_metrics.h b/x86_64-linux-musl/include/linux/tcp_metrics.h
new file mode 100644
index 0000000..b9eb141
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tee.h b/x86_64-linux-musl/include/linux/tee.h
new file mode 100644
index 0000000..5cfe713
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/termios.h b/x86_64-linux-musl/include/linux/termios.h
new file mode 100644
index 0000000..cde4099
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/thermal.h b/x86_64-linux-musl/include/linux/thermal.h
new file mode 100644
index 0000000..72ea378
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/time.h b/x86_64-linux-musl/include/linux/time.h
new file mode 100644
index 0000000..df52295
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/time_types.h b/x86_64-linux-musl/include/linux/time_types.h
new file mode 100644
index 0000000..8c70a56
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/timerfd.h b/x86_64-linux-musl/include/linux/timerfd.h
new file mode 100644
index 0000000..eaa415a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/times.h b/x86_64-linux-musl/include/linux/times.h
new file mode 100644
index 0000000..b204b78
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/timex.h b/x86_64-linux-musl/include/linux/timex.h
new file mode 100644
index 0000000..803eaec
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tiocl.h b/x86_64-linux-musl/include/linux/tiocl.h
new file mode 100644
index 0000000..4649607
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tipc.h b/x86_64-linux-musl/include/linux/tipc.h
new file mode 100644
index 0000000..c66754c
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tipc_config.h b/x86_64-linux-musl/include/linux/tipc_config.h
new file mode 100644
index 0000000..a371e37
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tipc_netlink.h b/x86_64-linux-musl/include/linux/tipc_netlink.h
new file mode 100644
index 0000000..39be948
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tipc_sockets_diag.h b/x86_64-linux-musl/include/linux/tipc_sockets_diag.h
new file mode 100644
index 0000000..7d7d016
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tls.h b/x86_64-linux-musl/include/linux/tls.h
new file mode 100644
index 0000000..c98ea0b
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/toshiba.h b/x86_64-linux-musl/include/linux/toshiba.h
new file mode 100644
index 0000000..5b59d69
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tty.h b/x86_64-linux-musl/include/linux/tty.h
new file mode 100644
index 0000000..48fa908
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/tty_flags.h b/x86_64-linux-musl/include/linux/tty_flags.h
new file mode 100644
index 0000000..b8354cf
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/types.h b/x86_64-linux-musl/include/linux/types.h
new file mode 100644
index 0000000..9145e66
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/udf_fs_i.h b/x86_64-linux-musl/include/linux/udf_fs_i.h
new file mode 100644
index 0000000..e175034
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/udmabuf.h b/x86_64-linux-musl/include/linux/udmabuf.h
new file mode 100644
index 0000000..70cf49f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/udp.h b/x86_64-linux-musl/include/linux/udp.h
new file mode 100644
index 0000000..802c686
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/uhid.h b/x86_64-linux-musl/include/linux/uhid.h
new file mode 100644
index 0000000..228ee50
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/uinput.h b/x86_64-linux-musl/include/linux/uinput.h
new file mode 100644
index 0000000..806f962
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/uio.h b/x86_64-linux-musl/include/linux/uio.h
new file mode 100644
index 0000000..fa955cd
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/uleds.h b/x86_64-linux-musl/include/linux/uleds.h
new file mode 100644
index 0000000..5605b78
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/ultrasound.h b/x86_64-linux-musl/include/linux/ultrasound.h
new file mode 100644
index 0000000..1111891
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/um_timetravel.h b/x86_64-linux-musl/include/linux/um_timetravel.h
new file mode 100644
index 0000000..220324f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/un.h b/x86_64-linux-musl/include/linux/un.h
new file mode 100644
index 0000000..fefbf5b
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/unistd.h b/x86_64-linux-musl/include/linux/unistd.h
new file mode 100644
index 0000000..0ed4a0f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/unix_diag.h b/x86_64-linux-musl/include/linux/unix_diag.h
new file mode 100644
index 0000000..4bcc47a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/usb/audio.h b/x86_64-linux-musl/include/linux/usb/audio.h
new file mode 100644
index 0000000..7d36157
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/usb/cdc-wdm.h b/x86_64-linux-musl/include/linux/usb/cdc-wdm.h
new file mode 100644
index 0000000..5a86268
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/usb/cdc.h b/x86_64-linux-musl/include/linux/usb/cdc.h
new file mode 100644
index 0000000..59c9488
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/usb/ch11.h b/x86_64-linux-musl/include/linux/usb/ch11.h
new file mode 100644
index 0000000..55387fe
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/usb/ch9.h b/x86_64-linux-musl/include/linux/usb/ch9.h
new file mode 100644
index 0000000..f1dade9
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/usb/charger.h b/x86_64-linux-musl/include/linux/usb/charger.h
new file mode 100644
index 0000000..e53f7d6
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/usb/f_accessory.h b/x86_64-linux-musl/include/linux/usb/f_accessory.h
new file mode 100644
index 0000000..d4c5efe
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/usb/functionfs.h b/x86_64-linux-musl/include/linux/usb/functionfs.h
new file mode 100644
index 0000000..7a5d1a2
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/usb/g_printer.h b/x86_64-linux-musl/include/linux/usb/g_printer.h
new file mode 100644
index 0000000..71200ed
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/usb/g_uvc.h b/x86_64-linux-musl/include/linux/usb/g_uvc.h
new file mode 100644
index 0000000..0aeba3d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/usb/gadgetfs.h b/x86_64-linux-musl/include/linux/usb/gadgetfs.h
new file mode 100644
index 0000000..7f45889
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/usb/midi.h b/x86_64-linux-musl/include/linux/usb/midi.h
new file mode 100644
index 0000000..0431e65
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/usb/raw_gadget.h b/x86_64-linux-musl/include/linux/usb/raw_gadget.h
new file mode 100644
index 0000000..70d5a26
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/usb/tmc.h b/x86_64-linux-musl/include/linux/usb/tmc.h
new file mode 100644
index 0000000..6d0add1
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/usb/video.h b/x86_64-linux-musl/include/linux/usb/video.h
new file mode 100644
index 0000000..b45bada
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/usbdevice_fs.h b/x86_64-linux-musl/include/linux/usbdevice_fs.h
new file mode 100644
index 0000000..7936ad9
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/usbip.h b/x86_64-linux-musl/include/linux/usbip.h
new file mode 100644
index 0000000..ae18347
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/userfaultfd.h b/x86_64-linux-musl/include/linux/userfaultfd.h
new file mode 100644
index 0000000..ca7b7a5
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/userio.h b/x86_64-linux-musl/include/linux/userio.h
new file mode 100644
index 0000000..c1040f8
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/utime.h b/x86_64-linux-musl/include/linux/utime.h
new file mode 100644
index 0000000..8ed98b9
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/utsname.h b/x86_64-linux-musl/include/linux/utsname.h
new file mode 100644
index 0000000..f4356d3
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/uuid.h b/x86_64-linux-musl/include/linux/uuid.h
new file mode 100644
index 0000000..d0f82c1
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/uvcvideo.h b/x86_64-linux-musl/include/linux/uvcvideo.h
new file mode 100644
index 0000000..719147a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/v4l2-common.h b/x86_64-linux-musl/include/linux/v4l2-common.h
new file mode 100644
index 0000000..021be85
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/v4l2-controls.h b/x86_64-linux-musl/include/linux/v4l2-controls.h
new file mode 100644
index 0000000..5233c85
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/v4l2-dv-timings.h b/x86_64-linux-musl/include/linux/v4l2-dv-timings.h
new file mode 100644
index 0000000..29596d1
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/v4l2-mediabus.h b/x86_64-linux-musl/include/linux/v4l2-mediabus.h
new file mode 100644
index 0000000..157c0ac
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/v4l2-subdev.h b/x86_64-linux-musl/include/linux/v4l2-subdev.h
new file mode 100644
index 0000000..2954dc3
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/vbox_err.h b/x86_64-linux-musl/include/linux/vbox_err.h
new file mode 100644
index 0000000..dec3574
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/vbox_vmmdev_types.h b/x86_64-linux-musl/include/linux/vbox_vmmdev_types.h
new file mode 100644
index 0000000..009f9a6
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/vboxguest.h b/x86_64-linux-musl/include/linux/vboxguest.h
new file mode 100644
index 0000000..342c020
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/vdpa.h b/x86_64-linux-musl/include/linux/vdpa.h
new file mode 100644
index 0000000..767ce12
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/vduse.h b/x86_64-linux-musl/include/linux/vduse.h
new file mode 100644
index 0000000..2dc8c82
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/version.h b/x86_64-linux-musl/include/linux/version.h
new file mode 100644
index 0000000..bd323a8
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/veth.h b/x86_64-linux-musl/include/linux/veth.h
new file mode 100644
index 0000000..7f79830
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/vfio.h b/x86_64-linux-musl/include/linux/vfio.h
new file mode 100644
index 0000000..e0f322b
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/vfio_ccw.h b/x86_64-linux-musl/include/linux/vfio_ccw.h
new file mode 100644
index 0000000..a6defc5
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/vfio_zdev.h b/x86_64-linux-musl/include/linux/vfio_zdev.h
new file mode 100644
index 0000000..c678e9a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/vhost.h b/x86_64-linux-musl/include/linux/vhost.h
new file mode 100644
index 0000000..53b01c4
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/vhost_types.h b/x86_64-linux-musl/include/linux/vhost_types.h
new file mode 100644
index 0000000..6b4cc77
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/videodev2.h b/x86_64-linux-musl/include/linux/videodev2.h
new file mode 100644
index 0000000..5ca1d91
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_9p.h b/x86_64-linux-musl/include/linux/virtio_9p.h
new file mode 100644
index 0000000..1d9dfb1
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_balloon.h b/x86_64-linux-musl/include/linux/virtio_balloon.h
new file mode 100644
index 0000000..d145caa
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_blk.h b/x86_64-linux-musl/include/linux/virtio_blk.h
new file mode 100644
index 0000000..f2f0381
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_bt.h b/x86_64-linux-musl/include/linux/virtio_bt.h
new file mode 100644
index 0000000..7e29eaa
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_config.h b/x86_64-linux-musl/include/linux/virtio_config.h
new file mode 100644
index 0000000..6198fd1
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_console.h b/x86_64-linux-musl/include/linux/virtio_console.h
new file mode 100644
index 0000000..6eb4d2a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_crypto.h b/x86_64-linux-musl/include/linux/virtio_crypto.h
new file mode 100644
index 0000000..2ce760f
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_fs.h b/x86_64-linux-musl/include/linux/virtio_fs.h
new file mode 100644
index 0000000..62c57cf
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_gpio.h b/x86_64-linux-musl/include/linux/virtio_gpio.h
new file mode 100644
index 0000000..543fe76
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_gpu.h b/x86_64-linux-musl/include/linux/virtio_gpu.h
new file mode 100644
index 0000000..8a21afd
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_i2c.h b/x86_64-linux-musl/include/linux/virtio_i2c.h
new file mode 100644
index 0000000..9540f26
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_ids.h b/x86_64-linux-musl/include/linux/virtio_ids.h
new file mode 100644
index 0000000..2894700
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_input.h b/x86_64-linux-musl/include/linux/virtio_input.h
new file mode 100644
index 0000000..188b0bb
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_iommu.h b/x86_64-linux-musl/include/linux/virtio_iommu.h
new file mode 100644
index 0000000..b08de57
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_mem.h b/x86_64-linux-musl/include/linux/virtio_mem.h
new file mode 100644
index 0000000..66ffce1
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_mmio.h b/x86_64-linux-musl/include/linux/virtio_mmio.h
new file mode 100644
index 0000000..a420fdc
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_net.h b/x86_64-linux-musl/include/linux/virtio_net.h
new file mode 100644
index 0000000..2d92904
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_pci.h b/x86_64-linux-musl/include/linux/virtio_pci.h
new file mode 100644
index 0000000..e6d2731
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_pcidev.h b/x86_64-linux-musl/include/linux/virtio_pcidev.h
new file mode 100644
index 0000000..01c5869
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_pmem.h b/x86_64-linux-musl/include/linux/virtio_pmem.h
new file mode 100644
index 0000000..838f9d6
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_ring.h b/x86_64-linux-musl/include/linux/virtio_ring.h
new file mode 100644
index 0000000..24cf671
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_rng.h b/x86_64-linux-musl/include/linux/virtio_rng.h
new file mode 100644
index 0000000..b6471fd
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_scmi.h b/x86_64-linux-musl/include/linux/virtio_scmi.h
new file mode 100644
index 0000000..7907ed4
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_scsi.h b/x86_64-linux-musl/include/linux/virtio_scsi.h
new file mode 100644
index 0000000..74e6ac8
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_snd.h b/x86_64-linux-musl/include/linux/virtio_snd.h
new file mode 100644
index 0000000..60dfa62
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_types.h b/x86_64-linux-musl/include/linux/virtio_types.h
new file mode 100644
index 0000000..b04e6e6
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/virtio_vsock.h b/x86_64-linux-musl/include/linux/virtio_vsock.h
new file mode 100644
index 0000000..73b5d49
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/vm_sockets.h b/x86_64-linux-musl/include/linux/vm_sockets.h
new file mode 100644
index 0000000..58f720d
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/vm_sockets_diag.h b/x86_64-linux-musl/include/linux/vm_sockets_diag.h
new file mode 100644
index 0000000..2f9840b
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/vmcore.h b/x86_64-linux-musl/include/linux/vmcore.h
new file mode 100644
index 0000000..3fa7fee
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/vsockmon.h b/x86_64-linux-musl/include/linux/vsockmon.h
new file mode 100644
index 0000000..6435b5a
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/vt.h b/x86_64-linux-musl/include/linux/vt.h
new file mode 100644
index 0000000..1a708cc
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/vtpm_proxy.h b/x86_64-linux-musl/include/linux/vtpm_proxy.h
new file mode 100644
index 0000000..0ab0536
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/wait.h b/x86_64-linux-musl/include/linux/wait.h
new file mode 100644
index 0000000..385e882
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/watch_queue.h b/x86_64-linux-musl/include/linux/watch_queue.h
new file mode 100644
index 0000000..4c4fd01
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/watchdog.h b/x86_64-linux-musl/include/linux/watchdog.h
new file mode 100644
index 0000000..cac0816
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/wireguard.h b/x86_64-linux-musl/include/linux/wireguard.h
new file mode 100644
index 0000000..6a4128b
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/wireless.h b/x86_64-linux-musl/include/linux/wireless.h
new file mode 100644
index 0000000..ca31dd2
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/wmi.h b/x86_64-linux-musl/include/linux/wmi.h
new file mode 100644
index 0000000..26f54d9
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/wwan.h b/x86_64-linux-musl/include/linux/wwan.h
new file mode 100644
index 0000000..9f68713
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/x25.h b/x86_64-linux-musl/include/linux/x25.h
new file mode 100644
index 0000000..6655bf9
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/xattr.h b/x86_64-linux-musl/include/linux/xattr.h
new file mode 100644
index 0000000..fd02159
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/xdp_diag.h b/x86_64-linux-musl/include/linux/xdp_diag.h
new file mode 100644
index 0000000..1fe9d49
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/xfrm.h b/x86_64-linux-musl/include/linux/xfrm.h
new file mode 100644
index 0000000..e40b7e3
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/xilinx-v4l2-controls.h b/x86_64-linux-musl/include/linux/xilinx-v4l2-controls.h
new file mode 100644
index 0000000..75c3628
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/zorro.h b/x86_64-linux-musl/include/linux/zorro.h
new file mode 100644
index 0000000..f8e47a1
--- /dev/null
+++ b/x86_64-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/x86_64-linux-musl/include/linux/zorro_ids.h b/x86_64-linux-musl/include/linux/zorro_ids.h
new file mode 100644
index 0000000..99687a3
--- /dev/null
+++ b/x86_64-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)
diff --git a/x86_64-linux-musl/include/locale.h b/x86_64-linux-musl/include/locale.h
new file mode 100644
index 0000000..11106fe
--- /dev/null
+++ b/x86_64-linux-musl/include/locale.h
@@ -0,0 +1,88 @@
+#ifndef	_LOCALE_H
+#define	_LOCALE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#if __cplusplus >= 201103L
+#define NULL nullptr
+#elif defined(__cplusplus)
+#define NULL 0L
+#else
+#define NULL ((void*)0)
+#endif
+
+#define LC_CTYPE    0
+#define LC_NUMERIC  1
+#define LC_TIME     2
+#define LC_COLLATE  3
+#define LC_MONETARY 4
+#define LC_MESSAGES 5
+#define LC_ALL      6
+
+struct lconv {
+	char *decimal_point;
+	char *thousands_sep;
+	char *grouping;
+
+	char *int_curr_symbol;
+	char *currency_symbol;
+	char *mon_decimal_point;
+	char *mon_thousands_sep;
+	char *mon_grouping;
+	char *positive_sign;
+	char *negative_sign;
+	char int_frac_digits;
+	char frac_digits;
+	char p_cs_precedes;
+	char p_sep_by_space;
+	char n_cs_precedes;
+	char n_sep_by_space;
+	char p_sign_posn;
+	char n_sign_posn;
+	char int_p_cs_precedes;
+	char int_p_sep_by_space;
+	char int_n_cs_precedes;
+	char int_n_sep_by_space;
+	char int_p_sign_posn;
+	char int_n_sign_posn;
+};
+
+
+char *setlocale (int, const char *);
+struct lconv *localeconv(void);
+
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+
+#define __NEED_locale_t
+
+#include <bits/alltypes.h>
+
+#define LC_GLOBAL_LOCALE ((locale_t)-1)
+
+#define LC_CTYPE_MASK    (1<<LC_CTYPE)
+#define LC_NUMERIC_MASK  (1<<LC_NUMERIC)
+#define LC_TIME_MASK     (1<<LC_TIME)
+#define LC_COLLATE_MASK  (1<<LC_COLLATE)
+#define LC_MONETARY_MASK (1<<LC_MONETARY)
+#define LC_MESSAGES_MASK (1<<LC_MESSAGES)
+#define LC_ALL_MASK      0x7fffffff
+
+locale_t duplocale(locale_t);
+void freelocale(locale_t);
+locale_t newlocale(int, const char *, locale_t);
+locale_t uselocale(locale_t);
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/malloc.h b/x86_64-linux-musl/include/malloc.h
new file mode 100644
index 0000000..98ba010
--- /dev/null
+++ b/x86_64-linux-musl/include/malloc.h
@@ -0,0 +1,55 @@
+#ifndef _MALLOC_H
+#define _MALLOC_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __NEED_size_t
+
+#include <bits/alltypes.h>
+
+void *malloc (size_t);
+void *calloc (size_t, size_t);
+void *realloc (void *, size_t);
+void free (void *);
+void *valloc (size_t);
+void *memalign(size_t, size_t);
+
+size_t malloc_usable_size(void *);
+
+struct mallinfo {
+  int arena;
+  int ordblks;
+  int smblks;
+  int hblks;
+  int hblkhd;
+  int usmblks;
+  int fsmblks;
+  int uordblks;
+  int fordblks;
+  int keepcost;
+};
+
+struct mallinfo mallinfo(void);
+
+struct mallinfo2 {
+  size_t arena;
+  size_t ordblks;
+  size_t smblks;
+  size_t hblks;
+  size_t hblkhd;
+  size_t usmblks;
+  size_t fsmblks;
+  size_t uordblks;
+  size_t fordblks;
+  size_t keepcost;
+};
+
+struct mallinfo2 mallinfo2(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/math.h b/x86_64-linux-musl/include/math.h
new file mode 100644
index 0000000..14f28ec
--- /dev/null
+++ b/x86_64-linux-musl/include/math.h
@@ -0,0 +1,442 @@
+#ifndef _MATH_H
+#define _MATH_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_float_t
+#define __NEED_double_t
+#include <bits/alltypes.h>
+
+#if 100*__GNUC__+__GNUC_MINOR__ >= 303
+#define NAN       __builtin_nanf("")
+#define INFINITY  __builtin_inff()
+#else
+#define NAN       (0.0f/0.0f)
+#define INFINITY  1e5000f
+#endif
+
+#define HUGE_VALF INFINITY
+#define HUGE_VAL  ((double)INFINITY)
+#define HUGE_VALL ((long double)INFINITY)
+
+#define MATH_ERRNO  1
+#define MATH_ERREXCEPT 2
+#define math_errhandling 2
+
+#define FP_ILOGBNAN (-1-0x7fffffff)
+#define FP_ILOGB0 FP_ILOGBNAN
+
+#define FP_NAN       0
+#define FP_INFINITE  1
+#define FP_ZERO      2
+#define FP_SUBNORMAL 3
+#define FP_NORMAL    4
+
+#ifdef __FP_FAST_FMA
+#define FP_FAST_FMA 1
+#endif
+
+#ifdef __FP_FAST_FMAF
+#define FP_FAST_FMAF 1
+#endif
+
+#ifdef __FP_FAST_FMAL
+#define FP_FAST_FMAL 1
+#endif
+
+int __fpclassify(double);
+int __fpclassifyf(float);
+int __fpclassifyl(long double);
+
+static __inline unsigned __FLOAT_BITS(float __f)
+{
+	union {float __f; unsigned __i;} __u;
+	__u.__f = __f;
+	return __u.__i;
+}
+static __inline unsigned long long __DOUBLE_BITS(double __f)
+{
+	union {double __f; unsigned long long __i;} __u;
+	__u.__f = __f;
+	return __u.__i;
+}
+
+#define fpclassify(x) ( \
+	sizeof(x) == sizeof(float) ? __fpclassifyf(x) : \
+	sizeof(x) == sizeof(double) ? __fpclassify(x) : \
+	__fpclassifyl(x) )
+
+#define isinf(x) ( \
+	sizeof(x) == sizeof(float) ? (__FLOAT_BITS(x) & 0x7fffffff) == 0x7f800000 : \
+	sizeof(x) == sizeof(double) ? (__DOUBLE_BITS(x) & -1ULL>>1) == 0x7ffULL<<52 : \
+	__fpclassifyl(x) == FP_INFINITE)
+
+#define isnan(x) ( \
+	sizeof(x) == sizeof(float) ? (__FLOAT_BITS(x) & 0x7fffffff) > 0x7f800000 : \
+	sizeof(x) == sizeof(double) ? (__DOUBLE_BITS(x) & -1ULL>>1) > 0x7ffULL<<52 : \
+	__fpclassifyl(x) == FP_NAN)
+
+#define isnormal(x) ( \
+	sizeof(x) == sizeof(float) ? ((__FLOAT_BITS(x)+0x00800000) & 0x7fffffff) >= 0x01000000 : \
+	sizeof(x) == sizeof(double) ? ((__DOUBLE_BITS(x)+(1ULL<<52)) & -1ULL>>1) >= 1ULL<<53 : \
+	__fpclassifyl(x) == FP_NORMAL)
+
+#define isfinite(x) ( \
+	sizeof(x) == sizeof(float) ? (__FLOAT_BITS(x) & 0x7fffffff) < 0x7f800000 : \
+	sizeof(x) == sizeof(double) ? (__DOUBLE_BITS(x) & -1ULL>>1) < 0x7ffULL<<52 : \
+	__fpclassifyl(x) > FP_INFINITE)
+
+int __signbit(double);
+int __signbitf(float);
+int __signbitl(long double);
+
+#define signbit(x) ( \
+	sizeof(x) == sizeof(float) ? (int)(__FLOAT_BITS(x)>>31) : \
+	sizeof(x) == sizeof(double) ? (int)(__DOUBLE_BITS(x)>>63) : \
+	__signbitl(x) )
+
+#define isunordered(x,y) (isnan((x)) ? ((void)(y),1) : isnan((y)))
+
+#define __ISREL_DEF(rel, op, type) \
+static __inline int __is##rel(type __x, type __y) \
+{ return !isunordered(__x,__y) && __x op __y; }
+
+__ISREL_DEF(lessf, <, float_t)
+__ISREL_DEF(less, <, double_t)
+__ISREL_DEF(lessl, <, long double)
+__ISREL_DEF(lessequalf, <=, float_t)
+__ISREL_DEF(lessequal, <=, double_t)
+__ISREL_DEF(lessequall, <=, long double)
+__ISREL_DEF(lessgreaterf, !=, float_t)
+__ISREL_DEF(lessgreater, !=, double_t)
+__ISREL_DEF(lessgreaterl, !=, long double)
+__ISREL_DEF(greaterf, >, float_t)
+__ISREL_DEF(greater, >, double_t)
+__ISREL_DEF(greaterl, >, long double)
+__ISREL_DEF(greaterequalf, >=, float_t)
+__ISREL_DEF(greaterequal, >=, double_t)
+__ISREL_DEF(greaterequall, >=, long double)
+
+#define __tg_pred_2(x, y, p) ( \
+	sizeof((x)+(y)) == sizeof(float) ? p##f(x, y) : \
+	sizeof((x)+(y)) == sizeof(double) ? p(x, y) : \
+	p##l(x, y) )
+
+#define isless(x, y)            __tg_pred_2(x, y, __isless)
+#define islessequal(x, y)       __tg_pred_2(x, y, __islessequal)
+#define islessgreater(x, y)     __tg_pred_2(x, y, __islessgreater)
+#define isgreater(x, y)         __tg_pred_2(x, y, __isgreater)
+#define isgreaterequal(x, y)    __tg_pred_2(x, y, __isgreaterequal)
+
+double      acos(double);
+float       acosf(float);
+long double acosl(long double);
+
+double      acosh(double);
+float       acoshf(float);
+long double acoshl(long double);
+
+double      asin(double);
+float       asinf(float);
+long double asinl(long double);
+
+double      asinh(double);
+float       asinhf(float);
+long double asinhl(long double);
+
+double      atan(double);
+float       atanf(float);
+long double atanl(long double);
+
+double      atan2(double, double);
+float       atan2f(float, float);
+long double atan2l(long double, long double);
+
+double      atanh(double);
+float       atanhf(float);
+long double atanhl(long double);
+
+double      cbrt(double);
+float       cbrtf(float);
+long double cbrtl(long double);
+
+double      ceil(double);
+float       ceilf(float);
+long double ceill(long double);
+
+double      copysign(double, double);
+float       copysignf(float, float);
+long double copysignl(long double, long double);
+
+double      cos(double);
+float       cosf(float);
+long double cosl(long double);
+
+double      cosh(double);
+float       coshf(float);
+long double coshl(long double);
+
+double      erf(double);
+float       erff(float);
+long double erfl(long double);
+
+double      erfc(double);
+float       erfcf(float);
+long double erfcl(long double);
+
+double      exp(double);
+float       expf(float);
+long double expl(long double);
+
+double      exp2(double);
+float       exp2f(float);
+long double exp2l(long double);
+
+double      expm1(double);
+float       expm1f(float);
+long double expm1l(long double);
+
+double      fabs(double);
+float       fabsf(float);
+long double fabsl(long double);
+
+double      fdim(double, double);
+float       fdimf(float, float);
+long double fdiml(long double, long double);
+
+double      floor(double);
+float       floorf(float);
+long double floorl(long double);
+
+double      fma(double, double, double);
+float       fmaf(float, float, float);
+long double fmal(long double, long double, long double);
+
+double      fmax(double, double);
+float       fmaxf(float, float);
+long double fmaxl(long double, long double);
+
+double      fmin(double, double);
+float       fminf(float, float);
+long double fminl(long double, long double);
+
+double      fmod(double, double);
+float       fmodf(float, float);
+long double fmodl(long double, long double);
+
+double      frexp(double, int *);
+float       frexpf(float, int *);
+long double frexpl(long double, int *);
+
+double      hypot(double, double);
+float       hypotf(float, float);
+long double hypotl(long double, long double);
+
+int         ilogb(double);
+int         ilogbf(float);
+int         ilogbl(long double);
+
+double      ldexp(double, int);
+float       ldexpf(float, int);
+long double ldexpl(long double, int);
+
+double      lgamma(double);
+float       lgammaf(float);
+long double lgammal(long double);
+
+long long   llrint(double);
+long long   llrintf(float);
+long long   llrintl(long double);
+
+long long   llround(double);
+long long   llroundf(float);
+long long   llroundl(long double);
+
+double      log(double);
+float       logf(float);
+long double logl(long double);
+
+double      log10(double);
+float       log10f(float);
+long double log10l(long double);
+
+double      log1p(double);
+float       log1pf(float);
+long double log1pl(long double);
+
+double      log2(double);
+float       log2f(float);
+long double log2l(long double);
+
+double      logb(double);
+float       logbf(float);
+long double logbl(long double);
+
+long        lrint(double);
+long        lrintf(float);
+long        lrintl(long double);
+
+long        lround(double);
+long        lroundf(float);
+long        lroundl(long double);
+
+double      modf(double, double *);
+float       modff(float, float *);
+long double modfl(long double, long double *);
+
+double      nan(const char *);
+float       nanf(const char *);
+long double nanl(const char *);
+
+double      nearbyint(double);
+float       nearbyintf(float);
+long double nearbyintl(long double);
+
+double      nextafter(double, double);
+float       nextafterf(float, float);
+long double nextafterl(long double, long double);
+
+double      nexttoward(double, long double);
+float       nexttowardf(float, long double);
+long double nexttowardl(long double, long double);
+
+double      pow(double, double);
+float       powf(float, float);
+long double powl(long double, long double);
+
+double      remainder(double, double);
+float       remainderf(float, float);
+long double remainderl(long double, long double);
+
+double      remquo(double, double, int *);
+float       remquof(float, float, int *);
+long double remquol(long double, long double, int *);
+
+double      rint(double);
+float       rintf(float);
+long double rintl(long double);
+
+double      round(double);
+float       roundf(float);
+long double roundl(long double);
+
+double      scalbln(double, long);
+float       scalblnf(float, long);
+long double scalblnl(long double, long);
+
+double      scalbn(double, int);
+float       scalbnf(float, int);
+long double scalbnl(long double, int);
+
+double      sin(double);
+float       sinf(float);
+long double sinl(long double);
+
+double      sinh(double);
+float       sinhf(float);
+long double sinhl(long double);
+
+double      sqrt(double);
+float       sqrtf(float);
+long double sqrtl(long double);
+
+double      tan(double);
+float       tanf(float);
+long double tanl(long double);
+
+double      tanh(double);
+float       tanhf(float);
+long double tanhl(long double);
+
+double      tgamma(double);
+float       tgammaf(float);
+long double tgammal(long double);
+
+double      trunc(double);
+float       truncf(float);
+long double truncl(long double);
+
+
+#if defined(_XOPEN_SOURCE) || defined(_BSD_SOURCE)
+#undef  MAXFLOAT
+#define MAXFLOAT        3.40282346638528859812e+38F
+#endif
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define M_E             2.7182818284590452354   /* e */
+#define M_LOG2E         1.4426950408889634074   /* log_2 e */
+#define M_LOG10E        0.43429448190325182765  /* log_10 e */
+#define M_LN2           0.69314718055994530942  /* log_e 2 */
+#define M_LN10          2.30258509299404568402  /* log_e 10 */
+#define M_PI            3.14159265358979323846  /* pi */
+#define M_PI_2          1.57079632679489661923  /* pi/2 */
+#define M_PI_4          0.78539816339744830962  /* pi/4 */
+#define M_1_PI          0.31830988618379067154  /* 1/pi */
+#define M_2_PI          0.63661977236758134308  /* 2/pi */
+#define M_2_SQRTPI      1.12837916709551257390  /* 2/sqrt(pi) */
+#define M_SQRT2         1.41421356237309504880  /* sqrt(2) */
+#define M_SQRT1_2       0.70710678118654752440  /* 1/sqrt(2) */
+
+extern int signgam;
+
+double      j0(double);
+double      j1(double);
+double      jn(int, double);
+
+double      y0(double);
+double      y1(double);
+double      yn(int, double);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define HUGE            3.40282346638528859812e+38F
+
+double      drem(double, double);
+float       dremf(float, float);
+
+int         finite(double);
+int         finitef(float);
+
+double      scalb(double, double);
+float       scalbf(float, float);
+
+double      significand(double);
+float       significandf(float);
+
+double      lgamma_r(double, int*);
+float       lgammaf_r(float, int*);
+
+float       j0f(float);
+float       j1f(float);
+float       jnf(int, float);
+
+float       y0f(float);
+float       y1f(float);
+float       ynf(int, float);
+#endif
+
+#ifdef _GNU_SOURCE
+long double lgammal_r(long double, int*);
+
+void        sincos(double, double*, double*);
+void        sincosf(float, float*, float*);
+void        sincosl(long double, long double*, long double*);
+
+double      exp10(double);
+float       exp10f(float);
+long double exp10l(long double);
+
+double      pow10(double);
+float       pow10f(float);
+long double pow10l(long double);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/memory.h b/x86_64-linux-musl/include/memory.h
new file mode 100644
index 0000000..3b2f590
--- /dev/null
+++ b/x86_64-linux-musl/include/memory.h
@@ -0,0 +1 @@
+#include <string.h>
diff --git a/x86_64-linux-musl/include/misc/cxl.h b/x86_64-linux-musl/include/misc/cxl.h
new file mode 100644
index 0000000..64b5992
--- /dev/null
+++ b/x86_64-linux-musl/include/misc/cxl.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_MISC_CXL_H
+#define _UAPI_MISC_CXL_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+struct cxl_ioctl_start_work {
+  __u64 flags;
+  __u64 work_element_descriptor;
+  __u64 amr;
+  __s16 num_interrupts;
+  __u16 tid;
+  __s32 reserved1;
+  __u64 reserved2;
+  __u64 reserved3;
+  __u64 reserved4;
+  __u64 reserved5;
+};
+#define CXL_START_WORK_AMR 0x0000000000000001ULL
+#define CXL_START_WORK_NUM_IRQS 0x0000000000000002ULL
+#define CXL_START_WORK_ERR_FF 0x0000000000000004ULL
+#define CXL_START_WORK_TID 0x0000000000000008ULL
+#define CXL_START_WORK_ALL (CXL_START_WORK_AMR | CXL_START_WORK_NUM_IRQS | CXL_START_WORK_ERR_FF | CXL_START_WORK_TID)
+#define CXL_MODE_DEDICATED 0x1
+#define CXL_MODE_DIRECTED 0x2
+#define CXL_AFUID_FLAG_SLAVE 0x1
+struct cxl_afu_id {
+  __u64 flags;
+  __u32 card_id;
+  __u32 afu_offset;
+  __u32 afu_mode;
+  __u32 reserved1;
+  __u64 reserved2;
+  __u64 reserved3;
+  __u64 reserved4;
+  __u64 reserved5;
+  __u64 reserved6;
+};
+#define CXL_AI_NEED_HEADER 0x0000000000000001ULL
+#define CXL_AI_ALL CXL_AI_NEED_HEADER
+#define CXL_AI_HEADER_SIZE 128
+#define CXL_AI_BUFFER_SIZE 4096
+#define CXL_AI_MAX_ENTRIES 256
+#define CXL_AI_MAX_CHUNK_SIZE (CXL_AI_BUFFER_SIZE * CXL_AI_MAX_ENTRIES)
+struct cxl_adapter_image {
+  __u64 flags;
+  __u64 data;
+  __u64 len_data;
+  __u64 len_image;
+  __u64 reserved1;
+  __u64 reserved2;
+  __u64 reserved3;
+  __u64 reserved4;
+};
+#define CXL_MAGIC 0xCA
+#define CXL_IOCTL_START_WORK _IOW(CXL_MAGIC, 0x00, struct cxl_ioctl_start_work)
+#define CXL_IOCTL_GET_PROCESS_ELEMENT _IOR(CXL_MAGIC, 0x01, __u32)
+#define CXL_IOCTL_GET_AFU_ID _IOR(CXL_MAGIC, 0x02, struct cxl_afu_id)
+#define CXL_IOCTL_DOWNLOAD_IMAGE _IOW(CXL_MAGIC, 0x0A, struct cxl_adapter_image)
+#define CXL_IOCTL_VALIDATE_IMAGE _IOW(CXL_MAGIC, 0x0B, struct cxl_adapter_image)
+#define CXL_READ_MIN_SIZE 0x1000
+enum cxl_event_type {
+  CXL_EVENT_RESERVED = 0,
+  CXL_EVENT_AFU_INTERRUPT = 1,
+  CXL_EVENT_DATA_STORAGE = 2,
+  CXL_EVENT_AFU_ERROR = 3,
+  CXL_EVENT_AFU_DRIVER = 4,
+};
+struct cxl_event_header {
+  __u16 type;
+  __u16 size;
+  __u16 process_element;
+  __u16 reserved1;
+};
+struct cxl_event_afu_interrupt {
+  __u16 flags;
+  __u16 irq;
+  __u32 reserved1;
+};
+struct cxl_event_data_storage {
+  __u16 flags;
+  __u16 reserved1;
+  __u32 reserved2;
+  __u64 addr;
+  __u64 dsisr;
+  __u64 reserved3;
+};
+struct cxl_event_afu_error {
+  __u16 flags;
+  __u16 reserved1;
+  __u32 reserved2;
+  __u64 error;
+};
+struct cxl_event_afu_driver_reserved {
+  __u32 data_size;
+  __u8 data[];
+};
+struct cxl_event {
+  struct cxl_event_header header;
+  union {
+    struct cxl_event_afu_interrupt irq;
+    struct cxl_event_data_storage fault;
+    struct cxl_event_afu_error afu_error;
+    struct cxl_event_afu_driver_reserved afu_driver_event;
+  };
+};
+#endif
diff --git a/x86_64-linux-musl/include/misc/fastrpc.h b/x86_64-linux-musl/include/misc/fastrpc.h
new file mode 100644
index 0000000..62955ec
--- /dev/null
+++ b/x86_64-linux-musl/include/misc/fastrpc.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 __QCOM_FASTRPC_H__
+#define __QCOM_FASTRPC_H__
+#include <linux/types.h>
+#define FASTRPC_IOCTL_ALLOC_DMA_BUFF _IOWR('R', 1, struct fastrpc_alloc_dma_buf)
+#define FASTRPC_IOCTL_FREE_DMA_BUFF _IOWR('R', 2, __u32)
+#define FASTRPC_IOCTL_INVOKE _IOWR('R', 3, struct fastrpc_invoke)
+#define FASTRPC_IOCTL_INIT_ATTACH _IO('R', 4)
+#define FASTRPC_IOCTL_INIT_CREATE _IOWR('R', 5, struct fastrpc_init_create)
+#define FASTRPC_IOCTL_MMAP _IOWR('R', 6, struct fastrpc_req_mmap)
+#define FASTRPC_IOCTL_MUNMAP _IOWR('R', 7, struct fastrpc_req_munmap)
+#define FASTRPC_IOCTL_INIT_ATTACH_SNS _IO('R', 8)
+struct fastrpc_invoke_args {
+  __u64 ptr;
+  __u64 length;
+  __s32 fd;
+  __u32 reserved;
+};
+struct fastrpc_invoke {
+  __u32 handle;
+  __u32 sc;
+  __u64 args;
+};
+struct fastrpc_init_create {
+  __u32 filelen;
+  __s32 filefd;
+  __u32 attrs;
+  __u32 siglen;
+  __u64 file;
+};
+struct fastrpc_alloc_dma_buf {
+  __s32 fd;
+  __u32 flags;
+  __u64 size;
+};
+struct fastrpc_req_mmap {
+  __s32 fd;
+  __u32 flags;
+  __u64 vaddrin;
+  __u64 size;
+  __u64 vaddrout;
+};
+struct fastrpc_req_munmap {
+  __u64 vaddrout;
+  __u64 size;
+};
+#endif
diff --git a/x86_64-linux-musl/include/misc/habanalabs.h b/x86_64-linux-musl/include/misc/habanalabs.h
new file mode 100644
index 0000000..ed2ba7c
--- /dev/null
+++ b/x86_64-linux-musl/include/misc/habanalabs.h
@@ -0,0 +1,631 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef HABANALABS_H_
+#define HABANALABS_H_
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define GOYA_KMD_SRAM_RESERVED_SIZE_FROM_START 0x8000
+#define GAUDI_DRIVER_SRAM_RESERVED_SIZE_FROM_START 0x80
+#define GAUDI_FIRST_AVAILABLE_W_S_SYNC_OBJECT 144
+#define GAUDI_FIRST_AVAILABLE_W_S_MONITOR 72
+enum goya_queue_id {
+  GOYA_QUEUE_ID_DMA_0 = 0,
+  GOYA_QUEUE_ID_DMA_1 = 1,
+  GOYA_QUEUE_ID_DMA_2 = 2,
+  GOYA_QUEUE_ID_DMA_3 = 3,
+  GOYA_QUEUE_ID_DMA_4 = 4,
+  GOYA_QUEUE_ID_CPU_PQ = 5,
+  GOYA_QUEUE_ID_MME = 6,
+  GOYA_QUEUE_ID_TPC0 = 7,
+  GOYA_QUEUE_ID_TPC1 = 8,
+  GOYA_QUEUE_ID_TPC2 = 9,
+  GOYA_QUEUE_ID_TPC3 = 10,
+  GOYA_QUEUE_ID_TPC4 = 11,
+  GOYA_QUEUE_ID_TPC5 = 12,
+  GOYA_QUEUE_ID_TPC6 = 13,
+  GOYA_QUEUE_ID_TPC7 = 14,
+  GOYA_QUEUE_ID_SIZE
+};
+enum gaudi_queue_id {
+  GAUDI_QUEUE_ID_DMA_0_0 = 0,
+  GAUDI_QUEUE_ID_DMA_0_1 = 1,
+  GAUDI_QUEUE_ID_DMA_0_2 = 2,
+  GAUDI_QUEUE_ID_DMA_0_3 = 3,
+  GAUDI_QUEUE_ID_DMA_1_0 = 4,
+  GAUDI_QUEUE_ID_DMA_1_1 = 5,
+  GAUDI_QUEUE_ID_DMA_1_2 = 6,
+  GAUDI_QUEUE_ID_DMA_1_3 = 7,
+  GAUDI_QUEUE_ID_CPU_PQ = 8,
+  GAUDI_QUEUE_ID_DMA_2_0 = 9,
+  GAUDI_QUEUE_ID_DMA_2_1 = 10,
+  GAUDI_QUEUE_ID_DMA_2_2 = 11,
+  GAUDI_QUEUE_ID_DMA_2_3 = 12,
+  GAUDI_QUEUE_ID_DMA_3_0 = 13,
+  GAUDI_QUEUE_ID_DMA_3_1 = 14,
+  GAUDI_QUEUE_ID_DMA_3_2 = 15,
+  GAUDI_QUEUE_ID_DMA_3_3 = 16,
+  GAUDI_QUEUE_ID_DMA_4_0 = 17,
+  GAUDI_QUEUE_ID_DMA_4_1 = 18,
+  GAUDI_QUEUE_ID_DMA_4_2 = 19,
+  GAUDI_QUEUE_ID_DMA_4_3 = 20,
+  GAUDI_QUEUE_ID_DMA_5_0 = 21,
+  GAUDI_QUEUE_ID_DMA_5_1 = 22,
+  GAUDI_QUEUE_ID_DMA_5_2 = 23,
+  GAUDI_QUEUE_ID_DMA_5_3 = 24,
+  GAUDI_QUEUE_ID_DMA_6_0 = 25,
+  GAUDI_QUEUE_ID_DMA_6_1 = 26,
+  GAUDI_QUEUE_ID_DMA_6_2 = 27,
+  GAUDI_QUEUE_ID_DMA_6_3 = 28,
+  GAUDI_QUEUE_ID_DMA_7_0 = 29,
+  GAUDI_QUEUE_ID_DMA_7_1 = 30,
+  GAUDI_QUEUE_ID_DMA_7_2 = 31,
+  GAUDI_QUEUE_ID_DMA_7_3 = 32,
+  GAUDI_QUEUE_ID_MME_0_0 = 33,
+  GAUDI_QUEUE_ID_MME_0_1 = 34,
+  GAUDI_QUEUE_ID_MME_0_2 = 35,
+  GAUDI_QUEUE_ID_MME_0_3 = 36,
+  GAUDI_QUEUE_ID_MME_1_0 = 37,
+  GAUDI_QUEUE_ID_MME_1_1 = 38,
+  GAUDI_QUEUE_ID_MME_1_2 = 39,
+  GAUDI_QUEUE_ID_MME_1_3 = 40,
+  GAUDI_QUEUE_ID_TPC_0_0 = 41,
+  GAUDI_QUEUE_ID_TPC_0_1 = 42,
+  GAUDI_QUEUE_ID_TPC_0_2 = 43,
+  GAUDI_QUEUE_ID_TPC_0_3 = 44,
+  GAUDI_QUEUE_ID_TPC_1_0 = 45,
+  GAUDI_QUEUE_ID_TPC_1_1 = 46,
+  GAUDI_QUEUE_ID_TPC_1_2 = 47,
+  GAUDI_QUEUE_ID_TPC_1_3 = 48,
+  GAUDI_QUEUE_ID_TPC_2_0 = 49,
+  GAUDI_QUEUE_ID_TPC_2_1 = 50,
+  GAUDI_QUEUE_ID_TPC_2_2 = 51,
+  GAUDI_QUEUE_ID_TPC_2_3 = 52,
+  GAUDI_QUEUE_ID_TPC_3_0 = 53,
+  GAUDI_QUEUE_ID_TPC_3_1 = 54,
+  GAUDI_QUEUE_ID_TPC_3_2 = 55,
+  GAUDI_QUEUE_ID_TPC_3_3 = 56,
+  GAUDI_QUEUE_ID_TPC_4_0 = 57,
+  GAUDI_QUEUE_ID_TPC_4_1 = 58,
+  GAUDI_QUEUE_ID_TPC_4_2 = 59,
+  GAUDI_QUEUE_ID_TPC_4_3 = 60,
+  GAUDI_QUEUE_ID_TPC_5_0 = 61,
+  GAUDI_QUEUE_ID_TPC_5_1 = 62,
+  GAUDI_QUEUE_ID_TPC_5_2 = 63,
+  GAUDI_QUEUE_ID_TPC_5_3 = 64,
+  GAUDI_QUEUE_ID_TPC_6_0 = 65,
+  GAUDI_QUEUE_ID_TPC_6_1 = 66,
+  GAUDI_QUEUE_ID_TPC_6_2 = 67,
+  GAUDI_QUEUE_ID_TPC_6_3 = 68,
+  GAUDI_QUEUE_ID_TPC_7_0 = 69,
+  GAUDI_QUEUE_ID_TPC_7_1 = 70,
+  GAUDI_QUEUE_ID_TPC_7_2 = 71,
+  GAUDI_QUEUE_ID_TPC_7_3 = 72,
+  GAUDI_QUEUE_ID_NIC_0_0 = 73,
+  GAUDI_QUEUE_ID_NIC_0_1 = 74,
+  GAUDI_QUEUE_ID_NIC_0_2 = 75,
+  GAUDI_QUEUE_ID_NIC_0_3 = 76,
+  GAUDI_QUEUE_ID_NIC_1_0 = 77,
+  GAUDI_QUEUE_ID_NIC_1_1 = 78,
+  GAUDI_QUEUE_ID_NIC_1_2 = 79,
+  GAUDI_QUEUE_ID_NIC_1_3 = 80,
+  GAUDI_QUEUE_ID_NIC_2_0 = 81,
+  GAUDI_QUEUE_ID_NIC_2_1 = 82,
+  GAUDI_QUEUE_ID_NIC_2_2 = 83,
+  GAUDI_QUEUE_ID_NIC_2_3 = 84,
+  GAUDI_QUEUE_ID_NIC_3_0 = 85,
+  GAUDI_QUEUE_ID_NIC_3_1 = 86,
+  GAUDI_QUEUE_ID_NIC_3_2 = 87,
+  GAUDI_QUEUE_ID_NIC_3_3 = 88,
+  GAUDI_QUEUE_ID_NIC_4_0 = 89,
+  GAUDI_QUEUE_ID_NIC_4_1 = 90,
+  GAUDI_QUEUE_ID_NIC_4_2 = 91,
+  GAUDI_QUEUE_ID_NIC_4_3 = 92,
+  GAUDI_QUEUE_ID_NIC_5_0 = 93,
+  GAUDI_QUEUE_ID_NIC_5_1 = 94,
+  GAUDI_QUEUE_ID_NIC_5_2 = 95,
+  GAUDI_QUEUE_ID_NIC_5_3 = 96,
+  GAUDI_QUEUE_ID_NIC_6_0 = 97,
+  GAUDI_QUEUE_ID_NIC_6_1 = 98,
+  GAUDI_QUEUE_ID_NIC_6_2 = 99,
+  GAUDI_QUEUE_ID_NIC_6_3 = 100,
+  GAUDI_QUEUE_ID_NIC_7_0 = 101,
+  GAUDI_QUEUE_ID_NIC_7_1 = 102,
+  GAUDI_QUEUE_ID_NIC_7_2 = 103,
+  GAUDI_QUEUE_ID_NIC_7_3 = 104,
+  GAUDI_QUEUE_ID_NIC_8_0 = 105,
+  GAUDI_QUEUE_ID_NIC_8_1 = 106,
+  GAUDI_QUEUE_ID_NIC_8_2 = 107,
+  GAUDI_QUEUE_ID_NIC_8_3 = 108,
+  GAUDI_QUEUE_ID_NIC_9_0 = 109,
+  GAUDI_QUEUE_ID_NIC_9_1 = 110,
+  GAUDI_QUEUE_ID_NIC_9_2 = 111,
+  GAUDI_QUEUE_ID_NIC_9_3 = 112,
+  GAUDI_QUEUE_ID_SIZE
+};
+enum goya_engine_id {
+  GOYA_ENGINE_ID_DMA_0 = 0,
+  GOYA_ENGINE_ID_DMA_1,
+  GOYA_ENGINE_ID_DMA_2,
+  GOYA_ENGINE_ID_DMA_3,
+  GOYA_ENGINE_ID_DMA_4,
+  GOYA_ENGINE_ID_MME_0,
+  GOYA_ENGINE_ID_TPC_0,
+  GOYA_ENGINE_ID_TPC_1,
+  GOYA_ENGINE_ID_TPC_2,
+  GOYA_ENGINE_ID_TPC_3,
+  GOYA_ENGINE_ID_TPC_4,
+  GOYA_ENGINE_ID_TPC_5,
+  GOYA_ENGINE_ID_TPC_6,
+  GOYA_ENGINE_ID_TPC_7,
+  GOYA_ENGINE_ID_SIZE
+};
+enum gaudi_engine_id {
+  GAUDI_ENGINE_ID_DMA_0 = 0,
+  GAUDI_ENGINE_ID_DMA_1,
+  GAUDI_ENGINE_ID_DMA_2,
+  GAUDI_ENGINE_ID_DMA_3,
+  GAUDI_ENGINE_ID_DMA_4,
+  GAUDI_ENGINE_ID_DMA_5,
+  GAUDI_ENGINE_ID_DMA_6,
+  GAUDI_ENGINE_ID_DMA_7,
+  GAUDI_ENGINE_ID_MME_0,
+  GAUDI_ENGINE_ID_MME_1,
+  GAUDI_ENGINE_ID_MME_2,
+  GAUDI_ENGINE_ID_MME_3,
+  GAUDI_ENGINE_ID_TPC_0,
+  GAUDI_ENGINE_ID_TPC_1,
+  GAUDI_ENGINE_ID_TPC_2,
+  GAUDI_ENGINE_ID_TPC_3,
+  GAUDI_ENGINE_ID_TPC_4,
+  GAUDI_ENGINE_ID_TPC_5,
+  GAUDI_ENGINE_ID_TPC_6,
+  GAUDI_ENGINE_ID_TPC_7,
+  GAUDI_ENGINE_ID_NIC_0,
+  GAUDI_ENGINE_ID_NIC_1,
+  GAUDI_ENGINE_ID_NIC_2,
+  GAUDI_ENGINE_ID_NIC_3,
+  GAUDI_ENGINE_ID_NIC_4,
+  GAUDI_ENGINE_ID_NIC_5,
+  GAUDI_ENGINE_ID_NIC_6,
+  GAUDI_ENGINE_ID_NIC_7,
+  GAUDI_ENGINE_ID_NIC_8,
+  GAUDI_ENGINE_ID_NIC_9,
+  GAUDI_ENGINE_ID_SIZE
+};
+enum hl_goya_pll_index {
+  HL_GOYA_CPU_PLL = 0,
+  HL_GOYA_IC_PLL,
+  HL_GOYA_MC_PLL,
+  HL_GOYA_MME_PLL,
+  HL_GOYA_PCI_PLL,
+  HL_GOYA_EMMC_PLL,
+  HL_GOYA_TPC_PLL,
+  HL_GOYA_PLL_MAX
+};
+enum hl_gaudi_pll_index {
+  HL_GAUDI_CPU_PLL = 0,
+  HL_GAUDI_PCI_PLL,
+  HL_GAUDI_SRAM_PLL,
+  HL_GAUDI_HBM_PLL,
+  HL_GAUDI_NIC_PLL,
+  HL_GAUDI_DMA_PLL,
+  HL_GAUDI_MESH_PLL,
+  HL_GAUDI_MME_PLL,
+  HL_GAUDI_TPC_PLL,
+  HL_GAUDI_IF_PLL,
+  HL_GAUDI_PLL_MAX
+};
+enum hl_device_status {
+  HL_DEVICE_STATUS_OPERATIONAL,
+  HL_DEVICE_STATUS_IN_RESET,
+  HL_DEVICE_STATUS_MALFUNCTION,
+  HL_DEVICE_STATUS_NEEDS_RESET,
+  HL_DEVICE_STATUS_IN_DEVICE_CREATION,
+  HL_DEVICE_STATUS_LAST = HL_DEVICE_STATUS_IN_DEVICE_CREATION
+};
+enum hl_server_type {
+  HL_SERVER_TYPE_UNKNOWN = 0,
+  HL_SERVER_GAUDI_HLS1 = 1,
+  HL_SERVER_GAUDI_HLS1H = 2,
+  HL_SERVER_GAUDI_TYPE1 = 3,
+  HL_SERVER_GAUDI_TYPE2 = 4
+};
+#define HL_INFO_HW_IP_INFO 0
+#define HL_INFO_HW_EVENTS 1
+#define HL_INFO_DRAM_USAGE 2
+#define HL_INFO_HW_IDLE 3
+#define HL_INFO_DEVICE_STATUS 4
+#define HL_INFO_DEVICE_UTILIZATION 6
+#define HL_INFO_HW_EVENTS_AGGREGATE 7
+#define HL_INFO_CLK_RATE 8
+#define HL_INFO_RESET_COUNT 9
+#define HL_INFO_TIME_SYNC 10
+#define HL_INFO_CS_COUNTERS 11
+#define HL_INFO_PCI_COUNTERS 12
+#define HL_INFO_CLK_THROTTLE_REASON 13
+#define HL_INFO_SYNC_MANAGER 14
+#define HL_INFO_TOTAL_ENERGY 15
+#define HL_INFO_PLL_FREQUENCY 16
+#define HL_INFO_POWER 17
+#define HL_INFO_OPEN_STATS 18
+#define HL_INFO_VERSION_MAX_LEN 128
+#define HL_INFO_CARD_NAME_MAX_LEN 16
+struct hl_info_hw_ip_info {
+  __u64 sram_base_address;
+  __u64 dram_base_address;
+  __u64 dram_size;
+  __u32 sram_size;
+  __u32 num_of_events;
+  __u32 device_id;
+  __u32 module_id;
+  __u32 reserved;
+  __u16 first_available_interrupt_id;
+  __u16 server_type;
+  __u32 cpld_version;
+  __u32 psoc_pci_pll_nr;
+  __u32 psoc_pci_pll_nf;
+  __u32 psoc_pci_pll_od;
+  __u32 psoc_pci_pll_div_factor;
+  __u8 tpc_enabled_mask;
+  __u8 dram_enabled;
+  __u8 pad[2];
+  __u8 cpucp_version[HL_INFO_VERSION_MAX_LEN];
+  __u8 card_name[HL_INFO_CARD_NAME_MAX_LEN];
+  __u64 reserved2;
+  __u64 dram_page_size;
+};
+struct hl_info_dram_usage {
+  __u64 dram_free_mem;
+  __u64 ctx_dram_mem;
+};
+#define HL_BUSY_ENGINES_MASK_EXT_SIZE 2
+struct hl_info_hw_idle {
+  __u32 is_idle;
+  __u32 busy_engines_mask;
+  __u64 busy_engines_mask_ext[HL_BUSY_ENGINES_MASK_EXT_SIZE];
+};
+struct hl_info_device_status {
+  __u32 status;
+  __u32 pad;
+};
+struct hl_info_device_utilization {
+  __u32 utilization;
+  __u32 pad;
+};
+struct hl_info_clk_rate {
+  __u32 cur_clk_rate_mhz;
+  __u32 max_clk_rate_mhz;
+};
+struct hl_info_reset_count {
+  __u32 hard_reset_cnt;
+  __u32 soft_reset_cnt;
+};
+struct hl_info_time_sync {
+  __u64 device_time;
+  __u64 host_time;
+};
+struct hl_info_pci_counters {
+  __u64 rx_throughput;
+  __u64 tx_throughput;
+  __u64 replay_cnt;
+};
+#define HL_CLK_THROTTLE_POWER 0x1
+#define HL_CLK_THROTTLE_THERMAL 0x2
+struct hl_info_clk_throttle {
+  __u32 clk_throttling_reason;
+};
+struct hl_info_energy {
+  __u64 total_energy_consumption;
+};
+#define HL_PLL_NUM_OUTPUTS 4
+struct hl_pll_frequency_info {
+  __u16 output[HL_PLL_NUM_OUTPUTS];
+};
+struct hl_open_stats_info {
+  __u64 open_counter;
+  __u64 last_open_period_ms;
+};
+struct hl_power_info {
+  __u64 power;
+};
+struct hl_info_sync_manager {
+  __u32 first_available_sync_object;
+  __u32 first_available_monitor;
+  __u32 first_available_cq;
+  __u32 reserved;
+};
+struct hl_info_cs_counters {
+  __u64 total_out_of_mem_drop_cnt;
+  __u64 ctx_out_of_mem_drop_cnt;
+  __u64 total_parsing_drop_cnt;
+  __u64 ctx_parsing_drop_cnt;
+  __u64 total_queue_full_drop_cnt;
+  __u64 ctx_queue_full_drop_cnt;
+  __u64 total_device_in_reset_drop_cnt;
+  __u64 ctx_device_in_reset_drop_cnt;
+  __u64 total_max_cs_in_flight_drop_cnt;
+  __u64 ctx_max_cs_in_flight_drop_cnt;
+  __u64 total_validation_drop_cnt;
+  __u64 ctx_validation_drop_cnt;
+};
+enum gaudi_dcores {
+  HL_GAUDI_WS_DCORE,
+  HL_GAUDI_WN_DCORE,
+  HL_GAUDI_EN_DCORE,
+  HL_GAUDI_ES_DCORE
+};
+struct hl_info_args {
+  __u64 return_pointer;
+  __u32 return_size;
+  __u32 op;
+  union {
+    __u32 dcore_id;
+    __u32 ctx_id;
+    __u32 period_ms;
+    __u32 pll_index;
+  };
+  __u32 pad;
+};
+#define HL_CB_OP_CREATE 0
+#define HL_CB_OP_DESTROY 1
+#define HL_CB_OP_INFO 2
+#define HL_MAX_CB_SIZE (0x200000 - 32)
+#define HL_CB_FLAGS_MAP 0x1
+struct hl_cb_in {
+  __u64 cb_handle;
+  __u32 op;
+  __u32 cb_size;
+  __u32 ctx_id;
+  __u32 flags;
+};
+struct hl_cb_out {
+  union {
+    __u64 cb_handle;
+    struct {
+      __u32 usage_cnt;
+      __u32 pad;
+    };
+  };
+};
+union hl_cb_args {
+  struct hl_cb_in in;
+  struct hl_cb_out out;
+};
+#define HL_CS_CHUNK_FLAGS_USER_ALLOC_CB 0x1
+struct hl_cs_chunk {
+  union {
+    __u64 cb_handle;
+    __u64 signal_seq_arr;
+    __u64 encaps_signal_seq;
+  };
+  __u32 queue_index;
+  union {
+    __u32 cb_size;
+    __u32 num_signal_seq_arr;
+    __u32 encaps_signal_offset;
+  };
+  __u32 cs_chunk_flags;
+  __u32 collective_engine_id;
+  __u32 pad[10];
+};
+#define HL_CS_FLAGS_FORCE_RESTORE 0x1
+#define HL_CS_FLAGS_SIGNAL 0x2
+#define HL_CS_FLAGS_WAIT 0x4
+#define HL_CS_FLAGS_COLLECTIVE_WAIT 0x8
+#define HL_CS_FLAGS_TIMESTAMP 0x20
+#define HL_CS_FLAGS_STAGED_SUBMISSION 0x40
+#define HL_CS_FLAGS_STAGED_SUBMISSION_FIRST 0x80
+#define HL_CS_FLAGS_STAGED_SUBMISSION_LAST 0x100
+#define HL_CS_FLAGS_CUSTOM_TIMEOUT 0x200
+#define HL_CS_FLAGS_SKIP_RESET_ON_TIMEOUT 0x400
+#define HL_CS_FLAGS_ENCAP_SIGNALS 0x800
+#define HL_CS_FLAGS_RESERVE_SIGNALS_ONLY 0x1000
+#define HL_CS_FLAGS_UNRESERVE_SIGNALS_ONLY 0x2000
+#define HL_CS_STATUS_SUCCESS 0
+#define HL_MAX_JOBS_PER_CS 512
+struct hl_cs_in {
+  __u64 chunks_restore;
+  __u64 chunks_execute;
+  union {
+    __u64 seq;
+    __u32 encaps_sig_handle_id;
+    struct {
+      __u32 encaps_signals_count;
+      __u32 encaps_signals_q_idx;
+    };
+  };
+  __u32 num_chunks_restore;
+  __u32 num_chunks_execute;
+  __u32 timeout;
+  __u32 cs_flags;
+  __u32 ctx_id;
+};
+struct hl_cs_out {
+  union {
+    __u64 seq;
+    struct {
+      __u32 handle_id;
+      __u32 count;
+    };
+  };
+  __u32 status;
+  __u32 sob_base_addr_offset;
+};
+union hl_cs_args {
+  struct hl_cs_in in;
+  struct hl_cs_out out;
+};
+#define HL_WAIT_CS_FLAGS_INTERRUPT 0x2
+#define HL_WAIT_CS_FLAGS_INTERRUPT_MASK 0xFFF00000
+#define HL_WAIT_CS_FLAGS_MULTI_CS 0x4
+#define HL_WAIT_MULTI_CS_LIST_MAX_LEN 32
+struct hl_wait_cs_in {
+  union {
+    struct {
+      __u64 seq;
+      __u64 timeout_us;
+    };
+    struct {
+      __u64 addr;
+      __u64 target;
+    };
+  };
+  __u32 ctx_id;
+  __u32 flags;
+  __u8 seq_arr_len;
+  __u8 pad[3];
+  __u32 interrupt_timeout_us;
+};
+#define HL_WAIT_CS_STATUS_COMPLETED 0
+#define HL_WAIT_CS_STATUS_BUSY 1
+#define HL_WAIT_CS_STATUS_TIMEDOUT 2
+#define HL_WAIT_CS_STATUS_ABORTED 3
+#define HL_WAIT_CS_STATUS_FLAG_GONE 0x1
+#define HL_WAIT_CS_STATUS_FLAG_TIMESTAMP_VLD 0x2
+struct hl_wait_cs_out {
+  __u32 status;
+  __u32 flags;
+  __s64 timestamp_nsec;
+  __u32 cs_completion_map;
+  __u32 pad;
+};
+union hl_wait_cs_args {
+  struct hl_wait_cs_in in;
+  struct hl_wait_cs_out out;
+};
+#define HL_MEM_OP_ALLOC 0
+#define HL_MEM_OP_FREE 1
+#define HL_MEM_OP_MAP 2
+#define HL_MEM_OP_UNMAP 3
+#define HL_MEM_OP_MAP_BLOCK 4
+#define HL_MEM_OP_EXPORT_DMABUF_FD 5
+#define HL_MEM_CONTIGUOUS 0x1
+#define HL_MEM_SHARED 0x2
+#define HL_MEM_USERPTR 0x4
+#define HL_MEM_FORCE_HINT 0x8
+struct hl_mem_in {
+  union {
+    struct {
+      __u64 mem_size;
+    } alloc;
+    struct {
+      __u64 handle;
+    } free;
+    struct {
+      __u64 hint_addr;
+      __u64 handle;
+    } map_device;
+    struct {
+      __u64 host_virt_addr;
+      __u64 hint_addr;
+      __u64 mem_size;
+    } map_host;
+    struct {
+      __u64 block_addr;
+    } map_block;
+    struct {
+      __u64 device_virt_addr;
+    } unmap;
+    struct {
+      __u64 handle;
+      __u64 mem_size;
+    } export_dmabuf_fd;
+  };
+  __u32 op;
+  __u32 flags;
+  __u32 ctx_id;
+  __u32 pad;
+};
+struct hl_mem_out {
+  union {
+    __u64 device_virt_addr;
+    __u64 handle;
+    struct {
+      __u64 block_handle;
+      __u32 block_size;
+      __u32 pad;
+    };
+    __s32 fd;
+  };
+};
+union hl_mem_args {
+  struct hl_mem_in in;
+  struct hl_mem_out out;
+};
+#define HL_DEBUG_MAX_AUX_VALUES 10
+struct hl_debug_params_etr {
+  __u64 buffer_address;
+  __u64 buffer_size;
+  __u32 sink_mode;
+  __u32 pad;
+};
+struct hl_debug_params_etf {
+  __u64 buffer_address;
+  __u64 buffer_size;
+  __u32 sink_mode;
+  __u32 pad;
+};
+struct hl_debug_params_stm {
+  __u64 he_mask;
+  __u64 sp_mask;
+  __u32 id;
+  __u32 frequency;
+};
+struct hl_debug_params_bmon {
+  __u64 start_addr0;
+  __u64 addr_mask0;
+  __u64 start_addr1;
+  __u64 addr_mask1;
+  __u32 bw_win;
+  __u32 win_capture;
+  __u32 id;
+  __u32 pad;
+};
+struct hl_debug_params_spmu {
+  __u64 event_types[HL_DEBUG_MAX_AUX_VALUES];
+  __u32 event_types_num;
+  __u32 pad;
+};
+#define HL_DEBUG_OP_ETR 0
+#define HL_DEBUG_OP_ETF 1
+#define HL_DEBUG_OP_STM 2
+#define HL_DEBUG_OP_FUNNEL 3
+#define HL_DEBUG_OP_BMON 4
+#define HL_DEBUG_OP_SPMU 5
+#define HL_DEBUG_OP_TIMESTAMP 6
+#define HL_DEBUG_OP_SET_MODE 7
+struct hl_debug_args {
+  __u64 input_ptr;
+  __u64 output_ptr;
+  __u32 input_size;
+  __u32 output_size;
+  __u32 op;
+  __u32 reg_idx;
+  __u32 enable;
+  __u32 ctx_id;
+};
+#define HL_IOCTL_INFO _IOWR('H', 0x01, struct hl_info_args)
+#define HL_IOCTL_CB _IOWR('H', 0x02, union hl_cb_args)
+#define HL_IOCTL_CS _IOWR('H', 0x03, union hl_cs_args)
+#define HL_IOCTL_WAIT_CS _IOWR('H', 0x04, union hl_wait_cs_args)
+#define HL_IOCTL_MEMORY _IOWR('H', 0x05, union hl_mem_args)
+#define HL_IOCTL_DEBUG _IOWR('H', 0x06, struct hl_debug_args)
+#define HL_COMMAND_START 0x01
+#define HL_COMMAND_END 0x07
+#endif
diff --git a/x86_64-linux-musl/include/misc/ocxl.h b/x86_64-linux-musl/include/misc/ocxl.h
new file mode 100644
index 0000000..676aaf8
--- /dev/null
+++ b/x86_64-linux-musl/include/misc/ocxl.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_MISC_OCXL_H
+#define _UAPI_MISC_OCXL_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+enum ocxl_event_type {
+  OCXL_AFU_EVENT_XSL_FAULT_ERROR = 0,
+};
+#define OCXL_KERNEL_EVENT_FLAG_LAST 0x0001
+struct ocxl_kernel_event_header {
+  __u16 type;
+  __u16 flags;
+  __u32 reserved;
+};
+struct ocxl_kernel_event_xsl_fault_error {
+  __u64 addr;
+  __u64 dsisr;
+  __u64 count;
+  __u64 reserved;
+};
+struct ocxl_ioctl_attach {
+  __u64 amr;
+  __u64 reserved1;
+  __u64 reserved2;
+  __u64 reserved3;
+};
+struct ocxl_ioctl_metadata {
+  __u16 version;
+  __u8 afu_version_major;
+  __u8 afu_version_minor;
+  __u32 pasid;
+  __u64 pp_mmio_size;
+  __u64 global_mmio_size;
+  __u64 reserved[13];
+};
+struct ocxl_ioctl_p9_wait {
+  __u16 thread_id;
+  __u16 reserved1;
+  __u32 reserved2;
+  __u64 reserved3[3];
+};
+#define OCXL_IOCTL_FEATURES_FLAGS0_P9_WAIT 0x01
+struct ocxl_ioctl_features {
+  __u64 flags[4];
+};
+struct ocxl_ioctl_irq_fd {
+  __u64 irq_offset;
+  __s32 eventfd;
+  __u32 reserved;
+};
+#define OCXL_MAGIC 0xCA
+#define OCXL_IOCTL_ATTACH _IOW(OCXL_MAGIC, 0x10, struct ocxl_ioctl_attach)
+#define OCXL_IOCTL_IRQ_ALLOC _IOR(OCXL_MAGIC, 0x11, __u64)
+#define OCXL_IOCTL_IRQ_FREE _IOW(OCXL_MAGIC, 0x12, __u64)
+#define OCXL_IOCTL_IRQ_SET_FD _IOW(OCXL_MAGIC, 0x13, struct ocxl_ioctl_irq_fd)
+#define OCXL_IOCTL_GET_METADATA _IOR(OCXL_MAGIC, 0x14, struct ocxl_ioctl_metadata)
+#define OCXL_IOCTL_ENABLE_P9_WAIT _IOR(OCXL_MAGIC, 0x15, struct ocxl_ioctl_p9_wait)
+#define OCXL_IOCTL_GET_FEATURES _IOR(OCXL_MAGIC, 0x16, struct ocxl_ioctl_features)
+#endif
diff --git a/x86_64-linux-musl/include/misc/pvpanic.h b/x86_64-linux-musl/include/misc/pvpanic.h
new file mode 100644
index 0000000..18edcd8
--- /dev/null
+++ b/x86_64-linux-musl/include/misc/pvpanic.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 __PVPANIC_H__
+#define __PVPANIC_H__
+#define PVPANIC_PANICKED (1 << 0)
+#define PVPANIC_CRASH_LOADED (1 << 1)
+#endif
diff --git a/x86_64-linux-musl/include/misc/uacce/hisi_qm.h b/x86_64-linux-musl/include/misc/uacce/hisi_qm.h
new file mode 100644
index 0000000..87757a9
--- /dev/null
+++ b/x86_64-linux-musl/include/misc/uacce/hisi_qm.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_HISI_QM_H
+#define _UAPI_HISI_QM_H
+#include <linux/types.h>
+struct hisi_qp_ctx {
+  __u16 id;
+  __u16 qc_type;
+};
+#define HISI_QM_API_VER_BASE "hisi_qm_v1"
+#define HISI_QM_API_VER2_BASE "hisi_qm_v2"
+#define HISI_QM_API_VER3_BASE "hisi_qm_v3"
+#define UACCE_CMD_QM_SET_QP_CTX _IOWR('H', 10, struct hisi_qp_ctx)
+#endif
diff --git a/x86_64-linux-musl/include/misc/uacce/uacce.h b/x86_64-linux-musl/include/misc/uacce/uacce.h
new file mode 100644
index 0000000..469d188
--- /dev/null
+++ b/x86_64-linux-musl/include/misc/uacce/uacce.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 _UAPIUUACCE_H
+#define _UAPIUUACCE_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define UACCE_CMD_START_Q _IO('W', 0)
+#define UACCE_CMD_PUT_Q _IO('W', 1)
+#define UACCE_DEV_SVA BIT(0)
+enum uacce_qfrt {
+  UACCE_QFRT_MMIO = 0,
+  UACCE_QFRT_DUS = 1,
+};
+#endif
diff --git a/x86_64-linux-musl/include/misc/xilinx_sdfec.h b/x86_64-linux-musl/include/misc/xilinx_sdfec.h
new file mode 100644
index 0000000..8dde40d
--- /dev/null
+++ b/x86_64-linux-musl/include/misc/xilinx_sdfec.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 __XILINX_SDFEC_H__
+#define __XILINX_SDFEC_H__
+#include <linux/types.h>
+#define XSDFEC_LDPC_SC_TABLE_ADDR_BASE (0x10000)
+#define XSDFEC_LDPC_SC_TABLE_ADDR_HIGH (0x10400)
+#define XSDFEC_LDPC_LA_TABLE_ADDR_BASE (0x18000)
+#define XSDFEC_LDPC_LA_TABLE_ADDR_HIGH (0x19000)
+#define XSDFEC_LDPC_QC_TABLE_ADDR_BASE (0x20000)
+#define XSDFEC_LDPC_QC_TABLE_ADDR_HIGH (0x28000)
+#define XSDFEC_SC_TABLE_DEPTH (XSDFEC_LDPC_SC_TABLE_ADDR_HIGH - XSDFEC_LDPC_SC_TABLE_ADDR_BASE)
+#define XSDFEC_LA_TABLE_DEPTH (XSDFEC_LDPC_LA_TABLE_ADDR_HIGH - XSDFEC_LDPC_LA_TABLE_ADDR_BASE)
+#define XSDFEC_QC_TABLE_DEPTH (XSDFEC_LDPC_QC_TABLE_ADDR_HIGH - XSDFEC_LDPC_QC_TABLE_ADDR_BASE)
+enum xsdfec_code {
+  XSDFEC_TURBO_CODE = 0,
+  XSDFEC_LDPC_CODE,
+};
+enum xsdfec_order {
+  XSDFEC_MAINTAIN_ORDER = 0,
+  XSDFEC_OUT_OF_ORDER,
+};
+enum xsdfec_turbo_alg {
+  XSDFEC_MAX_SCALE = 0,
+  XSDFEC_MAX_STAR,
+  XSDFEC_TURBO_ALG_MAX,
+};
+enum xsdfec_state {
+  XSDFEC_INIT = 0,
+  XSDFEC_STARTED,
+  XSDFEC_STOPPED,
+  XSDFEC_NEEDS_RESET,
+  XSDFEC_PL_RECONFIGURE,
+};
+enum xsdfec_axis_width {
+  XSDFEC_1x128b = 1,
+  XSDFEC_2x128b = 2,
+  XSDFEC_4x128b = 4,
+};
+enum xsdfec_axis_word_include {
+  XSDFEC_FIXED_VALUE = 0,
+  XSDFEC_IN_BLOCK,
+  XSDFEC_PER_AXI_TRANSACTION,
+  XSDFEC_AXIS_WORDS_INCLUDE_MAX,
+};
+struct xsdfec_turbo {
+  __u32 alg;
+  __u8 scale;
+};
+struct xsdfec_ldpc_params {
+  __u32 n;
+  __u32 k;
+  __u32 psize;
+  __u32 nlayers;
+  __u32 nqc;
+  __u32 nmqc;
+  __u32 nm;
+  __u32 norm_type;
+  __u32 no_packing;
+  __u32 special_qc;
+  __u32 no_final_parity;
+  __u32 max_schedule;
+  __u32 sc_off;
+  __u32 la_off;
+  __u32 qc_off;
+  __u32 * sc_table;
+  __u32 * la_table;
+  __u32 * qc_table;
+  __u16 code_id;
+};
+struct xsdfec_status {
+  __u32 state;
+  __s8 activity;
+};
+struct xsdfec_irq {
+  __s8 enable_isr;
+  __s8 enable_ecc_isr;
+};
+struct xsdfec_config {
+  __u32 code;
+  __u32 order;
+  __u32 din_width;
+  __u32 din_word_include;
+  __u32 dout_width;
+  __u32 dout_word_include;
+  struct xsdfec_irq irq;
+  __s8 bypass;
+  __s8 code_wr_protect;
+};
+struct xsdfec_stats {
+  __u32 isr_err_count;
+  __u32 cecc_count;
+  __u32 uecc_count;
+};
+struct xsdfec_ldpc_param_table_sizes {
+  __u32 sc_size;
+  __u32 la_size;
+  __u32 qc_size;
+};
+#define XSDFEC_MAGIC 'f'
+#define XSDFEC_START_DEV _IO(XSDFEC_MAGIC, 0)
+#define XSDFEC_STOP_DEV _IO(XSDFEC_MAGIC, 1)
+#define XSDFEC_GET_STATUS _IOR(XSDFEC_MAGIC, 2, struct xsdfec_status)
+#define XSDFEC_SET_IRQ _IOW(XSDFEC_MAGIC, 3, struct xsdfec_irq)
+#define XSDFEC_SET_TURBO _IOW(XSDFEC_MAGIC, 4, struct xsdfec_turbo)
+#define XSDFEC_ADD_LDPC_CODE_PARAMS _IOW(XSDFEC_MAGIC, 5, struct xsdfec_ldpc_params)
+#define XSDFEC_GET_CONFIG _IOR(XSDFEC_MAGIC, 6, struct xsdfec_config)
+#define XSDFEC_GET_TURBO _IOR(XSDFEC_MAGIC, 7, struct xsdfec_turbo)
+#define XSDFEC_SET_ORDER _IOW(XSDFEC_MAGIC, 8, unsigned long)
+#define XSDFEC_SET_BYPASS _IOW(XSDFEC_MAGIC, 9, bool)
+#define XSDFEC_IS_ACTIVE _IOR(XSDFEC_MAGIC, 10, bool)
+#define XSDFEC_CLEAR_STATS _IO(XSDFEC_MAGIC, 11)
+#define XSDFEC_GET_STATS _IOR(XSDFEC_MAGIC, 12, struct xsdfec_stats)
+#define XSDFEC_SET_DEFAULT_CONFIG _IO(XSDFEC_MAGIC, 13)
+#endif
diff --git a/x86_64-linux-musl/include/mntent.h b/x86_64-linux-musl/include/mntent.h
new file mode 100644
index 0000000..3492a1d
--- /dev/null
+++ b/x86_64-linux-musl/include/mntent.h
@@ -0,0 +1,43 @@
+#ifndef _MNTENT_H
+#define _MNTENT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __NEED_FILE
+#include <bits/alltypes.h>
+
+#define MOUNTED "/etc/mtab"
+
+#define MNTTYPE_IGNORE	"ignore"
+#define MNTTYPE_NFS	"nfs"
+#define MNTTYPE_SWAP	"swap"
+#define MNTOPT_DEFAULTS	"defaults"
+#define MNTOPT_RO	"ro"
+#define MNTOPT_RW	"rw"
+#define MNTOPT_SUID	"suid"
+#define MNTOPT_NOSUID	"nosuid"
+#define MNTOPT_NOAUTO	"noauto"
+
+struct mntent {
+	char *mnt_fsname;
+	char *mnt_dir;
+	char *mnt_type;
+	char *mnt_opts;
+	int mnt_freq;
+	int mnt_passno;
+};
+
+FILE *setmntent(const char *, const char *);
+int endmntent(FILE *);
+struct mntent *getmntent(FILE *);
+struct mntent *getmntent_r(FILE *, struct mntent *, char *, int);
+int addmntent(FILE *, const struct mntent *);
+char *hasmntopt(const struct mntent *, const char *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/monetary.h b/x86_64-linux-musl/include/monetary.h
new file mode 100644
index 0000000..a91fa56
--- /dev/null
+++ b/x86_64-linux-musl/include/monetary.h
@@ -0,0 +1,23 @@
+#ifndef _MONETARY_H
+#define _MONETARY_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_ssize_t
+#define __NEED_size_t
+#define __NEED_locale_t
+
+#include <bits/alltypes.h>
+
+ssize_t strfmon(char *__restrict, size_t, const char *__restrict, ...);
+ssize_t strfmon_l(char *__restrict, size_t, locale_t, const char *__restrict, ...);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/mqueue.h b/x86_64-linux-musl/include/mqueue.h
new file mode 100644
index 0000000..0c807ea
--- /dev/null
+++ b/x86_64-linux-musl/include/mqueue.h
@@ -0,0 +1,41 @@
+#ifndef _MQUEUE_H
+#define _MQUEUE_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_size_t
+#define __NEED_ssize_t
+#define __NEED_pthread_attr_t
+#define __NEED_time_t
+#define __NEED_struct_timespec
+#include <bits/alltypes.h>
+
+typedef int mqd_t;
+struct mq_attr {
+	long mq_flags, mq_maxmsg, mq_msgsize, mq_curmsgs, __unused[4];
+};
+struct sigevent;
+
+int mq_close(mqd_t);
+int mq_getattr(mqd_t, struct mq_attr *);
+int mq_notify(mqd_t, const struct sigevent *);
+mqd_t mq_open(const char *, int, ...);
+ssize_t mq_receive(mqd_t, char *, size_t, unsigned *);
+int mq_send(mqd_t, const char *, size_t, unsigned);
+int mq_setattr(mqd_t, const struct mq_attr *__restrict, struct mq_attr *__restrict);
+ssize_t mq_timedreceive(mqd_t, char *__restrict, size_t, unsigned *__restrict, const struct timespec *__restrict);
+int mq_timedsend(mqd_t, const char *, size_t, unsigned, const struct timespec *);
+int mq_unlink(const char *);
+
+#if _REDIR_TIME64
+__REDIR(mq_timedreceive, __mq_timedreceive_time64);
+__REDIR(mq_timedsend, __mq_timedsend_time64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/mtd/inftl-user.h b/x86_64-linux-musl/include/mtd/inftl-user.h
new file mode 100644
index 0000000..6d5059e
--- /dev/null
+++ b/x86_64-linux-musl/include/mtd/inftl-user.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 __MTD_INFTL_USER_H__
+#define __MTD_INFTL_USER_H__
+#include <linux/types.h>
+#define OSAK_VERSION 0x5120
+#define PERCENTUSED 98
+#define SECTORSIZE 512
+struct inftl_bci {
+  __u8 ECCsig[6];
+  __u8 Status;
+  __u8 Status1;
+} __attribute__((packed));
+struct inftl_unithead1 {
+  __u16 virtualUnitNo;
+  __u16 prevUnitNo;
+  __u8 ANAC;
+  __u8 NACs;
+  __u8 parityPerField;
+  __u8 discarded;
+} __attribute__((packed));
+struct inftl_unithead2 {
+  __u8 parityPerField;
+  __u8 ANAC;
+  __u16 prevUnitNo;
+  __u16 virtualUnitNo;
+  __u8 NACs;
+  __u8 discarded;
+} __attribute__((packed));
+struct inftl_unittail {
+  __u8 Reserved[4];
+  __u16 EraseMark;
+  __u16 EraseMark1;
+} __attribute__((packed));
+union inftl_uci {
+  struct inftl_unithead1 a;
+  struct inftl_unithead2 b;
+  struct inftl_unittail c;
+};
+struct inftl_oob {
+  struct inftl_bci b;
+  union inftl_uci u;
+};
+struct INFTLPartition {
+  __u32 virtualUnits;
+  __u32 firstUnit;
+  __u32 lastUnit;
+  __u32 flags;
+  __u32 spareUnits;
+  __u32 Reserved0;
+  __u32 Reserved1;
+} __attribute__((packed));
+struct INFTLMediaHeader {
+  char bootRecordID[8];
+  __u32 NoOfBootImageBlocks;
+  __u32 NoOfBinaryPartitions;
+  __u32 NoOfBDTLPartitions;
+  __u32 BlockMultiplierBits;
+  __u32 FormatFlags;
+  __u32 OsakVersion;
+  __u32 PercentUsed;
+  struct INFTLPartition Partitions[4];
+} __attribute__((packed));
+#define INFTL_BINARY 0x20000000
+#define INFTL_BDTL 0x40000000
+#define INFTL_LAST 0x80000000
+#endif
diff --git a/x86_64-linux-musl/include/mtd/mtd-abi.h b/x86_64-linux-musl/include/mtd/mtd-abi.h
new file mode 100644
index 0000000..50ae565
--- /dev/null
+++ b/x86_64-linux-musl/include/mtd/mtd-abi.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 __MTD_ABI_H__
+#define __MTD_ABI_H__
+#include <linux/types.h>
+struct erase_info_user {
+  __u32 start;
+  __u32 length;
+};
+struct erase_info_user64 {
+  __u64 start;
+  __u64 length;
+};
+struct mtd_oob_buf {
+  __u32 start;
+  __u32 length;
+  unsigned char __user * ptr;
+};
+struct mtd_oob_buf64 {
+  __u64 start;
+  __u32 pad;
+  __u32 length;
+  __u64 usr_ptr;
+};
+enum {
+  MTD_OPS_PLACE_OOB = 0,
+  MTD_OPS_AUTO_OOB = 1,
+  MTD_OPS_RAW = 2,
+};
+struct mtd_write_req {
+  __u64 start;
+  __u64 len;
+  __u64 ooblen;
+  __u64 usr_data;
+  __u64 usr_oob;
+  __u8 mode;
+  __u8 padding[7];
+};
+#define MTD_ABSENT 0
+#define MTD_RAM 1
+#define MTD_ROM 2
+#define MTD_NORFLASH 3
+#define MTD_NANDFLASH 4
+#define MTD_DATAFLASH 6
+#define MTD_UBIVOLUME 7
+#define MTD_MLCNANDFLASH 8
+#define MTD_WRITEABLE 0x400
+#define MTD_BIT_WRITEABLE 0x800
+#define MTD_NO_ERASE 0x1000
+#define MTD_POWERUP_LOCK 0x2000
+#define MTD_SLC_ON_MLC_EMULATION 0x4000
+#define MTD_CAP_ROM 0
+#define MTD_CAP_RAM (MTD_WRITEABLE | MTD_BIT_WRITEABLE | MTD_NO_ERASE)
+#define MTD_CAP_NORFLASH (MTD_WRITEABLE | MTD_BIT_WRITEABLE)
+#define MTD_CAP_NANDFLASH (MTD_WRITEABLE)
+#define MTD_CAP_NVRAM (MTD_WRITEABLE | MTD_BIT_WRITEABLE | MTD_NO_ERASE)
+#define MTD_NANDECC_OFF 0
+#define MTD_NANDECC_PLACE 1
+#define MTD_NANDECC_AUTOPLACE 2
+#define MTD_NANDECC_PLACEONLY 3
+#define MTD_NANDECC_AUTOPL_USR 4
+#define MTD_OTP_OFF 0
+#define MTD_OTP_FACTORY 1
+#define MTD_OTP_USER 2
+struct mtd_info_user {
+  __u8 type;
+  __u32 flags;
+  __u32 size;
+  __u32 erasesize;
+  __u32 writesize;
+  __u32 oobsize;
+  __u64 padding;
+};
+struct region_info_user {
+  __u32 offset;
+  __u32 erasesize;
+  __u32 numblocks;
+  __u32 regionindex;
+};
+struct otp_info {
+  __u32 start;
+  __u32 length;
+  __u32 locked;
+};
+#define MEMGETINFO _IOR('M', 1, struct mtd_info_user)
+#define MEMERASE _IOW('M', 2, struct erase_info_user)
+#define MEMWRITEOOB _IOWR('M', 3, struct mtd_oob_buf)
+#define MEMREADOOB _IOWR('M', 4, struct mtd_oob_buf)
+#define MEMLOCK _IOW('M', 5, struct erase_info_user)
+#define MEMUNLOCK _IOW('M', 6, struct erase_info_user)
+#define MEMGETREGIONCOUNT _IOR('M', 7, int)
+#define MEMGETREGIONINFO _IOWR('M', 8, struct region_info_user)
+#define MEMGETOOBSEL _IOR('M', 10, struct nand_oobinfo)
+#define MEMGETBADBLOCK _IOW('M', 11, __kernel_loff_t)
+#define MEMSETBADBLOCK _IOW('M', 12, __kernel_loff_t)
+#define OTPSELECT _IOR('M', 13, int)
+#define OTPGETREGIONCOUNT _IOW('M', 14, int)
+#define OTPGETREGIONINFO _IOW('M', 15, struct otp_info)
+#define OTPLOCK _IOR('M', 16, struct otp_info)
+#define ECCGETLAYOUT _IOR('M', 17, struct nand_ecclayout_user)
+#define ECCGETSTATS _IOR('M', 18, struct mtd_ecc_stats)
+#define MTDFILEMODE _IO('M', 19)
+#define MEMERASE64 _IOW('M', 20, struct erase_info_user64)
+#define MEMWRITEOOB64 _IOWR('M', 21, struct mtd_oob_buf64)
+#define MEMREADOOB64 _IOWR('M', 22, struct mtd_oob_buf64)
+#define MEMISLOCKED _IOR('M', 23, struct erase_info_user)
+#define MEMWRITE _IOWR('M', 24, struct mtd_write_req)
+#define OTPERASE _IOW('M', 25, struct otp_info)
+struct nand_oobinfo {
+  __u32 useecc;
+  __u32 eccbytes;
+  __u32 oobfree[8][2];
+  __u32 eccpos[32];
+};
+struct nand_oobfree {
+  __u32 offset;
+  __u32 length;
+};
+#define MTD_MAX_OOBFREE_ENTRIES 8
+#define MTD_MAX_ECCPOS_ENTRIES 64
+struct nand_ecclayout_user {
+  __u32 eccbytes;
+  __u32 eccpos[MTD_MAX_ECCPOS_ENTRIES];
+  __u32 oobavail;
+  struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES];
+};
+struct mtd_ecc_stats {
+  __u32 corrected;
+  __u32 failed;
+  __u32 badblocks;
+  __u32 bbtblocks;
+};
+enum mtd_file_modes {
+  MTD_FILE_MODE_NORMAL = MTD_OTP_OFF,
+  MTD_FILE_MODE_OTP_FACTORY = MTD_OTP_FACTORY,
+  MTD_FILE_MODE_OTP_USER = MTD_OTP_USER,
+  MTD_FILE_MODE_RAW,
+};
+#endif
diff --git a/x86_64-linux-musl/include/mtd/mtd-user.h b/x86_64-linux-musl/include/mtd/mtd-user.h
new file mode 100644
index 0000000..a7ad6ad
--- /dev/null
+++ b/x86_64-linux-musl/include/mtd/mtd-user.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 __MTD_USER_H__
+#define __MTD_USER_H__
+#include <mtd/mtd-abi.h>
+typedef struct mtd_info_user mtd_info_t;
+typedef struct erase_info_user erase_info_t;
+typedef struct region_info_user region_info_t;
+typedef struct nand_oobinfo nand_oobinfo_t;
+typedef struct nand_ecclayout_user nand_ecclayout_t;
+#endif
diff --git a/x86_64-linux-musl/include/mtd/nftl-user.h b/x86_64-linux-musl/include/mtd/nftl-user.h
new file mode 100644
index 0000000..99ac366
--- /dev/null
+++ b/x86_64-linux-musl/include/mtd/nftl-user.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 __MTD_NFTL_USER_H__
+#define __MTD_NFTL_USER_H__
+#include <linux/types.h>
+struct nftl_bci {
+  unsigned char ECCSig[6];
+  __u8 Status;
+  __u8 Status1;
+} __attribute__((packed));
+struct nftl_uci0 {
+  __u16 VirtUnitNum;
+  __u16 ReplUnitNum;
+  __u16 SpareVirtUnitNum;
+  __u16 SpareReplUnitNum;
+} __attribute__((packed));
+struct nftl_uci1 {
+  __u32 WearInfo;
+  __u16 EraseMark;
+  __u16 EraseMark1;
+} __attribute__((packed));
+struct nftl_uci2 {
+  __u16 FoldMark;
+  __u16 FoldMark1;
+  __u32 unused;
+} __attribute__((packed));
+union nftl_uci {
+  struct nftl_uci0 a;
+  struct nftl_uci1 b;
+  struct nftl_uci2 c;
+};
+struct nftl_oob {
+  struct nftl_bci b;
+  union nftl_uci u;
+};
+struct NFTLMediaHeader {
+  char DataOrgID[6];
+  __u16 NumEraseUnits;
+  __u16 FirstPhysicalEUN;
+  __u32 FormattedSize;
+  unsigned char UnitSizeFactor;
+} __attribute__((packed));
+#define MAX_ERASE_ZONES (8192 - 512)
+#define ERASE_MARK 0x3c69
+#define SECTOR_FREE 0xff
+#define SECTOR_USED 0x55
+#define SECTOR_IGNORE 0x11
+#define SECTOR_DELETED 0x00
+#define FOLD_MARK_IN_PROGRESS 0x5555
+#define ZONE_GOOD 0xff
+#define ZONE_BAD_ORIGINAL 0
+#define ZONE_BAD_MARKED 7
+#endif
diff --git a/x86_64-linux-musl/include/mtd/ubi-user.h b/x86_64-linux-musl/include/mtd/ubi-user.h
new file mode 100644
index 0000000..866fbd2
--- /dev/null
+++ b/x86_64-linux-musl/include/mtd/ubi-user.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 __UBI_USER_H__
+#define __UBI_USER_H__
+#include <linux/types.h>
+#define UBI_VOL_NUM_AUTO (- 1)
+#define UBI_DEV_NUM_AUTO (- 1)
+#define UBI_MAX_VOLUME_NAME 127
+#define UBI_IOC_MAGIC 'o'
+#define UBI_IOCMKVOL _IOW(UBI_IOC_MAGIC, 0, struct ubi_mkvol_req)
+#define UBI_IOCRMVOL _IOW(UBI_IOC_MAGIC, 1, __s32)
+#define UBI_IOCRSVOL _IOW(UBI_IOC_MAGIC, 2, struct ubi_rsvol_req)
+#define UBI_IOCRNVOL _IOW(UBI_IOC_MAGIC, 3, struct ubi_rnvol_req)
+#define UBI_IOCRPEB _IOW(UBI_IOC_MAGIC, 4, __s32)
+#define UBI_IOCSPEB _IOW(UBI_IOC_MAGIC, 5, __s32)
+#define UBI_CTRL_IOC_MAGIC 'o'
+#define UBI_IOCATT _IOW(UBI_CTRL_IOC_MAGIC, 64, struct ubi_attach_req)
+#define UBI_IOCDET _IOW(UBI_CTRL_IOC_MAGIC, 65, __s32)
+#define UBI_VOL_IOC_MAGIC 'O'
+#define UBI_IOCVOLUP _IOW(UBI_VOL_IOC_MAGIC, 0, __s64)
+#define UBI_IOCEBER _IOW(UBI_VOL_IOC_MAGIC, 1, __s32)
+#define UBI_IOCEBCH _IOW(UBI_VOL_IOC_MAGIC, 2, __s32)
+#define UBI_IOCEBMAP _IOW(UBI_VOL_IOC_MAGIC, 3, struct ubi_map_req)
+#define UBI_IOCEBUNMAP _IOW(UBI_VOL_IOC_MAGIC, 4, __s32)
+#define UBI_IOCEBISMAP _IOR(UBI_VOL_IOC_MAGIC, 5, __s32)
+#define UBI_IOCSETVOLPROP _IOW(UBI_VOL_IOC_MAGIC, 6, struct ubi_set_vol_prop_req)
+#define UBI_IOCVOLCRBLK _IOW(UBI_VOL_IOC_MAGIC, 7, struct ubi_blkcreate_req)
+#define UBI_IOCVOLRMBLK _IO(UBI_VOL_IOC_MAGIC, 8)
+#define MAX_UBI_MTD_NAME_LEN 127
+#define UBI_MAX_RNVOL 32
+enum {
+  UBI_DYNAMIC_VOLUME = 3,
+  UBI_STATIC_VOLUME = 4,
+};
+enum {
+  UBI_VOL_PROP_DIRECT_WRITE = 1,
+};
+struct ubi_attach_req {
+  __s32 ubi_num;
+  __s32 mtd_num;
+  __s32 vid_hdr_offset;
+  __s16 max_beb_per1024;
+  __s8 padding[10];
+};
+enum {
+  UBI_VOL_SKIP_CRC_CHECK_FLG = 0x1,
+};
+#define UBI_VOL_VALID_FLGS (UBI_VOL_SKIP_CRC_CHECK_FLG)
+struct ubi_mkvol_req {
+  __s32 vol_id;
+  __s32 alignment;
+  __s64 bytes;
+  __s8 vol_type;
+  __u8 flags;
+  __s16 name_len;
+  __s8 padding2[4];
+  char name[UBI_MAX_VOLUME_NAME + 1];
+} __packed;
+struct ubi_rsvol_req {
+  __s64 bytes;
+  __s32 vol_id;
+} __packed;
+struct ubi_rnvol_req {
+  __s32 count;
+  __s8 padding1[12];
+  struct {
+    __s32 vol_id;
+    __s16 name_len;
+    __s8 padding2[2];
+    char name[UBI_MAX_VOLUME_NAME + 1];
+  } ents[UBI_MAX_RNVOL];
+} __packed;
+struct ubi_leb_change_req {
+  __s32 lnum;
+  __s32 bytes;
+  __s8 dtype;
+  __s8 padding[7];
+} __packed;
+struct ubi_map_req {
+  __s32 lnum;
+  __s8 dtype;
+  __s8 padding[3];
+} __packed;
+struct ubi_set_vol_prop_req {
+  __u8 property;
+  __u8 padding[7];
+  __u64 value;
+} __packed;
+struct ubi_blkcreate_req {
+  __s8 padding[128];
+} __packed;
+#endif
diff --git a/x86_64-linux-musl/include/net/ethernet.h b/x86_64-linux-musl/include/net/ethernet.h
new file mode 100644
index 0000000..c8d4177
--- /dev/null
+++ b/x86_64-linux-musl/include/net/ethernet.h
@@ -0,0 +1,55 @@
+#ifndef _NET_ETHERNET_H
+#define _NET_ETHERNET_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+#include <sys/types.h>
+#include <netinet/if_ether.h>
+
+struct ether_addr {
+	uint8_t ether_addr_octet[ETH_ALEN];
+};
+
+struct ether_header {
+	uint8_t  ether_dhost[ETH_ALEN];
+	uint8_t  ether_shost[ETH_ALEN];
+	uint16_t ether_type;
+};
+
+#define	ETHERTYPE_PUP		0x0200
+#define ETHERTYPE_SPRITE	0x0500
+#define	ETHERTYPE_IP		0x0800
+#define	ETHERTYPE_ARP		0x0806
+#define	ETHERTYPE_REVARP	0x8035
+#define ETHERTYPE_AT		0x809B
+#define ETHERTYPE_AARP		0x80F3
+#define	ETHERTYPE_VLAN		0x8100
+#define ETHERTYPE_IPX		0x8137
+#define	ETHERTYPE_IPV6		0x86dd
+#define ETHERTYPE_LOOPBACK	0x9000
+
+
+#define	ETHER_ADDR_LEN	ETH_ALEN
+#define	ETHER_TYPE_LEN	2
+#define	ETHER_CRC_LEN	4
+#define	ETHER_HDR_LEN	ETH_HLEN
+#define	ETHER_MIN_LEN	(ETH_ZLEN + ETHER_CRC_LEN)
+#define	ETHER_MAX_LEN	(ETH_FRAME_LEN + ETHER_CRC_LEN)
+
+#define	ETHER_IS_VALID_LEN(foo)	\
+	((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN)
+
+#define	ETHERTYPE_TRAIL		0x1000
+#define	ETHERTYPE_NTRAILER	16
+
+#define	ETHERMTU	ETH_DATA_LEN
+#define	ETHERMIN	(ETHER_MIN_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/net/if.h b/x86_64-linux-musl/include/net/if.h
new file mode 100644
index 0000000..774cbff
--- /dev/null
+++ b/x86_64-linux-musl/include/net/if.h
@@ -0,0 +1,141 @@
+#ifndef _NET_IF_H
+#define _NET_IF_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define IF_NAMESIZE 16
+
+struct if_nameindex {
+	unsigned int if_index;
+	char *if_name;
+};
+
+unsigned int if_nametoindex (const char *);
+char *if_indextoname (unsigned int, char *);
+struct if_nameindex *if_nameindex (void);
+void if_freenameindex (struct if_nameindex *);
+
+
+
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+
+#include <sys/socket.h>
+
+#define IFF_UP	0x1
+#define IFF_BROADCAST 0x2
+#define IFF_DEBUG 0x4
+#define IFF_LOOPBACK 0x8
+#define IFF_POINTOPOINT 0x10
+#define IFF_NOTRAILERS 0x20
+#define IFF_RUNNING 0x40
+#define IFF_NOARP 0x80
+#define IFF_PROMISC 0x100
+#define IFF_ALLMULTI 0x200
+#define IFF_MASTER 0x400
+#define IFF_SLAVE 0x800
+#define IFF_MULTICAST 0x1000
+#define IFF_PORTSEL 0x2000
+#define IFF_AUTOMEDIA 0x4000
+#define IFF_DYNAMIC 0x8000
+#define IFF_LOWER_UP 0x10000
+#define IFF_DORMANT 0x20000
+#define IFF_ECHO 0x40000
+#define IFF_VOLATILE (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST| \
+        IFF_ECHO|IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT)
+
+struct ifaddr {
+	struct sockaddr ifa_addr;
+	union {
+		struct sockaddr	ifu_broadaddr;
+		struct sockaddr	ifu_dstaddr;
+	} ifa_ifu;
+	struct iface *ifa_ifp;
+	struct ifaddr *ifa_next;
+};
+
+#define ifa_broadaddr	ifa_ifu.ifu_broadaddr
+#define ifa_dstaddr	ifa_ifu.ifu_dstaddr
+
+struct ifmap {
+	unsigned long int mem_start;
+	unsigned long int mem_end;
+	unsigned short int base_addr;
+	unsigned char irq;
+	unsigned char dma;
+	unsigned char port;
+};
+
+#define IFHWADDRLEN	6
+#define IFNAMSIZ	IF_NAMESIZE
+
+struct ifreq {
+	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 int ifru_flags;
+		int ifru_ivalue;
+		int ifru_mtu;
+		struct ifmap ifru_map;
+		char ifru_slave[IFNAMSIZ];
+		char ifru_newname[IFNAMSIZ];
+		char *ifru_data;
+	} ifr_ifru;
+};
+
+#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 _IOT_ifreq	_IOT(_IOTS(char),IFNAMSIZ,_IOTS(char),16,0,0)
+#define _IOT_ifreq_short _IOT(_IOTS(char),IFNAMSIZ,_IOTS(short),1,0,0)
+#define _IOT_ifreq_int	_IOT(_IOTS(char),IFNAMSIZ,_IOTS(int),1,0,0)
+
+struct ifconf {
+	int ifc_len;		
+	union {
+		char *ifcu_buf;
+		struct ifreq *ifcu_req;
+	} ifc_ifcu;
+};
+
+#define ifc_buf		ifc_ifcu.ifcu_buf
+#define ifc_req		ifc_ifcu.ifcu_req
+#define _IOT_ifconf _IOT(_IOTS(struct ifconf),1,0,0,0,0)
+
+#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
+#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO    0
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/net/if_arp.h b/x86_64-linux-musl/include/net/if_arp.h
new file mode 100644
index 0000000..27becc8
--- /dev/null
+++ b/x86_64-linux-musl/include/net/if_arp.h
@@ -0,0 +1,142 @@
+/* Nonstandard header */
+#ifndef _NET_IF_ARP_H
+#define _NET_IF_ARP_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <inttypes.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#define MAX_ADDR_LEN	7
+
+#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 arphdr {
+	uint16_t ar_hrd;
+	uint16_t ar_pro;
+	uint8_t ar_hln;
+	uint8_t ar_pln;
+	uint16_t ar_op;
+};
+
+
+#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_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
+
+struct arpreq {
+	struct sockaddr arp_pa;
+	struct sockaddr arp_ha;
+	int arp_flags;
+	struct sockaddr arp_netmask;
+	char arp_dev[16];
+};
+
+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
+#define ATF_MAGIC	0x80
+
+#define ARPD_UPDATE	0x01
+#define ARPD_LOOKUP	0x02
+#define ARPD_FLUSH	0x03
+
+struct arpd_request {
+	unsigned short req;
+	uint32_t ip;
+	unsigned long dev;
+	unsigned long stamp;
+	unsigned long updated;
+	unsigned char ha[MAX_ADDR_LEN];
+};
+
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/net/route.h b/x86_64-linux-musl/include/net/route.h
new file mode 100644
index 0000000..96ff48e
--- /dev/null
+++ b/x86_64-linux-musl/include/net/route.h
@@ -0,0 +1,124 @@
+#ifndef _NET_ROUTE_H
+#define _NET_ROUTE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <netinet/in.h>
+
+
+struct rtentry {
+	unsigned long int rt_pad1;
+	struct sockaddr rt_dst;
+	struct sockaddr rt_gateway;
+	struct sockaddr rt_genmask;
+	unsigned short int rt_flags;
+	short int rt_pad2;
+	unsigned long int rt_pad3;
+	unsigned char rt_tos;
+	unsigned char rt_class;
+	short int rt_pad4[sizeof(long)/2-1];
+	short int rt_metric;
+	char *rt_dev;
+	unsigned long int rt_mtu;
+	unsigned long int rt_window;
+	unsigned short int rt_irtt;
+};
+
+#define rt_mss	rt_mtu
+
+
+struct in6_rtmsg {
+	struct in6_addr rtmsg_dst;
+	struct in6_addr rtmsg_src;
+	struct in6_addr rtmsg_gateway;
+	uint32_t rtmsg_type;
+	uint16_t rtmsg_dst_len;
+	uint16_t rtmsg_src_len;
+	uint32_t rtmsg_metric;
+	unsigned long int rtmsg_info;
+	uint32_t rtmsg_flags;
+	int rtmsg_ifindex;
+};
+
+
+#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
+#define	RTF_STATIC	0x0400
+#define	RTF_XRESOLVE	0x0800
+#define RTF_NOFORWARD   0x1000
+#define RTF_THROW	0x2000
+#define RTF_NOPMTUDISC  0x4000
+
+#define RTF_DEFAULT	0x00010000
+#define RTF_ALLONLINK	0x00020000
+#define RTF_ADDRCONF	0x00040000
+
+#define RTF_LINKRT	0x00100000
+#define RTF_NONEXTHOP	0x00200000
+
+#define RTF_CACHE	0x01000000
+#define RTF_FLOW	0x02000000
+#define RTF_POLICY	0x04000000
+
+#define RTCF_VALVE	0x00200000
+#define RTCF_MASQ	0x00400000
+#define RTCF_NAT	0x00800000
+#define RTCF_DOREDIRECT 0x01000000
+#define RTCF_LOG	0x02000000
+#define RTCF_DIRECTSRC	0x04000000
+
+#define RTF_LOCAL	0x80000000
+#define RTF_INTERFACE	0x40000000
+#define RTF_MULTICAST	0x20000000
+#define RTF_BROADCAST	0x10000000
+#define RTF_NAT		0x08000000
+
+#define RTF_ADDRCLASSMASK	0xF8000000
+#define RT_ADDRCLASS(flags)	((uint32_t) flags >> 23)
+
+#define RT_TOS(tos)		((tos) & IPTOS_TOS_MASK)
+
+#define RT_LOCALADDR(flags)	((flags & RTF_ADDRCLASSMASK) \
+				 == (RTF_LOCAL|RTF_INTERFACE))
+
+#define RT_CLASS_UNSPEC		0
+#define RT_CLASS_DEFAULT	253
+
+#define RT_CLASS_MAIN		254
+#define RT_CLASS_LOCAL		255
+#define RT_CLASS_MAX		255
+
+
+#define RTMSG_ACK		NLMSG_ACK
+#define RTMSG_OVERRUN		NLMSG_OVERRUN
+
+#define RTMSG_NEWDEVICE		0x11
+#define RTMSG_DELDEVICE		0x12
+#define RTMSG_NEWROUTE		0x21
+#define RTMSG_DELROUTE		0x22
+#define RTMSG_NEWRULE		0x31
+#define RTMSG_DELRULE		0x32
+#define RTMSG_CONTROL		0x40
+
+#define RTMSG_AR_FAILED		0x51
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/netdb.h b/x86_64-linux-musl/include/netdb.h
new file mode 100644
index 0000000..d096c78
--- /dev/null
+++ b/x86_64-linux-musl/include/netdb.h
@@ -0,0 +1,156 @@
+#ifndef	_NETDB_H
+#define	_NETDB_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <netinet/in.h>
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define __NEED_size_t
+#include <bits/alltypes.h>
+#endif
+
+struct addrinfo {
+	int ai_flags;
+	int ai_family;
+	int ai_socktype;
+	int ai_protocol;
+	socklen_t ai_addrlen;
+	struct sockaddr *ai_addr;
+	char *ai_canonname;
+	struct addrinfo *ai_next;
+};
+
+#define AI_PASSIVE      0x01
+#define AI_CANONNAME    0x02
+#define AI_NUMERICHOST  0x04
+#define AI_V4MAPPED     0x08
+#define AI_ALL          0x10
+#define AI_ADDRCONFIG   0x20
+#define AI_NUMERICSERV  0x400
+
+
+#define NI_NUMERICHOST  0x01
+#define NI_NUMERICSERV  0x02
+#define NI_NOFQDN       0x04
+#define NI_NAMEREQD     0x08
+#define NI_DGRAM        0x10
+#define NI_NUMERICSCOPE 0x100
+
+#define EAI_BADFLAGS   -1
+#define EAI_NONAME     -2
+#define EAI_AGAIN      -3
+#define EAI_FAIL       -4
+#define EAI_FAMILY     -6
+#define EAI_SOCKTYPE   -7
+#define EAI_SERVICE    -8
+#define EAI_MEMORY     -10
+#define EAI_SYSTEM     -11
+#define EAI_OVERFLOW   -12
+
+int getaddrinfo (const char *__restrict, const char *__restrict, const struct addrinfo *__restrict, struct addrinfo **__restrict);
+void freeaddrinfo (struct addrinfo *);
+int getnameinfo (const struct sockaddr *__restrict, socklen_t, char *__restrict, socklen_t, char *__restrict, socklen_t, int);
+const char *gai_strerror(int);
+
+
+/* Legacy functions follow (marked OBsolete in SUS) */
+
+struct netent {
+	char *n_name;
+	char **n_aliases;
+	int n_addrtype;
+	uint32_t n_net;
+};
+
+struct hostent {
+	char *h_name;
+	char **h_aliases;
+	int h_addrtype;
+	int h_length;
+	char **h_addr_list;
+};
+#define h_addr h_addr_list[0]
+
+struct servent {
+	char *s_name;
+	char **s_aliases;
+	int s_port;
+	char *s_proto;
+};
+
+struct protoent {
+	char *p_name;
+	char **p_aliases;
+	int p_proto;
+};
+
+void sethostent (int);
+void endhostent (void);
+struct hostent *gethostent (void);
+
+void setnetent (int);
+void endnetent (void);
+struct netent *getnetent (void);
+struct netent *getnetbyaddr (uint32_t, int);
+struct netent *getnetbyname (const char *);
+
+void setservent (int);
+void endservent (void);
+struct servent *getservent (void);
+struct servent *getservbyname (const char *, const char *);
+struct servent *getservbyport (int, const char *);
+
+void setprotoent (int);
+void endprotoent (void);
+struct protoent *getprotoent (void);
+struct protoent *getprotobyname (const char *);
+struct protoent *getprotobynumber (int);
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_POSIX_SOURCE) \
+ || (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE+0 < 200809L) \
+ || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700)
+struct hostent *gethostbyname (const char *);
+struct hostent *gethostbyaddr (const void *, socklen_t, int);
+#ifdef __GNUC__
+__attribute__((const))
+#endif
+int *__h_errno_location(void);
+#define h_errno (*__h_errno_location())
+#define HOST_NOT_FOUND 1
+#define TRY_AGAIN      2
+#define NO_RECOVERY    3
+#define NO_DATA        4
+#define NO_ADDRESS     NO_DATA
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+void herror(const char *);
+const char *hstrerror(int);
+int gethostbyname_r(const char *, struct hostent *, char *, size_t, struct hostent **, int *);
+int gethostbyname2_r(const char *, int, struct hostent *, char *, size_t, struct hostent **, int *);
+struct hostent *gethostbyname2(const char *, int);
+int gethostbyaddr_r(const void *, socklen_t, int, struct hostent *, char *, size_t, struct hostent **, int *);
+int getservbyport_r(int, const char *, struct servent *, char *, size_t, struct servent **);
+int getservbyname_r(const char *, const char *, struct servent *, char *, size_t, struct servent **);
+#define EAI_NODATA     -5
+#define EAI_ADDRFAMILY -9
+#define EAI_INPROGRESS -100
+#define EAI_CANCELED   -101
+#define EAI_NOTCANCELED -102
+#define EAI_ALLDONE    -103
+#define EAI_INTR       -104
+#define EAI_IDN_ENCODE -105
+#define NI_MAXHOST 255
+#define NI_MAXSERV 32
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/netinet/ether.h b/x86_64-linux-musl/include/netinet/ether.h
new file mode 100644
index 0000000..eec7e53
--- /dev/null
+++ b/x86_64-linux-musl/include/netinet/ether.h
@@ -0,0 +1,22 @@
+#ifndef _NETINET_ETHER_H
+#define _NETINET_ETHER_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <netinet/if_ether.h>
+
+char *ether_ntoa (const struct ether_addr *);
+struct ether_addr *ether_aton (const char *);
+char *ether_ntoa_r (const struct ether_addr *, char *);
+struct ether_addr *ether_aton_r (const char *, struct ether_addr *);
+int ether_line(const char *, struct ether_addr *, char *);
+int ether_ntohost(char *, const struct ether_addr *);
+int ether_hostton(const char *, struct ether_addr *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/netinet/icmp6.h b/x86_64-linux-musl/include/netinet/icmp6.h
new file mode 100644
index 0000000..01269e7
--- /dev/null
+++ b/x86_64-linux-musl/include/netinet/icmp6.h
@@ -0,0 +1,305 @@
+#ifndef _NETINET_ICMP6_H
+#define _NETINET_ICMP6_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+#include <string.h>
+#include <sys/types.h>
+#include <netinet/in.h>
+
+#define ICMP6_FILTER 1
+
+#define ICMP6_FILTER_BLOCK		1
+#define ICMP6_FILTER_PASS		2
+#define ICMP6_FILTER_BLOCKOTHERS	3
+#define ICMP6_FILTER_PASSONLY		4
+
+struct icmp6_filter {
+	uint32_t icmp6_filt[8];
+};
+
+struct icmp6_hdr {
+	uint8_t     icmp6_type;
+	uint8_t     icmp6_code;
+	uint16_t    icmp6_cksum;
+	union {
+		uint32_t  icmp6_un_data32[1];
+		uint16_t  icmp6_un_data16[2];
+		uint8_t   icmp6_un_data8[4];
+	} icmp6_dataun;
+};
+
+#define icmp6_data32    icmp6_dataun.icmp6_un_data32
+#define icmp6_data16    icmp6_dataun.icmp6_un_data16
+#define icmp6_data8     icmp6_dataun.icmp6_un_data8
+#define icmp6_pptr      icmp6_data32[0]
+#define icmp6_mtu       icmp6_data32[0]
+#define icmp6_id        icmp6_data16[0]
+#define icmp6_seq       icmp6_data16[1]
+#define icmp6_maxdelay  icmp6_data16[0]
+
+#define ICMP6_DST_UNREACH             1
+#define ICMP6_PACKET_TOO_BIG          2
+#define ICMP6_TIME_EXCEEDED           3
+#define ICMP6_PARAM_PROB              4
+
+#define ICMP6_INFOMSG_MASK  0x80
+
+#define ICMP6_ECHO_REQUEST          128
+#define ICMP6_ECHO_REPLY            129
+#define MLD_LISTENER_QUERY          130
+#define MLD_LISTENER_REPORT         131
+#define MLD_LISTENER_REDUCTION      132
+
+#define ICMP6_DST_UNREACH_NOROUTE     0
+#define ICMP6_DST_UNREACH_ADMIN       1
+#define ICMP6_DST_UNREACH_BEYONDSCOPE 2
+#define ICMP6_DST_UNREACH_ADDR        3
+#define ICMP6_DST_UNREACH_NOPORT      4
+
+#define ICMP6_TIME_EXCEED_TRANSIT     0
+#define ICMP6_TIME_EXCEED_REASSEMBLY  1
+
+#define ICMP6_PARAMPROB_HEADER        0
+#define ICMP6_PARAMPROB_NEXTHEADER    1
+#define ICMP6_PARAMPROB_OPTION        2
+
+#define ICMP6_FILTER_WILLPASS(type, filterp) \
+	((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) == 0)
+
+#define ICMP6_FILTER_WILLBLOCK(type, filterp) \
+	((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) != 0)
+
+#define ICMP6_FILTER_SETPASS(type, filterp) \
+	((((filterp)->icmp6_filt[(type) >> 5]) &= ~(1 << ((type) & 31))))
+
+#define ICMP6_FILTER_SETBLOCK(type, filterp) \
+	((((filterp)->icmp6_filt[(type) >> 5]) |=  (1 << ((type) & 31))))
+
+#define ICMP6_FILTER_SETPASSALL(filterp) \
+	memset (filterp, 0, sizeof (struct icmp6_filter));
+
+#define ICMP6_FILTER_SETBLOCKALL(filterp) \
+	memset (filterp, 0xFF, sizeof (struct icmp6_filter));
+
+#define ND_ROUTER_SOLICIT           133
+#define ND_ROUTER_ADVERT            134
+#define ND_NEIGHBOR_SOLICIT         135
+#define ND_NEIGHBOR_ADVERT          136
+#define ND_REDIRECT                 137
+
+struct nd_router_solicit {
+	struct icmp6_hdr  nd_rs_hdr;
+};
+
+#define nd_rs_type               nd_rs_hdr.icmp6_type
+#define nd_rs_code               nd_rs_hdr.icmp6_code
+#define nd_rs_cksum              nd_rs_hdr.icmp6_cksum
+#define nd_rs_reserved           nd_rs_hdr.icmp6_data32[0]
+
+struct nd_router_advert {
+	struct icmp6_hdr  nd_ra_hdr;
+	uint32_t   nd_ra_reachable;
+	uint32_t   nd_ra_retransmit;
+};
+
+#define nd_ra_type               nd_ra_hdr.icmp6_type
+#define nd_ra_code               nd_ra_hdr.icmp6_code
+#define nd_ra_cksum              nd_ra_hdr.icmp6_cksum
+#define nd_ra_curhoplimit        nd_ra_hdr.icmp6_data8[0]
+#define nd_ra_flags_reserved     nd_ra_hdr.icmp6_data8[1]
+#define ND_RA_FLAG_MANAGED       0x80
+#define ND_RA_FLAG_OTHER         0x40
+#define ND_RA_FLAG_HOME_AGENT    0x20
+#define nd_ra_router_lifetime    nd_ra_hdr.icmp6_data16[1]
+
+struct nd_neighbor_solicit {
+	struct icmp6_hdr  nd_ns_hdr;
+	struct in6_addr   nd_ns_target;
+};
+
+#define nd_ns_type               nd_ns_hdr.icmp6_type
+#define nd_ns_code               nd_ns_hdr.icmp6_code
+#define nd_ns_cksum              nd_ns_hdr.icmp6_cksum
+#define nd_ns_reserved           nd_ns_hdr.icmp6_data32[0]
+
+struct nd_neighbor_advert {
+	struct icmp6_hdr  nd_na_hdr;
+	struct in6_addr   nd_na_target;
+};
+
+#define nd_na_type               nd_na_hdr.icmp6_type
+#define nd_na_code               nd_na_hdr.icmp6_code
+#define nd_na_cksum              nd_na_hdr.icmp6_cksum
+#define nd_na_flags_reserved     nd_na_hdr.icmp6_data32[0]
+#if     __BYTE_ORDER == __BIG_ENDIAN
+#define ND_NA_FLAG_ROUTER        0x80000000
+#define ND_NA_FLAG_SOLICITED     0x40000000
+#define ND_NA_FLAG_OVERRIDE      0x20000000
+#else
+#define ND_NA_FLAG_ROUTER        0x00000080
+#define ND_NA_FLAG_SOLICITED     0x00000040
+#define ND_NA_FLAG_OVERRIDE      0x00000020
+#endif
+
+struct nd_redirect {
+	struct icmp6_hdr  nd_rd_hdr;
+	struct in6_addr   nd_rd_target;
+	struct in6_addr   nd_rd_dst;
+};
+
+#define nd_rd_type               nd_rd_hdr.icmp6_type
+#define nd_rd_code               nd_rd_hdr.icmp6_code
+#define nd_rd_cksum              nd_rd_hdr.icmp6_cksum
+#define nd_rd_reserved           nd_rd_hdr.icmp6_data32[0]
+
+struct nd_opt_hdr {
+	uint8_t  nd_opt_type;
+	uint8_t  nd_opt_len;
+};
+
+#define ND_OPT_SOURCE_LINKADDR		1
+#define ND_OPT_TARGET_LINKADDR		2
+#define ND_OPT_PREFIX_INFORMATION	3
+#define ND_OPT_REDIRECTED_HEADER	4
+#define ND_OPT_MTU			5
+#define ND_OPT_RTR_ADV_INTERVAL		7
+#define ND_OPT_HOME_AGENT_INFO		8
+
+struct nd_opt_prefix_info {
+	uint8_t   nd_opt_pi_type;
+	uint8_t   nd_opt_pi_len;
+	uint8_t   nd_opt_pi_prefix_len;
+	uint8_t   nd_opt_pi_flags_reserved;
+	uint32_t  nd_opt_pi_valid_time;
+	uint32_t  nd_opt_pi_preferred_time;
+	uint32_t  nd_opt_pi_reserved2;
+	struct in6_addr  nd_opt_pi_prefix;
+};
+
+#define ND_OPT_PI_FLAG_ONLINK	0x80
+#define ND_OPT_PI_FLAG_AUTO	0x40
+#define ND_OPT_PI_FLAG_RADDR	0x20
+
+struct nd_opt_rd_hdr {
+	uint8_t   nd_opt_rh_type;
+	uint8_t   nd_opt_rh_len;
+	uint16_t  nd_opt_rh_reserved1;
+	uint32_t  nd_opt_rh_reserved2;
+};
+
+struct nd_opt_mtu {
+	uint8_t   nd_opt_mtu_type;
+	uint8_t   nd_opt_mtu_len;
+	uint16_t  nd_opt_mtu_reserved;
+	uint32_t  nd_opt_mtu_mtu;
+};
+
+struct mld_hdr {
+	struct icmp6_hdr    mld_icmp6_hdr;
+	struct in6_addr     mld_addr;
+};
+
+#define mld_type        mld_icmp6_hdr.icmp6_type
+#define mld_code        mld_icmp6_hdr.icmp6_code
+#define mld_cksum       mld_icmp6_hdr.icmp6_cksum
+#define mld_maxdelay    mld_icmp6_hdr.icmp6_data16[0]
+#define mld_reserved    mld_icmp6_hdr.icmp6_data16[1]
+
+#define ICMP6_ROUTER_RENUMBERING    138
+
+struct icmp6_router_renum {
+	struct icmp6_hdr    rr_hdr;
+	uint8_t             rr_segnum;
+	uint8_t             rr_flags;
+	uint16_t            rr_maxdelay;
+	uint32_t            rr_reserved;
+};
+
+#define rr_type		rr_hdr.icmp6_type
+#define rr_code         rr_hdr.icmp6_code
+#define rr_cksum        rr_hdr.icmp6_cksum
+#define rr_seqnum       rr_hdr.icmp6_data32[0]
+
+#define ICMP6_RR_FLAGS_TEST             0x80
+#define ICMP6_RR_FLAGS_REQRESULT        0x40
+#define ICMP6_RR_FLAGS_FORCEAPPLY       0x20
+#define ICMP6_RR_FLAGS_SPECSITE         0x10
+#define ICMP6_RR_FLAGS_PREVDONE         0x08
+
+struct rr_pco_match {
+	uint8_t             rpm_code;
+	uint8_t             rpm_len;
+	uint8_t             rpm_ordinal;
+	uint8_t             rpm_matchlen;
+	uint8_t             rpm_minlen;
+	uint8_t             rpm_maxlen;
+	uint16_t            rpm_reserved;
+	struct in6_addr     rpm_prefix;
+};
+
+#define RPM_PCO_ADD             1
+#define RPM_PCO_CHANGE          2
+#define RPM_PCO_SETGLOBAL       3
+
+struct rr_pco_use {
+	uint8_t             rpu_uselen;
+	uint8_t             rpu_keeplen;
+	uint8_t             rpu_ramask;
+	uint8_t             rpu_raflags;
+	uint32_t            rpu_vltime;
+	uint32_t            rpu_pltime;
+	uint32_t            rpu_flags;
+	struct in6_addr     rpu_prefix;
+};
+
+#define ICMP6_RR_PCOUSE_RAFLAGS_ONLINK  0x20
+#define ICMP6_RR_PCOUSE_RAFLAGS_AUTO    0x10
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME 0x80000000
+#define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME 0x40000000
+#else
+#define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME 0x80
+#define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME 0x40
+#endif
+
+struct rr_result {
+	uint16_t            rrr_flags;
+	uint8_t             rrr_ordinal;
+	uint8_t             rrr_matchedlen;
+	uint32_t            rrr_ifid;
+	struct in6_addr     rrr_prefix;
+};
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define ICMP6_RR_RESULT_FLAGS_OOB       0x0002
+#define ICMP6_RR_RESULT_FLAGS_FORBIDDEN 0x0001
+#else
+#define ICMP6_RR_RESULT_FLAGS_OOB       0x0200
+#define ICMP6_RR_RESULT_FLAGS_FORBIDDEN 0x0100
+#endif
+
+struct nd_opt_adv_interval {
+	uint8_t   nd_opt_adv_interval_type;
+	uint8_t   nd_opt_adv_interval_len;
+	uint16_t  nd_opt_adv_interval_reserved;
+	uint32_t  nd_opt_adv_interval_ival;
+};
+
+struct nd_opt_home_agent_info {
+	uint8_t   nd_opt_home_agent_info_type;
+	uint8_t   nd_opt_home_agent_info_len;
+	uint16_t  nd_opt_home_agent_info_reserved;
+	uint16_t  nd_opt_home_agent_info_preference;
+	uint16_t  nd_opt_home_agent_info_lifetime;
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/netinet/if_ether.h b/x86_64-linux-musl/include/netinet/if_ether.h
new file mode 100644
index 0000000..55a2ff1
--- /dev/null
+++ b/x86_64-linux-musl/include/netinet/if_ether.h
@@ -0,0 +1,148 @@
+#ifndef _NETINET_IF_ETHER_H
+#define _NETINET_IF_ETHER_H
+
+#include <stdint.h>
+#include <sys/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_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_AOE	0x88A2
+#define ETH_P_8021AD	0x88A8
+#define ETH_P_802_EX1	0x88B5
+#define ETH_P_ERSPAN	0x88BE
+#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_FCOE	0x8906
+#define ETH_P_TDLS	0x890D
+#define ETH_P_FIP	0x8914
+#define ETH_P_IBOE	0x8915
+#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
+
+struct ethhdr {
+	uint8_t h_dest[ETH_ALEN];
+	uint8_t h_source[ETH_ALEN];
+	uint16_t h_proto;
+};
+
+#include <net/ethernet.h>
+#include <net/if_arp.h>
+
+struct	ether_arp {
+	struct	arphdr ea_hdr;
+	uint8_t arp_sha[ETH_ALEN];
+	uint8_t arp_spa[4];
+	uint8_t arp_tha[ETH_ALEN];
+	uint8_t arp_tpa[4];
+};
+#define	arp_hrd	ea_hdr.ar_hrd
+#define	arp_pro	ea_hdr.ar_pro
+#define	arp_hln	ea_hdr.ar_hln
+#define	arp_pln	ea_hdr.ar_pln
+#define	arp_op	ea_hdr.ar_op
+
+#define ETHER_MAP_IP_MULTICAST(ipaddr, enaddr) \
+do { \
+	(enaddr)[0] = 0x01; \
+	(enaddr)[1] = 0x00; \
+	(enaddr)[2] = 0x5e; \
+	(enaddr)[3] = ((uint8_t *)ipaddr)[1] & 0x7f; \
+	(enaddr)[4] = ((uint8_t *)ipaddr)[2]; \
+	(enaddr)[5] = ((uint8_t *)ipaddr)[3]; \
+} while(0)
+
+#define __UAPI_DEF_ETHHDR       0
+
+#endif
diff --git a/x86_64-linux-musl/include/netinet/igmp.h b/x86_64-linux-musl/include/netinet/igmp.h
new file mode 100644
index 0000000..bbe8206
--- /dev/null
+++ b/x86_64-linux-musl/include/netinet/igmp.h
@@ -0,0 +1,45 @@
+#ifndef _NETINET_IGMP_H
+#define _NETINET_IGMP_H
+
+#include <stdint.h>
+#include <netinet/in.h>
+
+struct igmp {
+	uint8_t igmp_type;
+	uint8_t igmp_code;
+	uint16_t igmp_cksum;
+	struct in_addr igmp_group;
+};
+
+#define IGMP_MINLEN			8
+
+#define IGMP_MEMBERSHIP_QUERY   	0x11
+#define IGMP_V1_MEMBERSHIP_REPORT	0x12
+#define IGMP_V2_MEMBERSHIP_REPORT	0x16
+#define IGMP_V2_LEAVE_GROUP		0x17
+
+#define IGMP_DVMRP			0x13
+#define IGMP_PIM			0x14
+#define IGMP_TRACE			0x15
+
+#define IGMP_MTRACE_RESP		0x1e
+#define IGMP_MTRACE			0x1f
+
+#define IGMP_MAX_HOST_REPORT_DELAY	10
+#define IGMP_TIMER_SCALE		10
+
+#define IGMP_DELAYING_MEMBER	1
+#define IGMP_IDLE_MEMBER	2
+#define IGMP_LAZY_MEMBER	3
+#define IGMP_SLEEPING_MEMBER	4
+#define IGMP_AWAKENING_MEMBER	5
+
+#define IGMP_v1_ROUTER		1
+#define IGMP_v2_ROUTER		2
+
+#define IGMP_HOST_MEMBERSHIP_QUERY	IGMP_MEMBERSHIP_QUERY
+#define IGMP_HOST_MEMBERSHIP_REPORT	IGMP_V1_MEMBERSHIP_REPORT
+#define IGMP_HOST_NEW_MEMBERSHIP_REPORT	IGMP_V2_MEMBERSHIP_REPORT
+#define IGMP_HOST_LEAVE_MESSAGE		IGMP_V2_LEAVE_GROUP
+
+#endif
diff --git a/x86_64-linux-musl/include/netinet/in.h b/x86_64-linux-musl/include/netinet/in.h
new file mode 100644
index 0000000..f959433
--- /dev/null
+++ b/x86_64-linux-musl/include/netinet/in.h
@@ -0,0 +1,416 @@
+#ifndef	_NETINET_IN_H
+#define	_NETINET_IN_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <inttypes.h>
+#include <sys/socket.h>
+
+typedef uint16_t in_port_t;
+typedef uint32_t in_addr_t;
+struct in_addr { in_addr_t s_addr; };
+
+struct sockaddr_in {
+	sa_family_t sin_family;
+	in_port_t sin_port;
+	struct in_addr sin_addr;
+	uint8_t sin_zero[8];
+};
+
+struct in6_addr {
+	union {
+		uint8_t __s6_addr[16];
+		uint16_t __s6_addr16[8];
+		uint32_t __s6_addr32[4];
+	} __in6_union;
+};
+#define s6_addr __in6_union.__s6_addr
+#define s6_addr16 __in6_union.__s6_addr16
+#define s6_addr32 __in6_union.__s6_addr32
+
+struct sockaddr_in6 {
+	sa_family_t     sin6_family;
+	in_port_t       sin6_port;
+	uint32_t        sin6_flowinfo;
+	struct in6_addr sin6_addr;
+	uint32_t        sin6_scope_id;
+};
+
+struct ipv6_mreq {
+	struct in6_addr ipv6mr_multiaddr;
+	unsigned        ipv6mr_interface;
+};
+
+#define INADDR_ANY        ((in_addr_t) 0x00000000)
+#define INADDR_BROADCAST  ((in_addr_t) 0xffffffff)
+#define INADDR_NONE       ((in_addr_t) 0xffffffff)
+#define INADDR_LOOPBACK   ((in_addr_t) 0x7f000001)
+
+#define INADDR_UNSPEC_GROUP     ((in_addr_t) 0xe0000000)
+#define INADDR_ALLHOSTS_GROUP   ((in_addr_t) 0xe0000001)
+#define INADDR_ALLRTRS_GROUP    ((in_addr_t) 0xe0000002)
+#define INADDR_ALLSNOOPERS_GROUP ((in_addr_t) 0xe000006a)
+#define INADDR_MAX_LOCAL_GROUP  ((in_addr_t) 0xe00000ff)
+
+#define IN6ADDR_ANY_INIT      { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } }
+#define IN6ADDR_LOOPBACK_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } }
+
+extern const struct in6_addr in6addr_any, in6addr_loopback;
+
+#define INET_ADDRSTRLEN  16
+#define INET6_ADDRSTRLEN 46
+
+uint32_t htonl(uint32_t);
+uint16_t htons(uint16_t);
+uint32_t ntohl(uint32_t);
+uint16_t ntohs(uint16_t);
+
+#define IPPORT_RESERVED 1024
+
+#define IPPROTO_IP       0
+#define IPPROTO_HOPOPTS  0
+#define IPPROTO_ICMP     1
+#define IPPROTO_IGMP     2
+#define IPPROTO_IPIP     4
+#define IPPROTO_TCP      6
+#define IPPROTO_EGP      8
+#define IPPROTO_PUP      12
+#define IPPROTO_UDP      17
+#define IPPROTO_IDP      22
+#define IPPROTO_TP       29
+#define IPPROTO_DCCP     33
+#define IPPROTO_IPV6     41
+#define IPPROTO_ROUTING  43
+#define IPPROTO_FRAGMENT 44
+#define IPPROTO_RSVP     46
+#define IPPROTO_GRE      47
+#define IPPROTO_ESP      50
+#define IPPROTO_AH       51
+#define IPPROTO_ICMPV6   58
+#define IPPROTO_NONE     59
+#define IPPROTO_DSTOPTS  60
+#define IPPROTO_MTP      92
+#define IPPROTO_BEETPH   94
+#define IPPROTO_ENCAP    98
+#define IPPROTO_PIM      103
+#define IPPROTO_COMP     108
+#define IPPROTO_SCTP     132
+#define IPPROTO_MH       135
+#define IPPROTO_UDPLITE  136
+#define IPPROTO_MPLS     137
+#define IPPROTO_ETHERNET 143
+#define IPPROTO_RAW      255
+#define IPPROTO_MPTCP    262
+#define IPPROTO_MAX      263
+
+#define IN6_IS_ADDR_UNSPECIFIED(a) \
+        (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \
+         ((uint32_t *) (a))[2] == 0 && ((uint32_t *) (a))[3] == 0)
+
+#define IN6_IS_ADDR_LOOPBACK(a) \
+        (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \
+         ((uint32_t *) (a))[2] == 0 && \
+         ((uint8_t *) (a))[12] == 0 && ((uint8_t *) (a))[13] == 0 && \
+         ((uint8_t *) (a))[14] == 0 && ((uint8_t *) (a))[15] == 1 )
+
+#define IN6_IS_ADDR_MULTICAST(a) (((uint8_t *) (a))[0] == 0xff)
+
+#define IN6_IS_ADDR_LINKLOCAL(a) \
+        ((((uint8_t *) (a))[0]) == 0xfe && (((uint8_t *) (a))[1] & 0xc0) == 0x80)
+
+#define IN6_IS_ADDR_SITELOCAL(a) \
+        ((((uint8_t *) (a))[0]) == 0xfe && (((uint8_t *) (a))[1] & 0xc0) == 0xc0)
+
+#define IN6_IS_ADDR_V4MAPPED(a) \
+        (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \
+         ((uint8_t *) (a))[8] == 0 && ((uint8_t *) (a))[9] == 0 && \
+         ((uint8_t *) (a))[10] == 0xff && ((uint8_t *) (a))[11] == 0xff)
+
+#define IN6_IS_ADDR_V4COMPAT(a) \
+        (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \
+         ((uint32_t *) (a))[2] == 0 && ((uint8_t *) (a))[15] > 1)
+
+#define IN6_IS_ADDR_MC_NODELOCAL(a) \
+        (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x1))
+
+#define IN6_IS_ADDR_MC_LINKLOCAL(a) \
+        (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x2))
+
+#define IN6_IS_ADDR_MC_SITELOCAL(a) \
+        (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x5))
+
+#define IN6_IS_ADDR_MC_ORGLOCAL(a) \
+        (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x8))
+
+#define IN6_IS_ADDR_MC_GLOBAL(a) \
+        (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0xe))
+
+#define __ARE_4_EQUAL(a,b) \
+	(!( (0[a]-0[b]) | (1[a]-1[b]) | (2[a]-2[b]) | (3[a]-3[b]) ))
+#define IN6_ARE_ADDR_EQUAL(a,b) \
+	__ARE_4_EQUAL((const uint32_t *)(a), (const uint32_t *)(b))
+
+#define	IN_CLASSA(a)		((((in_addr_t)(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)		((((in_addr_t)(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)		((((in_addr_t)(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)		((((in_addr_t)(a)) & 0xf0000000) == 0xe0000000)
+#define	IN_MULTICAST(a)		IN_CLASSD(a)
+#define	IN_EXPERIMENTAL(a)	((((in_addr_t)(a)) & 0xe0000000) == 0xe0000000)
+#define	IN_BADCLASS(a)		((((in_addr_t)(a)) & 0xf0000000) == 0xf0000000)
+
+#define IN_LOOPBACKNET 127
+
+
+#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_PMTUDISC        10
+#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_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_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 IP_MULTICAST_ALL   49
+#define IP_UNICAST_IF      50
+
+#define IP_RECVRETOPTS IP_RETOPTS
+
+#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_DEFAULT_MULTICAST_TTL        1
+#define IP_DEFAULT_MULTICAST_LOOP       1
+#define IP_MAX_MEMBERSHIPS              20
+
+struct ip_opts {
+	struct in_addr ip_dst;
+	char ip_opts[40];
+};
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+
+#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 MCAST_EXCLUDE 0
+#define MCAST_INCLUDE 1
+
+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;
+};
+
+struct ip_mreq_source {
+	struct in_addr imr_multiaddr;
+	struct in_addr imr_interface;
+	struct in_addr imr_sourceaddr;
+};
+
+struct ip_msfilter {
+	struct in_addr imsf_multiaddr;
+	struct in_addr imsf_interface;
+	uint32_t imsf_fmode;
+	uint32_t imsf_numsrc;
+	struct in_addr imsf_slist[1];
+};
+#define IP_MSFILTER_SIZE(numsrc) \
+	(sizeof(struct ip_msfilter) - sizeof(struct in_addr) \
+	+ (numsrc) * sizeof(struct in_addr))
+
+struct group_req {
+	uint32_t gr_interface;
+	struct sockaddr_storage gr_group;
+};
+
+struct group_source_req {
+	uint32_t gsr_interface;
+	struct sockaddr_storage gsr_group;
+	struct sockaddr_storage gsr_source;
+};
+
+struct group_filter {
+	uint32_t gf_interface;
+	struct sockaddr_storage gf_group;
+	uint32_t gf_fmode;
+	uint32_t gf_numsrc;
+	struct sockaddr_storage gf_slist[1];
+};
+#define GROUP_FILTER_SIZE(numsrc) \
+	(sizeof(struct group_filter) - sizeof(struct sockaddr_storage) \
+	+ (numsrc) * sizeof(struct sockaddr_storage))
+
+struct in_pktinfo {
+	int ipi_ifindex;
+	struct in_addr ipi_spec_dst;
+	struct in_addr ipi_addr;
+};
+
+struct in6_pktinfo {
+	struct in6_addr ipi6_addr;
+	unsigned ipi6_ifindex;
+};
+
+struct ip6_mtuinfo {
+	struct sockaddr_in6 ip6m_addr;
+	uint32_t ip6m_mtu;
+};
+#endif
+
+#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_UNICAST_HOPS       16
+#define IPV6_MULTICAST_IF       17
+#define IPV6_MULTICAST_HOPS     18
+#define IPV6_MULTICAST_LOOP     19
+#define IPV6_JOIN_GROUP         20
+#define IPV6_LEAVE_GROUP        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_IPSEC_POLICY       34
+#define IPV6_XFRM_POLICY        35
+#define IPV6_HDRINCL            36
+
+#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_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
+
+#define IPV6_ADD_MEMBERSHIP     IPV6_JOIN_GROUP
+#define IPV6_DROP_MEMBERSHIP    IPV6_LEAVE_GROUP
+#define IPV6_RXHOPOPTS          IPV6_HOPOPTS
+#define IPV6_RXDSTOPTS          IPV6_DSTOPTS
+
+#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_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_RTHDR_LOOSE        0
+#define IPV6_RTHDR_STRICT       1
+
+#define IPV6_RTHDR_TYPE_0       0
+
+#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
+#define __UAPI_DEF_IN6_ADDR_ALT 0
+#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
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/netinet/in_systm.h b/x86_64-linux-musl/include/netinet/in_systm.h
new file mode 100644
index 0000000..a7b4177
--- /dev/null
+++ b/x86_64-linux-musl/include/netinet/in_systm.h
@@ -0,0 +1,9 @@
+#ifndef _NETINET_IN_SYSTM_H
+#define _NETINET_IN_SYSTM_H
+
+#include <stdint.h>
+
+typedef uint16_t n_short;
+typedef uint32_t n_long, n_time;
+
+#endif
diff --git a/x86_64-linux-musl/include/netinet/ip.h b/x86_64-linux-musl/include/netinet/ip.h
new file mode 100644
index 0000000..0ae132a
--- /dev/null
+++ b/x86_64-linux-musl/include/netinet/ip.h
@@ -0,0 +1,199 @@
+#ifndef _NETINET_IP_H
+#define _NETINET_IP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+#include <netinet/in.h>
+
+struct timestamp {
+	uint8_t len;
+	uint8_t ptr;
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+	unsigned int flags:4;
+	unsigned int overflow:4;
+#else
+	unsigned int overflow:4;
+	unsigned int flags:4;
+#endif
+	uint32_t data[9];
+  };
+
+struct iphdr {
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+	unsigned int ihl:4;
+	unsigned int version:4;
+#else
+	unsigned int version:4;
+	unsigned int ihl:4;
+#endif
+	uint8_t tos;
+	uint16_t tot_len;
+	uint16_t id;
+	uint16_t frag_off;
+	uint8_t ttl;
+	uint8_t protocol;
+	uint16_t check;
+	uint32_t saddr;
+	uint32_t daddr;
+};
+
+struct ip {
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+	unsigned int ip_hl:4;
+	unsigned int ip_v:4;
+#else
+	unsigned int ip_v:4;
+	unsigned int ip_hl:4;
+#endif
+	uint8_t ip_tos;
+	uint16_t ip_len;
+	uint16_t ip_id;
+	uint16_t ip_off;
+	uint8_t ip_ttl;
+	uint8_t ip_p;
+	uint16_t ip_sum;
+	struct in_addr ip_src, ip_dst;
+};
+
+#define	IP_RF 0x8000
+#define	IP_DF 0x4000
+#define	IP_MF 0x2000
+#define	IP_OFFMASK 0x1fff
+
+struct ip_timestamp {
+	uint8_t ipt_code;
+	uint8_t ipt_len;
+	uint8_t ipt_ptr;
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+	unsigned int ipt_flg:4;
+	unsigned int ipt_oflw:4;
+#else
+	unsigned int ipt_oflw:4;
+	unsigned int ipt_flg:4;
+#endif
+	uint32_t data[9];
+};
+
+#define	IPVERSION	4
+#define	IP_MAXPACKET	65535
+
+#define	IPTOS_ECN_MASK		0x03
+#define	IPTOS_ECN(x)		((x) & IPTOS_ECN_MASK)
+#define	IPTOS_ECN_NOT_ECT	0x00
+#define	IPTOS_ECN_ECT1		0x01
+#define	IPTOS_ECN_ECT0		0x02
+#define	IPTOS_ECN_CE		0x03
+
+#define	IPTOS_DSCP_MASK		0xfc
+#define	IPTOS_DSCP(x)		((x) & IPTOS_DSCP_MASK)
+#define	IPTOS_DSCP_AF11		0x28
+#define	IPTOS_DSCP_AF12		0x30
+#define	IPTOS_DSCP_AF13		0x38
+#define	IPTOS_DSCP_AF21		0x48
+#define	IPTOS_DSCP_AF22		0x50
+#define	IPTOS_DSCP_AF23		0x58
+#define	IPTOS_DSCP_AF31		0x68
+#define	IPTOS_DSCP_AF32		0x70
+#define	IPTOS_DSCP_AF33		0x78
+#define	IPTOS_DSCP_AF41		0x88
+#define	IPTOS_DSCP_AF42		0x90
+#define	IPTOS_DSCP_AF43		0x98
+#define	IPTOS_DSCP_EF		0xb8
+
+#define	IPTOS_CLASS_MASK	0xe0
+#define	IPTOS_CLASS(x)		((x) & IPTOS_CLASS_MASK)
+#define	IPTOS_CLASS_CS0		0x00
+#define	IPTOS_CLASS_CS1		0x20
+#define	IPTOS_CLASS_CS2		0x40
+#define	IPTOS_CLASS_CS3		0x60
+#define	IPTOS_CLASS_CS4		0x80
+#define	IPTOS_CLASS_CS5		0xa0
+#define	IPTOS_CLASS_CS6		0xc0
+#define	IPTOS_CLASS_CS7		0xe0
+#define	IPTOS_CLASS_DEFAULT	IPTOS_CLASS_CS0
+
+#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_LOWCOST		0x02
+#define	IPTOS_MINCOST		IPTOS_LOWCOST
+
+#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_DEBMEAS		0x40
+#define	IPOPT_MEASUREMENT       IPOPT_DEBMEAS
+#define	IPOPT_RESERVED2		0x60
+
+#define	IPOPT_EOL		0
+#define	IPOPT_END		IPOPT_EOL
+#define	IPOPT_NOP		1
+#define	IPOPT_NOOP		IPOPT_NOP
+
+#define	IPOPT_RR		7
+#define	IPOPT_TS		68
+#define	IPOPT_TIMESTAMP		IPOPT_TS
+#define	IPOPT_SECURITY		130
+#define	IPOPT_SEC		IPOPT_SECURITY
+#define	IPOPT_LSRR		131
+#define	IPOPT_SATID		136
+#define	IPOPT_SID		IPOPT_SATID
+#define	IPOPT_SSRR		137
+#define	IPOPT_RA		148
+
+#define	IPOPT_OPTVAL		0
+#define	IPOPT_OLEN		1
+#define	IPOPT_OFFSET		2
+#define	IPOPT_MINOFF		4
+
+#define	MAX_IPOPTLEN		40
+
+#define	IPOPT_TS_TSONLY		0
+#define	IPOPT_TS_TSANDADDR	1
+#define	IPOPT_TS_PRESPEC	3
+
+#define	IPOPT_SECUR_UNCLASS	0x0000
+#define	IPOPT_SECUR_CONFID	0xf135
+#define	IPOPT_SECUR_EFTO	0x789a
+#define	IPOPT_SECUR_MMMM	0xbc4d
+#define	IPOPT_SECUR_RESTR	0xaf13
+#define	IPOPT_SECUR_SECRET	0xd788
+#define	IPOPT_SECUR_TOPSECRET	0x6bc5
+
+#define	MAXTTL		255
+#define	IPDEFTTL	64
+#define	IPFRAGTTL	60
+#define	IPTTLDEC	1
+
+#define	IP_MSS		576
+
+#define __UAPI_DEF_IPHDR	0
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/netinet/ip6.h b/x86_64-linux-musl/include/netinet/ip6.h
new file mode 100644
index 0000000..50c626a
--- /dev/null
+++ b/x86_64-linux-musl/include/netinet/ip6.h
@@ -0,0 +1,141 @@
+#ifndef _NETINET_IP6_H
+#define _NETINET_IP6_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+#include <netinet/in.h>
+
+struct ip6_hdr {
+	union {
+		struct ip6_hdrctl {
+			uint32_t ip6_un1_flow;
+			uint16_t ip6_un1_plen;
+			uint8_t  ip6_un1_nxt;
+			uint8_t  ip6_un1_hlim;
+		} ip6_un1;
+		uint8_t ip6_un2_vfc;
+	} ip6_ctlun;
+	struct in6_addr ip6_src;
+	struct in6_addr ip6_dst;
+};
+
+#define ip6_vfc   ip6_ctlun.ip6_un2_vfc
+#define ip6_flow  ip6_ctlun.ip6_un1.ip6_un1_flow
+#define ip6_plen  ip6_ctlun.ip6_un1.ip6_un1_plen
+#define ip6_nxt   ip6_ctlun.ip6_un1.ip6_un1_nxt
+#define ip6_hlim  ip6_ctlun.ip6_un1.ip6_un1_hlim
+#define ip6_hops  ip6_ctlun.ip6_un1.ip6_un1_hlim
+
+struct ip6_ext {
+	uint8_t  ip6e_nxt;
+	uint8_t  ip6e_len;
+};
+
+struct ip6_hbh {
+	uint8_t  ip6h_nxt;
+	uint8_t  ip6h_len;
+};
+
+struct ip6_dest {
+	uint8_t  ip6d_nxt;
+	uint8_t  ip6d_len;
+};
+
+struct ip6_rthdr {
+	uint8_t  ip6r_nxt;
+	uint8_t  ip6r_len;
+	uint8_t  ip6r_type;
+	uint8_t  ip6r_segleft;
+};
+
+struct ip6_rthdr0 {
+	uint8_t  ip6r0_nxt;
+	uint8_t  ip6r0_len;
+	uint8_t  ip6r0_type;
+	uint8_t  ip6r0_segleft;
+	uint8_t  ip6r0_reserved;
+	uint8_t  ip6r0_slmap[3];
+	struct in6_addr ip6r0_addr[];
+};
+
+struct ip6_frag {
+	uint8_t   ip6f_nxt;
+	uint8_t   ip6f_reserved;
+	uint16_t  ip6f_offlg;
+	uint32_t  ip6f_ident;
+};
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define IP6F_OFF_MASK       0xfff8
+#define IP6F_RESERVED_MASK  0x0006
+#define IP6F_MORE_FRAG      0x0001
+#else
+#define IP6F_OFF_MASK       0xf8ff
+#define IP6F_RESERVED_MASK  0x0600
+#define IP6F_MORE_FRAG      0x0100
+#endif
+
+struct ip6_opt {
+	uint8_t  ip6o_type;
+	uint8_t  ip6o_len;
+};
+
+#define IP6OPT_TYPE(o)		((o) & 0xc0)
+#define IP6OPT_TYPE_SKIP	0x00
+#define IP6OPT_TYPE_DISCARD	0x40
+#define IP6OPT_TYPE_FORCEICMP	0x80
+#define IP6OPT_TYPE_ICMP	0xc0
+#define IP6OPT_TYPE_MUTABLE	0x20
+
+#define IP6OPT_PAD1	0
+#define IP6OPT_PADN	1
+
+#define IP6OPT_JUMBO		0xc2
+#define IP6OPT_NSAP_ADDR	0xc3
+#define IP6OPT_TUNNEL_LIMIT	0x04
+#define IP6OPT_ROUTER_ALERT	0x05
+
+struct ip6_opt_jumbo {
+	uint8_t  ip6oj_type;
+	uint8_t  ip6oj_len;
+	uint8_t  ip6oj_jumbo_len[4];
+};
+#define IP6OPT_JUMBO_LEN	6
+
+struct ip6_opt_nsap {
+	uint8_t  ip6on_type;
+	uint8_t  ip6on_len;
+	uint8_t  ip6on_src_nsap_len;
+	uint8_t  ip6on_dst_nsap_len;
+};
+
+struct ip6_opt_tunnel {
+	uint8_t  ip6ot_type;
+	uint8_t  ip6ot_len;
+	uint8_t  ip6ot_encap_limit;
+};
+
+struct ip6_opt_router {
+	uint8_t  ip6or_type;
+	uint8_t  ip6or_len;
+	uint8_t  ip6or_value[2];
+};
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define IP6_ALERT_MLD	0x0000
+#define IP6_ALERT_RSVP	0x0001
+#define IP6_ALERT_AN	0x0002
+#else
+#define IP6_ALERT_MLD	0x0000
+#define IP6_ALERT_RSVP	0x0100
+#define IP6_ALERT_AN	0x0200
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/netinet/ip_icmp.h b/x86_64-linux-musl/include/netinet/ip_icmp.h
new file mode 100644
index 0000000..b9e0df8
--- /dev/null
+++ b/x86_64-linux-musl/include/netinet/ip_icmp.h
@@ -0,0 +1,193 @@
+#ifndef _NETINET_IP_ICMP_H
+#define _NETINET_IP_ICMP_H
+
+#include <stdint.h>
+#include <netinet/in.h>
+#include <netinet/ip.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct icmphdr {
+	uint8_t type;
+	uint8_t code;
+	uint16_t checksum;
+	union {
+		struct {
+			uint16_t id;
+			uint16_t sequence;
+		} echo;
+		uint32_t gateway;
+		struct {
+			uint16_t __unused;
+			uint16_t mtu;
+		} frag;
+		uint8_t reserved[4];
+	} un;
+};
+
+#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
+
+
+struct icmp_ra_addr {
+	uint32_t ira_addr;
+	uint32_t ira_preference;
+};
+
+struct icmp {
+	uint8_t  icmp_type;
+	uint8_t  icmp_code;
+	uint16_t icmp_cksum;
+	union {
+		uint8_t ih_pptr;
+		struct in_addr ih_gwaddr;
+		struct ih_idseq {
+			uint16_t icd_id;
+			uint16_t icd_seq;
+		} ih_idseq;
+		uint32_t ih_void;
+
+		struct ih_pmtu {
+			uint16_t ipm_void;
+			uint16_t ipm_nextmtu;
+		} ih_pmtu;
+
+		struct ih_rtradv {
+			uint8_t irt_num_addrs;
+			uint8_t irt_wpa;
+			uint16_t irt_lifetime;
+		} ih_rtradv;
+	} icmp_hun;
+	union {
+		struct {
+			uint32_t its_otime;
+			uint32_t its_rtime;
+			uint32_t its_ttime;
+		} id_ts;
+		struct {
+			struct ip idi_ip;
+		} id_ip;
+		struct icmp_ra_addr id_radv;
+		uint32_t   id_mask;
+		uint8_t    id_data[1];
+	} icmp_dun;
+};
+
+#define	icmp_pptr	icmp_hun.ih_pptr
+#define	icmp_gwaddr	icmp_hun.ih_gwaddr
+#define	icmp_id		icmp_hun.ih_idseq.icd_id
+#define	icmp_seq	icmp_hun.ih_idseq.icd_seq
+#define	icmp_void	icmp_hun.ih_void
+#define	icmp_pmvoid	icmp_hun.ih_pmtu.ipm_void
+#define	icmp_nextmtu	icmp_hun.ih_pmtu.ipm_nextmtu
+#define	icmp_num_addrs	icmp_hun.ih_rtradv.irt_num_addrs
+#define	icmp_wpa	icmp_hun.ih_rtradv.irt_wpa
+#define	icmp_lifetime	icmp_hun.ih_rtradv.irt_lifetime
+#define	icmp_otime	icmp_dun.id_ts.its_otime
+#define	icmp_rtime	icmp_dun.id_ts.its_rtime
+#define	icmp_ttime	icmp_dun.id_ts.its_ttime
+#define	icmp_ip		icmp_dun.id_ip.idi_ip
+#define	icmp_radv	icmp_dun.id_radv
+#define	icmp_mask	icmp_dun.id_mask
+#define	icmp_data	icmp_dun.id_data
+
+#define	ICMP_MINLEN	8
+#define	ICMP_TSLEN	(8 + 3 * sizeof (n_time))
+#define	ICMP_MASKLEN	12
+#define	ICMP_ADVLENMIN	(8 + sizeof (struct ip) + 8)
+#define	ICMP_ADVLEN(p)	(8 + ((p)->icmp_ip.ip_hl << 2) + 8)
+
+#define	ICMP_UNREACH		3
+#define	ICMP_SOURCEQUENCH	4
+#define	ICMP_ROUTERADVERT	9
+#define	ICMP_ROUTERSOLICIT	10
+#define	ICMP_TIMXCEED		11
+#define	ICMP_PARAMPROB		12
+#define	ICMP_TSTAMP		13
+#define	ICMP_TSTAMPREPLY	14
+#define	ICMP_IREQ		15
+#define	ICMP_IREQREPLY		16
+#define	ICMP_MASKREQ		17
+#define	ICMP_MASKREPLY		18
+#define	ICMP_MAXTYPE		18
+
+#define	ICMP_UNREACH_NET	        0
+#define	ICMP_UNREACH_HOST	        1
+#define	ICMP_UNREACH_PROTOCOL	        2
+#define	ICMP_UNREACH_PORT	        3
+#define	ICMP_UNREACH_NEEDFRAG	        4
+#define	ICMP_UNREACH_SRCFAIL	        5
+#define	ICMP_UNREACH_NET_UNKNOWN        6
+#define	ICMP_UNREACH_HOST_UNKNOWN       7
+#define	ICMP_UNREACH_ISOLATED	        8
+#define	ICMP_UNREACH_NET_PROHIB	        9
+#define	ICMP_UNREACH_HOST_PROHIB        10
+#define	ICMP_UNREACH_TOSNET	        11
+#define	ICMP_UNREACH_TOSHOST	        12
+#define	ICMP_UNREACH_FILTER_PROHIB      13
+#define	ICMP_UNREACH_HOST_PRECEDENCE    14
+#define	ICMP_UNREACH_PRECEDENCE_CUTOFF  15
+
+#define	ICMP_REDIRECT_NET	0
+#define	ICMP_REDIRECT_HOST	1
+#define	ICMP_REDIRECT_TOSNET	2
+#define	ICMP_REDIRECT_TOSHOST	3
+
+#define	ICMP_TIMXCEED_INTRANS	0
+#define	ICMP_TIMXCEED_REASS	1
+
+#define	ICMP_PARAMPROB_OPTABSENT 1
+
+#define	ICMP_INFOTYPE(type) \
+	((type) == ICMP_ECHOREPLY || (type) == ICMP_ECHO || \
+	(type) == ICMP_ROUTERADVERT || (type) == ICMP_ROUTERSOLICIT || \
+	(type) == ICMP_TSTAMP || (type) == ICMP_TSTAMPREPLY || \
+	(type) == ICMP_IREQ || (type) == ICMP_IREQREPLY || \
+	(type) == ICMP_MASKREQ || (type) == ICMP_MASKREPLY)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/netinet/tcp.h b/x86_64-linux-musl/include/netinet/tcp.h
new file mode 100644
index 0000000..b7b997f
--- /dev/null
+++ b/x86_64-linux-musl/include/netinet/tcp.h
@@ -0,0 +1,294 @@
+#ifndef _NETINET_TCP_H
+#define _NETINET_TCP_H
+
+#include <features.h>
+
+#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_TX_DELAY     37
+
+#define TCP_CM_INQ TCP_INQ
+
+#define TCP_ESTABLISHED  1
+#define TCP_SYN_SENT     2
+#define TCP_SYN_RECV     3
+#define TCP_FIN_WAIT1    4
+#define TCP_FIN_WAIT2    5
+#define TCP_TIME_WAIT    6
+#define TCP_CLOSE        7
+#define TCP_CLOSE_WAIT   8
+#define TCP_LAST_ACK     9
+#define TCP_LISTEN       10
+#define TCP_CLOSING      11
+
+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,
+};
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define TCPOPT_EOL              0
+#define TCPOPT_NOP              1
+#define TCPOPT_MAXSEG           2
+#define TCPOPT_WINDOW           3
+#define TCPOPT_SACK_PERMITTED   4
+#define TCPOPT_SACK             5
+#define TCPOPT_TIMESTAMP        8
+#define TCPOLEN_SACK_PERMITTED  2
+#define TCPOLEN_WINDOW          3
+#define TCPOLEN_MAXSEG          4
+#define TCPOLEN_TIMESTAMP       10
+
+#define SOL_TCP 6
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <stdint.h>
+
+typedef uint32_t tcp_seq;
+
+#define TH_FIN 0x01
+#define TH_SYN 0x02
+#define TH_RST 0x04
+#define TH_PUSH 0x08
+#define TH_ACK 0x10
+#define TH_URG 0x20
+
+struct tcphdr {
+#ifdef _GNU_SOURCE
+#ifdef __GNUC__
+	__extension__
+#endif
+	union { struct {
+
+	uint16_t source;
+	uint16_t dest;
+	uint32_t seq;
+	uint32_t ack_seq;
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+	uint16_t res1:4;
+	uint16_t doff:4;
+	uint16_t fin:1;
+	uint16_t syn:1;
+	uint16_t rst:1;
+	uint16_t psh:1;
+	uint16_t ack:1;
+	uint16_t urg:1;
+	uint16_t res2:2;
+#else
+	uint16_t doff:4;
+	uint16_t res1:4;
+	uint16_t res2:2;
+	uint16_t urg:1;
+	uint16_t ack:1;
+	uint16_t psh:1;
+	uint16_t rst:1;
+	uint16_t syn:1;
+	uint16_t fin:1;
+#endif
+	uint16_t window;
+	uint16_t check;
+	uint16_t urg_ptr;
+
+	}; struct {
+#endif
+
+	uint16_t th_sport;
+	uint16_t th_dport;
+	uint32_t th_seq;
+	uint32_t th_ack;
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+	uint8_t th_x2:4;
+	uint8_t th_off:4;
+#else
+	uint8_t th_off:4;
+	uint8_t th_x2:4;
+#endif
+	uint8_t th_flags;
+	uint16_t th_win;
+	uint16_t th_sum;
+	uint16_t th_urp;
+
+#ifdef _GNU_SOURCE
+	}; };
+#endif
+};
+#endif
+
+#ifdef _GNU_SOURCE
+#define TCPI_OPT_TIMESTAMPS	1
+#define TCPI_OPT_SACK		2
+#define TCPI_OPT_WSCALE		4
+#define TCPI_OPT_ECN		8
+
+#define TCP_CA_Open		0
+#define TCP_CA_Disorder		1
+#define TCP_CA_CWR		2
+#define TCP_CA_Recovery		3
+#define TCP_CA_Loss		4
+
+enum tcp_fastopen_client_fail {
+	TFO_STATUS_UNSPEC,
+	TFO_COOKIE_UNAVAILABLE,
+	TFO_DATA_NOT_ACKED,
+	TFO_SYN_RETRANSMITTED,
+};
+
+struct tcp_info {
+	uint8_t tcpi_state;
+	uint8_t tcpi_ca_state;
+	uint8_t tcpi_retransmits;
+	uint8_t tcpi_probes;
+	uint8_t tcpi_backoff;
+	uint8_t tcpi_options;
+	uint8_t tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
+	uint8_t tcpi_delivery_rate_app_limited : 1, tcpi_fastopen_client_fail : 2;
+	uint32_t tcpi_rto;
+	uint32_t tcpi_ato;
+	uint32_t tcpi_snd_mss;
+	uint32_t tcpi_rcv_mss;
+	uint32_t tcpi_unacked;
+	uint32_t tcpi_sacked;
+	uint32_t tcpi_lost;
+	uint32_t tcpi_retrans;
+	uint32_t tcpi_fackets;
+	uint32_t tcpi_last_data_sent;
+	uint32_t tcpi_last_ack_sent;
+	uint32_t tcpi_last_data_recv;
+	uint32_t tcpi_last_ack_recv;
+	uint32_t tcpi_pmtu;
+	uint32_t tcpi_rcv_ssthresh;
+	uint32_t tcpi_rtt;
+	uint32_t tcpi_rttvar;
+	uint32_t tcpi_snd_ssthresh;
+	uint32_t tcpi_snd_cwnd;
+	uint32_t tcpi_advmss;
+	uint32_t tcpi_reordering;
+	uint32_t tcpi_rcv_rtt;
+	uint32_t tcpi_rcv_space;
+	uint32_t tcpi_total_retrans;
+	uint64_t tcpi_pacing_rate;
+	uint64_t tcpi_max_pacing_rate;
+	uint64_t tcpi_bytes_acked;
+	uint64_t tcpi_bytes_received;
+	uint32_t tcpi_segs_out;
+	uint32_t tcpi_segs_in;
+	uint32_t tcpi_notsent_bytes;
+	uint32_t tcpi_min_rtt;
+	uint32_t tcpi_data_segs_in;
+	uint32_t tcpi_data_segs_out;
+	uint64_t tcpi_delivery_rate;
+	uint64_t tcpi_busy_time;
+	uint64_t tcpi_rwnd_limited;
+	uint64_t tcpi_sndbuf_limited;
+	uint32_t tcpi_delivered;
+	uint32_t tcpi_delivered_ce;
+	uint64_t tcpi_bytes_sent;
+	uint64_t tcpi_bytes_retrans;
+	uint32_t tcpi_dsack_dups;
+	uint32_t tcpi_reord_seen;
+	uint32_t tcpi_rcv_ooopack;
+	uint32_t tcpi_snd_wnd;
+};
+
+#define TCP_MD5SIG_MAXKEYLEN    80
+
+#define TCP_MD5SIG_FLAG_PREFIX  0x1
+#define TCP_MD5SIG_FLAG_IFINDEX 0x2
+
+struct tcp_md5sig {
+	struct sockaddr_storage tcpm_addr;
+	uint8_t tcpm_flags;
+	uint8_t tcpm_prefixlen;
+	uint16_t tcpm_keylen;
+	int tcpm_ifindex;
+	uint8_t tcpm_key[TCP_MD5SIG_MAXKEYLEN];
+};
+
+struct tcp_diag_md5sig {
+	uint8_t tcpm_family;
+	uint8_t tcpm_prefixlen;
+	uint16_t tcpm_keylen;
+	uint32_t tcpm_addr[4];
+	uint8_t tcpm_key[TCP_MD5SIG_MAXKEYLEN];
+};
+
+#define TCP_REPAIR_ON		1
+#define TCP_REPAIR_OFF		0
+#define TCP_REPAIR_OFF_NO_WP	-1
+
+struct tcp_repair_window {
+	uint32_t snd_wl1;
+	uint32_t snd_wnd;
+	uint32_t max_window;
+	uint32_t rcv_wnd;
+	uint32_t rcv_wup;
+};
+
+struct tcp_zerocopy_receive {
+	uint64_t address;
+	uint32_t length;
+	uint32_t recv_skip_hint;
+	uint32_t inq;
+	int32_t err;
+};
+
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/netinet/udp.h b/x86_64-linux-musl/include/netinet/udp.h
new file mode 100644
index 0000000..40c3f20
--- /dev/null
+++ b/x86_64-linux-musl/include/netinet/udp.h
@@ -0,0 +1,46 @@
+#ifndef _NETINET_UDP_H
+#define _NETINET_UDP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <stdint.h>
+
+#ifdef _GNU_SOURCE
+#define uh_sport source
+#define uh_dport dest
+#define uh_ulen len
+#define uh_sum check
+#endif
+
+struct udphdr {
+	uint16_t uh_sport;
+	uint16_t uh_dport;
+	uint16_t uh_ulen;
+	uint16_t uh_sum;
+};
+
+#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
+
+#define SOL_UDP            17
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/netpacket/packet.h b/x86_64-linux-musl/include/netpacket/packet.h
new file mode 100644
index 0000000..b36e092
--- /dev/null
+++ b/x86_64-linux-musl/include/netpacket/packet.h
@@ -0,0 +1,62 @@
+#ifndef _NETPACKET_PACKET_H
+#define _NETPACKET_PACKET_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct sockaddr_ll {
+	unsigned short sll_family, sll_protocol;
+	int sll_ifindex;
+	unsigned short sll_hatype;
+	unsigned char sll_pkttype, sll_halen;
+	unsigned char sll_addr[8];
+};
+
+struct packet_mreq {
+	int mr_ifindex;
+	unsigned short int mr_type,  mr_alen;
+	unsigned char mr_address[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_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_MR_MULTICAST	0
+#define PACKET_MR_PROMISC	1
+#define PACKET_MR_ALLMULTI	2
+#define PACKET_MR_UNICAST	3
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/nl_types.h b/x86_64-linux-musl/include/nl_types.h
new file mode 100644
index 0000000..7c2d48e
--- /dev/null
+++ b/x86_64-linux-musl/include/nl_types.h
@@ -0,0 +1,22 @@
+#ifndef _NL_TYPES_H
+#define _NL_TYPES_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define NL_SETD 1
+#define NL_CAT_LOCALE 1
+
+typedef int nl_item;
+typedef void *nl_catd;
+
+nl_catd catopen (const char *, int);
+char *catgets (nl_catd, int, int, const char *);
+int catclose (nl_catd);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/paths.h b/x86_64-linux-musl/include/paths.h
new file mode 100644
index 0000000..67de6b3
--- /dev/null
+++ b/x86_64-linux-musl/include/paths.h
@@ -0,0 +1,31 @@
+#ifndef _PATHS_H
+#define _PATHS_H
+
+#define	_PATH_DEFPATH "/usr/local/bin:/bin:/usr/bin"
+#define	_PATH_STDPATH "/bin:/usr/bin:/sbin:/usr/sbin"
+
+#define	_PATH_BSHELL	"/bin/sh"
+#define	_PATH_CONSOLE	"/dev/console"
+#define	_PATH_DEVNULL	"/dev/null"
+#define	_PATH_KLOG	"/proc/kmsg"
+#define	_PATH_LASTLOG	"/var/log/lastlog"
+#define	_PATH_MAILDIR	"/var/mail"
+#define	_PATH_MAN	"/usr/share/man"
+#define	_PATH_MNTTAB	"/etc/fstab"
+#define	_PATH_MOUNTED	"/etc/mtab"
+#define	_PATH_NOLOGIN	"/etc/nologin"
+#define	_PATH_SENDMAIL	"/usr/sbin/sendmail"
+#define	_PATH_SHADOW	"/etc/shadow"
+#define	_PATH_SHELLS	"/etc/shells"
+#define	_PATH_TTY	"/dev/tty"
+#define _PATH_UTMP	"/dev/null/utmp"
+#define	_PATH_VI	"/usr/bin/vi"
+#define _PATH_WTMP	"/dev/null/wtmp"
+
+#define	_PATH_DEV	"/dev/"
+#define	_PATH_TMP	"/tmp/"
+#define	_PATH_VARDB	"/var/lib/misc/"
+#define	_PATH_VARRUN	"/var/run/"
+#define	_PATH_VARTMP	"/var/tmp/"
+
+#endif
diff --git a/x86_64-linux-musl/include/poll.h b/x86_64-linux-musl/include/poll.h
new file mode 100644
index 0000000..472e4b8
--- /dev/null
+++ b/x86_64-linux-musl/include/poll.h
@@ -0,0 +1,57 @@
+#ifndef	_POLL_H
+#define	_POLL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#include <bits/poll.h>
+
+#define POLLIN     0x001
+#define POLLPRI    0x002
+#define POLLOUT    0x004
+#define POLLERR    0x008
+#define POLLHUP    0x010
+#define POLLNVAL   0x020
+#define POLLRDNORM 0x040
+#define POLLRDBAND 0x080
+#ifndef POLLWRNORM
+#define POLLWRNORM 0x100
+#define POLLWRBAND 0x200
+#endif
+#ifndef POLLMSG
+#define POLLMSG    0x400
+#define POLLRDHUP  0x2000
+#endif
+
+typedef unsigned long nfds_t;
+
+struct pollfd {
+	int fd;
+	short events;
+	short revents;
+};
+
+int poll (struct pollfd *, nfds_t, int);
+
+#ifdef _GNU_SOURCE
+#define __NEED_time_t
+#define __NEED_struct_timespec
+#define __NEED_sigset_t
+#include <bits/alltypes.h>
+int ppoll(struct pollfd *, nfds_t, const struct timespec *, const sigset_t *);
+#endif
+
+#if _REDIR_TIME64
+#ifdef _GNU_SOURCE
+__REDIR(ppoll, __ppoll_time64);
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/pthread.h b/x86_64-linux-musl/include/pthread.h
new file mode 100644
index 0000000..89fd9ff
--- /dev/null
+++ b/x86_64-linux-musl/include/pthread.h
@@ -0,0 +1,244 @@
+#ifndef _PTHREAD_H
+#define _PTHREAD_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_time_t
+#define __NEED_clockid_t
+#define __NEED_struct_timespec
+#define __NEED_sigset_t
+#define __NEED_pthread_t
+#define __NEED_pthread_attr_t
+#define __NEED_pthread_mutexattr_t
+#define __NEED_pthread_condattr_t
+#define __NEED_pthread_rwlockattr_t
+#define __NEED_pthread_barrierattr_t
+#define __NEED_pthread_mutex_t
+#define __NEED_pthread_cond_t
+#define __NEED_pthread_rwlock_t
+#define __NEED_pthread_barrier_t
+#define __NEED_pthread_spinlock_t
+#define __NEED_pthread_key_t
+#define __NEED_pthread_once_t
+#define __NEED_size_t
+
+#include <bits/alltypes.h>
+
+#include <sched.h>
+#include <time.h>
+
+#define PTHREAD_CREATE_JOINABLE 0
+#define PTHREAD_CREATE_DETACHED 1
+
+#define PTHREAD_MUTEX_NORMAL 0
+#define PTHREAD_MUTEX_DEFAULT 0
+#define PTHREAD_MUTEX_RECURSIVE 1
+#define PTHREAD_MUTEX_ERRORCHECK 2
+
+#define PTHREAD_MUTEX_STALLED 0
+#define PTHREAD_MUTEX_ROBUST 1
+
+#define PTHREAD_PRIO_NONE 0
+#define PTHREAD_PRIO_INHERIT 1
+#define PTHREAD_PRIO_PROTECT 2
+
+#define PTHREAD_INHERIT_SCHED 0
+#define PTHREAD_EXPLICIT_SCHED 1
+
+#define PTHREAD_SCOPE_SYSTEM 0
+#define PTHREAD_SCOPE_PROCESS 1
+
+#define PTHREAD_PROCESS_PRIVATE 0
+#define PTHREAD_PROCESS_SHARED 1
+
+
+#define PTHREAD_MUTEX_INITIALIZER {{{0}}}
+#define PTHREAD_RWLOCK_INITIALIZER {{{0}}}
+#define PTHREAD_COND_INITIALIZER {{{0}}}
+#define PTHREAD_ONCE_INIT 0
+
+
+#define PTHREAD_CANCEL_ENABLE 0
+#define PTHREAD_CANCEL_DISABLE 1
+#define PTHREAD_CANCEL_MASKED 2
+
+#define PTHREAD_CANCEL_DEFERRED 0
+#define PTHREAD_CANCEL_ASYNCHRONOUS 1
+
+#define PTHREAD_CANCELED ((void *)-1)
+
+
+#define PTHREAD_BARRIER_SERIAL_THREAD (-1)
+
+
+#define PTHREAD_NULL ((pthread_t)0)
+
+
+int pthread_create(pthread_t *__restrict, const pthread_attr_t *__restrict, void *(*)(void *), void *__restrict);
+int pthread_detach(pthread_t);
+_Noreturn void pthread_exit(void *);
+int pthread_join(pthread_t, void **);
+
+#ifdef __GNUC__
+__attribute__((const))
+#endif
+pthread_t pthread_self(void);
+
+int pthread_equal(pthread_t, pthread_t);
+#ifndef __cplusplus
+#define pthread_equal(x,y) ((x)==(y))
+#endif
+
+int pthread_setcancelstate(int, int *);
+int pthread_setcanceltype(int, int *);
+void pthread_testcancel(void);
+int pthread_cancel(pthread_t);
+
+int pthread_getschedparam(pthread_t, int *__restrict, struct sched_param *__restrict);
+int pthread_setschedparam(pthread_t, int, const struct sched_param *);
+int pthread_setschedprio(pthread_t, int);
+
+int pthread_once(pthread_once_t *, void (*)(void));
+
+int pthread_mutex_init(pthread_mutex_t *__restrict, const pthread_mutexattr_t *__restrict);
+int pthread_mutex_lock(pthread_mutex_t *);
+int pthread_mutex_unlock(pthread_mutex_t *);
+int pthread_mutex_trylock(pthread_mutex_t *);
+int pthread_mutex_timedlock(pthread_mutex_t *__restrict, const struct timespec *__restrict);
+int pthread_mutex_destroy(pthread_mutex_t *);
+int pthread_mutex_consistent(pthread_mutex_t *);
+
+int pthread_mutex_getprioceiling(const pthread_mutex_t *__restrict, int *__restrict);
+int pthread_mutex_setprioceiling(pthread_mutex_t *__restrict, int, int *__restrict);
+
+int pthread_cond_init(pthread_cond_t *__restrict, const pthread_condattr_t *__restrict);
+int pthread_cond_destroy(pthread_cond_t *);
+int pthread_cond_wait(pthread_cond_t *__restrict, pthread_mutex_t *__restrict);
+int pthread_cond_timedwait(pthread_cond_t *__restrict, pthread_mutex_t *__restrict, const struct timespec *__restrict);
+int pthread_cond_broadcast(pthread_cond_t *);
+int pthread_cond_signal(pthread_cond_t *);
+
+int pthread_rwlock_init(pthread_rwlock_t *__restrict, const pthread_rwlockattr_t *__restrict);
+int pthread_rwlock_destroy(pthread_rwlock_t *);
+int pthread_rwlock_rdlock(pthread_rwlock_t *);
+int pthread_rwlock_tryrdlock(pthread_rwlock_t *);
+int pthread_rwlock_timedrdlock(pthread_rwlock_t *__restrict, const struct timespec *__restrict);
+int pthread_rwlock_wrlock(pthread_rwlock_t *);
+int pthread_rwlock_trywrlock(pthread_rwlock_t *);
+int pthread_rwlock_timedwrlock(pthread_rwlock_t *__restrict, const struct timespec *__restrict);
+int pthread_rwlock_unlock(pthread_rwlock_t *);
+
+int pthread_spin_init(pthread_spinlock_t *, int);
+int pthread_spin_destroy(pthread_spinlock_t *);
+int pthread_spin_lock(pthread_spinlock_t *);
+int pthread_spin_trylock(pthread_spinlock_t *);
+int pthread_spin_unlock(pthread_spinlock_t *);
+
+int pthread_barrier_init(pthread_barrier_t *__restrict, const pthread_barrierattr_t *__restrict, unsigned);
+int pthread_barrier_destroy(pthread_barrier_t *);
+int pthread_barrier_wait(pthread_barrier_t *);
+
+int pthread_key_create(pthread_key_t *, void (*)(void *));
+int pthread_key_delete(pthread_key_t);
+void *pthread_getspecific(pthread_key_t);
+int pthread_setspecific(pthread_key_t, const void *);
+
+int pthread_attr_init(pthread_attr_t *);
+int pthread_attr_destroy(pthread_attr_t *);
+
+int pthread_attr_getguardsize(const pthread_attr_t *__restrict, size_t *__restrict);
+int pthread_attr_setguardsize(pthread_attr_t *, size_t);
+int pthread_attr_getstacksize(const pthread_attr_t *__restrict, size_t *__restrict);
+int pthread_attr_setstacksize(pthread_attr_t *, size_t);
+int pthread_attr_getdetachstate(const pthread_attr_t *, int *);
+int pthread_attr_setdetachstate(pthread_attr_t *, int);
+int pthread_attr_getstack(const pthread_attr_t *__restrict, void **__restrict, size_t *__restrict);
+int pthread_attr_setstack(pthread_attr_t *, void *, size_t);
+int pthread_attr_getscope(const pthread_attr_t *__restrict, int *__restrict);
+int pthread_attr_setscope(pthread_attr_t *, int);
+int pthread_attr_getschedpolicy(const pthread_attr_t *__restrict, int *__restrict);
+int pthread_attr_setschedpolicy(pthread_attr_t *, int);
+int pthread_attr_getschedparam(const pthread_attr_t *__restrict, struct sched_param *__restrict);
+int pthread_attr_setschedparam(pthread_attr_t *__restrict, const struct sched_param *__restrict);
+int pthread_attr_getinheritsched(const pthread_attr_t *__restrict, int *__restrict);
+int pthread_attr_setinheritsched(pthread_attr_t *, int);
+
+int pthread_mutexattr_destroy(pthread_mutexattr_t *);
+int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *__restrict, int *__restrict);
+int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *__restrict, int *__restrict);
+int pthread_mutexattr_getpshared(const pthread_mutexattr_t *__restrict, int *__restrict);
+int pthread_mutexattr_getrobust(const pthread_mutexattr_t *__restrict, int *__restrict);
+int pthread_mutexattr_gettype(const pthread_mutexattr_t *__restrict, int *__restrict);
+int pthread_mutexattr_init(pthread_mutexattr_t *);
+int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *, int);
+int pthread_mutexattr_setprotocol(pthread_mutexattr_t *, int);
+int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int);
+int pthread_mutexattr_setrobust(pthread_mutexattr_t *, int);
+int pthread_mutexattr_settype(pthread_mutexattr_t *, int);
+
+int pthread_condattr_init(pthread_condattr_t *);
+int pthread_condattr_destroy(pthread_condattr_t *);
+int pthread_condattr_setclock(pthread_condattr_t *, clockid_t);
+int pthread_condattr_setpshared(pthread_condattr_t *, int);
+int pthread_condattr_getclock(const pthread_condattr_t *__restrict, clockid_t *__restrict);
+int pthread_condattr_getpshared(const pthread_condattr_t *__restrict, int *__restrict);
+
+int pthread_rwlockattr_init(pthread_rwlockattr_t *);
+int pthread_rwlockattr_destroy(pthread_rwlockattr_t *);
+int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, int);
+int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *__restrict, int *__restrict);
+
+int pthread_barrierattr_destroy(pthread_barrierattr_t *);
+int pthread_barrierattr_getpshared(const pthread_barrierattr_t *__restrict, int *__restrict);
+int pthread_barrierattr_init(pthread_barrierattr_t *);
+int pthread_barrierattr_setpshared(pthread_barrierattr_t *, int);
+
+int pthread_atfork(void (*)(void), void (*)(void), void (*)(void));
+
+int pthread_getconcurrency(void);
+int pthread_setconcurrency(int);
+
+int pthread_getcpuclockid(pthread_t, clockid_t *);
+
+struct __ptcb {
+	void (*__f)(void *);
+	void *__x;
+	struct __ptcb *__next;
+};
+
+void _pthread_cleanup_push(struct __ptcb *, void (*)(void *), void *);
+void _pthread_cleanup_pop(struct __ptcb *, int);
+
+#define pthread_cleanup_push(f, x) do { struct __ptcb __cb; _pthread_cleanup_push(&__cb, f, x);
+#define pthread_cleanup_pop(r) _pthread_cleanup_pop(&__cb, (r)); } while(0)
+
+#ifdef _GNU_SOURCE
+struct cpu_set_t;
+int pthread_getaffinity_np(pthread_t, size_t, struct cpu_set_t *);
+int pthread_setaffinity_np(pthread_t, size_t, const struct cpu_set_t *);
+int pthread_getattr_np(pthread_t, pthread_attr_t *);
+int pthread_setname_np(pthread_t, const char *);
+int pthread_getname_np(pthread_t, char *, size_t);
+int pthread_getattr_default_np(pthread_attr_t *);
+int pthread_setattr_default_np(const pthread_attr_t *);
+int pthread_tryjoin_np(pthread_t, void **);
+int pthread_timedjoin_np(pthread_t, void **, const struct timespec *);
+#endif
+
+#if _REDIR_TIME64
+__REDIR(pthread_mutex_timedlock, __pthread_mutex_timedlock_time64);
+__REDIR(pthread_cond_timedwait, __pthread_cond_timedwait_time64);
+__REDIR(pthread_rwlock_timedrdlock, __pthread_rwlock_timedrdlock_time64);
+__REDIR(pthread_rwlock_timedwrlock, __pthread_rwlock_timedwrlock_time64);
+#ifdef _GNU_SOURCE
+__REDIR(pthread_timedjoin_np, __pthread_timedjoin_np_time64);
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/pty.h b/x86_64-linux-musl/include/pty.h
new file mode 100644
index 0000000..db63853
--- /dev/null
+++ b/x86_64-linux-musl/include/pty.h
@@ -0,0 +1,18 @@
+#ifndef	_PTY_H
+#define	_PTY_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <termios.h>
+#include <sys/ioctl.h>
+
+int openpty(int *, int *, char *, const struct termios *, const struct winsize *);
+int forkpty(int *, char *, const struct termios *, const struct winsize *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/pwd.h b/x86_64-linux-musl/include/pwd.h
new file mode 100644
index 0000000..4f470b5
--- /dev/null
+++ b/x86_64-linux-musl/include/pwd.h
@@ -0,0 +1,50 @@
+#ifndef _PWD_H
+#define _PWD_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_size_t
+#define __NEED_uid_t
+#define __NEED_gid_t
+
+#ifdef _GNU_SOURCE
+#define __NEED_FILE
+#endif
+
+#include <bits/alltypes.h>
+
+struct passwd {
+	char *pw_name;
+	char *pw_passwd;
+	uid_t pw_uid;
+	gid_t pw_gid;
+	char *pw_gecos;
+	char *pw_dir;
+	char *pw_shell;
+};
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+void setpwent (void);
+void endpwent (void);
+struct passwd *getpwent (void);
+#endif
+
+struct passwd *getpwuid (uid_t);
+struct passwd *getpwnam (const char *);
+int getpwuid_r (uid_t, struct passwd *, char *, size_t, struct passwd **);
+int getpwnam_r (const char *, struct passwd *, char *, size_t, struct passwd **);
+
+#ifdef _GNU_SOURCE
+struct passwd *fgetpwent(FILE *);
+int putpwent(const struct passwd *, FILE *);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/rdma/bnxt_re-abi.h b/x86_64-linux-musl/include/rdma/bnxt_re-abi.h
new file mode 100644
index 0000000..62ba685
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/bnxt_re-abi.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 __BNXT_RE_UVERBS_ABI_H__
+#define __BNXT_RE_UVERBS_ABI_H__
+#include <linux/types.h>
+#define BNXT_RE_ABI_VERSION 1
+#define BNXT_RE_CHIP_ID0_CHIP_NUM_SFT 0x00
+#define BNXT_RE_CHIP_ID0_CHIP_REV_SFT 0x10
+#define BNXT_RE_CHIP_ID0_CHIP_MET_SFT 0x18
+enum {
+  BNXT_RE_UCNTX_CMASK_HAVE_CCTX = 0x1ULL,
+  BNXT_RE_UCNTX_CMASK_HAVE_MODE = 0x02ULL,
+};
+enum bnxt_re_wqe_mode {
+  BNXT_QPLIB_WQE_MODE_STATIC = 0x00,
+  BNXT_QPLIB_WQE_MODE_VARIABLE = 0x01,
+  BNXT_QPLIB_WQE_MODE_INVALID = 0x02,
+};
+struct bnxt_re_uctx_resp {
+  __u32 dev_id;
+  __u32 max_qp;
+  __u32 pg_size;
+  __u32 cqe_sz;
+  __u32 max_cqd;
+  __u32 rsvd;
+  __aligned_u64 comp_mask;
+  __u32 chip_id0;
+  __u32 chip_id1;
+  __u32 mode;
+  __u32 rsvd1;
+};
+struct bnxt_re_pd_resp {
+  __u32 pdid;
+  __u32 dpi;
+  __u64 dbr;
+} __attribute__((packed, aligned(4)));
+struct bnxt_re_cq_req {
+  __aligned_u64 cq_va;
+  __aligned_u64 cq_handle;
+};
+struct bnxt_re_cq_resp {
+  __u32 cqid;
+  __u32 tail;
+  __u32 phase;
+  __u32 rsvd;
+};
+struct bnxt_re_qp_req {
+  __aligned_u64 qpsva;
+  __aligned_u64 qprva;
+  __aligned_u64 qp_handle;
+};
+struct bnxt_re_qp_resp {
+  __u32 qpid;
+  __u32 rsvd;
+};
+struct bnxt_re_srq_req {
+  __aligned_u64 srqva;
+  __aligned_u64 srq_handle;
+};
+struct bnxt_re_srq_resp {
+  __u32 srqid;
+};
+enum bnxt_re_shpg_offt {
+  BNXT_RE_BEG_RESV_OFFT = 0x00,
+  BNXT_RE_AVID_OFFT = 0x10,
+  BNXT_RE_AVID_SIZE = 0x04,
+  BNXT_RE_END_RESV_OFFT = 0xFF0
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/cxgb4-abi.h b/x86_64-linux-musl/include/rdma/cxgb4-abi.h
new file mode 100644
index 0000000..5433ce6
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/cxgb4-abi.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 CXGB4_ABI_USER_H
+#define CXGB4_ABI_USER_H
+#include <linux/types.h>
+#define C4IW_UVERBS_ABI_VERSION 3
+enum {
+  C4IW_64B_CQE = (1 << 0)
+};
+struct c4iw_create_cq {
+  __u32 flags;
+  __u32 reserved;
+};
+struct c4iw_create_cq_resp {
+  __aligned_u64 key;
+  __aligned_u64 gts_key;
+  __aligned_u64 memsize;
+  __u32 cqid;
+  __u32 size;
+  __u32 qid_mask;
+  __u32 flags;
+};
+enum {
+  C4IW_QPF_ONCHIP = (1 << 0),
+  C4IW_QPF_WRITE_W_IMM = (1 << 1)
+};
+struct c4iw_create_qp_resp {
+  __aligned_u64 ma_sync_key;
+  __aligned_u64 sq_key;
+  __aligned_u64 rq_key;
+  __aligned_u64 sq_db_gts_key;
+  __aligned_u64 rq_db_gts_key;
+  __aligned_u64 sq_memsize;
+  __aligned_u64 rq_memsize;
+  __u32 sqid;
+  __u32 rqid;
+  __u32 sq_size;
+  __u32 rq_size;
+  __u32 qid_mask;
+  __u32 flags;
+};
+struct c4iw_create_srq_resp {
+  __aligned_u64 srq_key;
+  __aligned_u64 srq_db_gts_key;
+  __aligned_u64 srq_memsize;
+  __u32 srqid;
+  __u32 srq_size;
+  __u32 rqt_abs_idx;
+  __u32 qid_mask;
+  __u32 flags;
+  __u32 reserved;
+};
+enum {
+  T4_SRQ_LIMIT_SUPPORT = 1 << 0,
+};
+struct c4iw_alloc_ucontext_resp {
+  __aligned_u64 status_page_key;
+  __u32 status_page_size;
+  __u32 reserved;
+};
+struct c4iw_alloc_pd_resp {
+  __u32 pdid;
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/efa-abi.h b/x86_64-linux-musl/include/rdma/efa-abi.h
new file mode 100644
index 0000000..4b6842b
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/efa-abi.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 EFA_ABI_USER_H
+#define EFA_ABI_USER_H
+#include <linux/types.h>
+#define EFA_UVERBS_ABI_VERSION 1
+enum {
+  EFA_ALLOC_UCONTEXT_CMD_COMP_TX_BATCH = 1 << 0,
+  EFA_ALLOC_UCONTEXT_CMD_COMP_MIN_SQ_WR = 1 << 1,
+};
+struct efa_ibv_alloc_ucontext_cmd {
+  __u32 comp_mask;
+  __u8 reserved_20[4];
+};
+enum efa_ibv_user_cmds_supp_udata {
+  EFA_USER_CMDS_SUPP_UDATA_QUERY_DEVICE = 1 << 0,
+  EFA_USER_CMDS_SUPP_UDATA_CREATE_AH = 1 << 1,
+};
+struct efa_ibv_alloc_ucontext_resp {
+  __u32 comp_mask;
+  __u32 cmds_supp_udata_mask;
+  __u16 sub_cqs_per_cq;
+  __u16 inline_buf_size;
+  __u32 max_llq_size;
+  __u16 max_tx_batch;
+  __u16 min_sq_wr;
+  __u8 reserved_a0[4];
+};
+struct efa_ibv_alloc_pd_resp {
+  __u32 comp_mask;
+  __u16 pdn;
+  __u8 reserved_30[2];
+};
+enum {
+  EFA_CREATE_CQ_WITH_COMPLETION_CHANNEL = 1 << 0,
+};
+struct efa_ibv_create_cq {
+  __u32 comp_mask;
+  __u32 cq_entry_size;
+  __u16 num_sub_cqs;
+  __u8 flags;
+  __u8 reserved_58[5];
+};
+enum {
+  EFA_CREATE_CQ_RESP_DB_OFF = 1 << 0,
+};
+struct efa_ibv_create_cq_resp {
+  __u32 comp_mask;
+  __u8 reserved_20[4];
+  __aligned_u64 q_mmap_key;
+  __aligned_u64 q_mmap_size;
+  __u16 cq_idx;
+  __u8 reserved_d0[2];
+  __u32 db_off;
+  __aligned_u64 db_mmap_key;
+};
+enum {
+  EFA_QP_DRIVER_TYPE_SRD = 0,
+};
+struct efa_ibv_create_qp {
+  __u32 comp_mask;
+  __u32 rq_ring_size;
+  __u32 sq_ring_size;
+  __u32 driver_qp_type;
+};
+struct efa_ibv_create_qp_resp {
+  __u32 comp_mask;
+  __u32 rq_db_offset;
+  __u32 sq_db_offset;
+  __u32 llq_desc_offset;
+  __aligned_u64 rq_mmap_key;
+  __aligned_u64 rq_mmap_size;
+  __aligned_u64 rq_db_mmap_key;
+  __aligned_u64 sq_db_mmap_key;
+  __aligned_u64 llq_desc_mmap_key;
+  __u16 send_sub_cq_idx;
+  __u16 recv_sub_cq_idx;
+  __u8 reserved_1e0[4];
+};
+struct efa_ibv_create_ah_resp {
+  __u32 comp_mask;
+  __u16 efa_address_handle;
+  __u8 reserved_30[2];
+};
+enum {
+  EFA_QUERY_DEVICE_CAPS_RDMA_READ = 1 << 0,
+  EFA_QUERY_DEVICE_CAPS_RNR_RETRY = 1 << 1,
+  EFA_QUERY_DEVICE_CAPS_CQ_NOTIFICATIONS = 1 << 2,
+};
+struct efa_ibv_ex_query_device_resp {
+  __u32 comp_mask;
+  __u32 max_sq_wr;
+  __u32 max_rq_wr;
+  __u16 max_sq_sge;
+  __u16 max_rq_sge;
+  __u32 max_rdma_size;
+  __u32 device_caps;
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/hfi/hfi1_ioctl.h b/x86_64-linux-musl/include/rdma/hfi/hfi1_ioctl.h
new file mode 100644
index 0000000..a430650
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/hfi/hfi1_ioctl.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__HFI1_IOCTL_H
+#define _LINUX__HFI1_IOCTL_H
+#include <linux/types.h>
+struct hfi1_user_info {
+  __u32 userversion;
+  __u32 pad;
+  __u16 subctxt_cnt;
+  __u16 subctxt_id;
+  __u8 uuid[16];
+};
+struct hfi1_ctxt_info {
+  __aligned_u64 runtime_flags;
+  __u32 rcvegr_size;
+  __u16 num_active;
+  __u16 unit;
+  __u16 ctxt;
+  __u16 subctxt;
+  __u16 rcvtids;
+  __u16 credits;
+  __u16 numa_node;
+  __u16 rec_cpu;
+  __u16 send_ctxt;
+  __u16 egrtids;
+  __u16 rcvhdrq_cnt;
+  __u16 rcvhdrq_entsize;
+  __u16 sdma_ring_size;
+};
+struct hfi1_tid_info {
+  __aligned_u64 vaddr;
+  __aligned_u64 tidlist;
+  __u32 tidcnt;
+  __u32 length;
+};
+struct hfi1_base_info {
+  __u32 hw_version;
+  __u32 sw_version;
+  __u16 jkey;
+  __u16 padding1;
+  __u32 bthqp;
+  __aligned_u64 sc_credits_addr;
+  __aligned_u64 pio_bufbase_sop;
+  __aligned_u64 pio_bufbase;
+  __aligned_u64 rcvhdr_bufbase;
+  __aligned_u64 rcvegr_bufbase;
+  __aligned_u64 sdma_comp_bufbase;
+  __aligned_u64 user_regbase;
+  __aligned_u64 events_bufbase;
+  __aligned_u64 status_bufbase;
+  __aligned_u64 rcvhdrtail_base;
+  __aligned_u64 subctxt_uregbase;
+  __aligned_u64 subctxt_rcvegrbuf;
+  __aligned_u64 subctxt_rcvhdrbuf;
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/hfi/hfi1_user.h b/x86_64-linux-musl/include/rdma/hfi/hfi1_user.h
new file mode 100644
index 0000000..3352907
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/hfi/hfi1_user.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__HFI1_USER_H
+#define _LINUX__HFI1_USER_H
+#include <linux/types.h>
+#include <rdma/rdma_user_ioctl.h>
+#define HFI1_USER_SWMAJOR 6
+#define HFI1_USER_SWMINOR 3
+#define HFI1_SWMAJOR_SHIFT 16
+#define HFI1_CAP_DMA_RTAIL (1UL << 0)
+#define HFI1_CAP_SDMA (1UL << 1)
+#define HFI1_CAP_SDMA_AHG (1UL << 2)
+#define HFI1_CAP_EXTENDED_PSN (1UL << 3)
+#define HFI1_CAP_HDRSUPP (1UL << 4)
+#define HFI1_CAP_TID_RDMA (1UL << 5)
+#define HFI1_CAP_USE_SDMA_HEAD (1UL << 6)
+#define HFI1_CAP_MULTI_PKT_EGR (1UL << 7)
+#define HFI1_CAP_NODROP_RHQ_FULL (1UL << 8)
+#define HFI1_CAP_NODROP_EGR_FULL (1UL << 9)
+#define HFI1_CAP_TID_UNMAP (1UL << 10)
+#define HFI1_CAP_PRINT_UNIMPL (1UL << 11)
+#define HFI1_CAP_ALLOW_PERM_JKEY (1UL << 12)
+#define HFI1_CAP_NO_INTEGRITY (1UL << 13)
+#define HFI1_CAP_PKEY_CHECK (1UL << 14)
+#define HFI1_CAP_STATIC_RATE_CTRL (1UL << 15)
+#define HFI1_CAP_OPFN (1UL << 16)
+#define HFI1_CAP_SDMA_HEAD_CHECK (1UL << 17)
+#define HFI1_CAP_EARLY_CREDIT_RETURN (1UL << 18)
+#define HFI1_CAP_AIP (1UL << 19)
+#define HFI1_RCVHDR_ENTSIZE_2 (1UL << 0)
+#define HFI1_RCVHDR_ENTSIZE_16 (1UL << 1)
+#define HFI1_RCVDHR_ENTSIZE_32 (1UL << 2)
+#define _HFI1_EVENT_FROZEN_BIT 0
+#define _HFI1_EVENT_LINKDOWN_BIT 1
+#define _HFI1_EVENT_LID_CHANGE_BIT 2
+#define _HFI1_EVENT_LMC_CHANGE_BIT 3
+#define _HFI1_EVENT_SL2VL_CHANGE_BIT 4
+#define _HFI1_EVENT_TID_MMU_NOTIFY_BIT 5
+#define _HFI1_MAX_EVENT_BIT _HFI1_EVENT_TID_MMU_NOTIFY_BIT
+#define HFI1_EVENT_FROZEN (1UL << _HFI1_EVENT_FROZEN_BIT)
+#define HFI1_EVENT_LINKDOWN (1UL << _HFI1_EVENT_LINKDOWN_BIT)
+#define HFI1_EVENT_LID_CHANGE (1UL << _HFI1_EVENT_LID_CHANGE_BIT)
+#define HFI1_EVENT_LMC_CHANGE (1UL << _HFI1_EVENT_LMC_CHANGE_BIT)
+#define HFI1_EVENT_SL2VL_CHANGE (1UL << _HFI1_EVENT_SL2VL_CHANGE_BIT)
+#define HFI1_EVENT_TID_MMU_NOTIFY (1UL << _HFI1_EVENT_TID_MMU_NOTIFY_BIT)
+#define HFI1_STATUS_INITTED 0x1
+#define HFI1_STATUS_CHIP_PRESENT 0x20
+#define HFI1_STATUS_IB_READY 0x40
+#define HFI1_STATUS_IB_CONF 0x80
+#define HFI1_STATUS_HWERROR 0x200
+#define HFI1_MAX_SHARED_CTXTS 8
+#define HFI1_POLL_TYPE_ANYRCV 0x0
+#define HFI1_POLL_TYPE_URGENT 0x1
+enum hfi1_sdma_comp_state {
+  FREE = 0,
+  QUEUED,
+  COMPLETE,
+  ERROR
+};
+struct hfi1_sdma_comp_entry {
+  __u32 status;
+  __u32 errcode;
+};
+struct hfi1_status {
+  __aligned_u64 dev;
+  __aligned_u64 port;
+  char freezemsg[0];
+};
+enum sdma_req_opcode {
+  EXPECTED = 0,
+  EAGER
+};
+#define HFI1_SDMA_REQ_VERSION_MASK 0xF
+#define HFI1_SDMA_REQ_VERSION_SHIFT 0x0
+#define HFI1_SDMA_REQ_OPCODE_MASK 0xF
+#define HFI1_SDMA_REQ_OPCODE_SHIFT 0x4
+#define HFI1_SDMA_REQ_IOVCNT_MASK 0xFF
+#define HFI1_SDMA_REQ_IOVCNT_SHIFT 0x8
+struct sdma_req_info {
+  __u16 ctrl;
+  __u16 npkts;
+  __u16 fragsize;
+  __u16 comp_idx;
+} __attribute__((__packed__));
+struct hfi1_kdeth_header {
+  __le32 ver_tid_offset;
+  __le16 jkey;
+  __le16 hcrc;
+  __le32 swdata[7];
+} __attribute__((__packed__));
+struct hfi1_pkt_header {
+  __le16 pbc[4];
+  __be16 lrh[4];
+  __be32 bth[3];
+  struct hfi1_kdeth_header kdeth;
+} __attribute__((__packed__));
+enum hfi1_ureg {
+  ur_rcvhdrtail = 0,
+  ur_rcvhdrhead = 1,
+  ur_rcvegrindextail = 2,
+  ur_rcvegrindexhead = 3,
+  ur_rcvegroffsettail = 4,
+  ur_maxreg,
+  ur_rcvtidflowtable = 256
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/hns-abi.h b/x86_64-linux-musl/include/rdma/hns-abi.h
new file mode 100644
index 0000000..40ec2ec
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/hns-abi.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 HNS_ABI_USER_H
+#define HNS_ABI_USER_H
+#include <linux/types.h>
+struct hns_roce_ib_create_cq {
+  __aligned_u64 buf_addr;
+  __aligned_u64 db_addr;
+  __u32 cqe_size;
+  __u32 reserved;
+};
+enum hns_roce_cq_cap_flags {
+  HNS_ROCE_CQ_FLAG_RECORD_DB = 1 << 0,
+};
+struct hns_roce_ib_create_cq_resp {
+  __aligned_u64 cqn;
+  __aligned_u64 cap_flags;
+};
+struct hns_roce_ib_create_srq {
+  __aligned_u64 buf_addr;
+  __aligned_u64 db_addr;
+  __aligned_u64 que_addr;
+};
+struct hns_roce_ib_create_srq_resp {
+  __u32 srqn;
+  __u32 reserved;
+};
+struct hns_roce_ib_create_qp {
+  __aligned_u64 buf_addr;
+  __aligned_u64 db_addr;
+  __u8 log_sq_bb_count;
+  __u8 log_sq_stride;
+  __u8 sq_no_prefetch;
+  __u8 reserved[5];
+  __aligned_u64 sdb_addr;
+};
+enum hns_roce_qp_cap_flags {
+  HNS_ROCE_QP_CAP_RQ_RECORD_DB = 1 << 0,
+  HNS_ROCE_QP_CAP_SQ_RECORD_DB = 1 << 1,
+  HNS_ROCE_QP_CAP_OWNER_DB = 1 << 2,
+};
+struct hns_roce_ib_create_qp_resp {
+  __aligned_u64 cap_flags;
+};
+struct hns_roce_ib_alloc_ucontext_resp {
+  __u32 qp_tab_size;
+  __u32 cqe_size;
+  __u32 srq_tab_size;
+  __u32 reserved;
+};
+struct hns_roce_ib_alloc_pd_resp {
+  __u32 pdn;
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/ib_user_ioctl_cmds.h b/x86_64-linux-musl/include/rdma/ib_user_ioctl_cmds.h
new file mode 100644
index 0000000..f96b4e8
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/ib_user_ioctl_cmds.h
@@ -0,0 +1,313 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef IB_USER_IOCTL_CMDS_H
+#define IB_USER_IOCTL_CMDS_H
+#define UVERBS_ID_NS_MASK 0xF000
+#define UVERBS_ID_NS_SHIFT 12
+#define UVERBS_UDATA_DRIVER_DATA_NS 1
+#define UVERBS_UDATA_DRIVER_DATA_FLAG (1UL << UVERBS_ID_NS_SHIFT)
+enum uverbs_default_objects {
+  UVERBS_OBJECT_DEVICE,
+  UVERBS_OBJECT_PD,
+  UVERBS_OBJECT_COMP_CHANNEL,
+  UVERBS_OBJECT_CQ,
+  UVERBS_OBJECT_QP,
+  UVERBS_OBJECT_SRQ,
+  UVERBS_OBJECT_AH,
+  UVERBS_OBJECT_MR,
+  UVERBS_OBJECT_MW,
+  UVERBS_OBJECT_FLOW,
+  UVERBS_OBJECT_XRCD,
+  UVERBS_OBJECT_RWQ_IND_TBL,
+  UVERBS_OBJECT_WQ,
+  UVERBS_OBJECT_FLOW_ACTION,
+  UVERBS_OBJECT_DM,
+  UVERBS_OBJECT_COUNTERS,
+  UVERBS_OBJECT_ASYNC_EVENT,
+};
+enum {
+  UVERBS_ATTR_UHW_IN = UVERBS_UDATA_DRIVER_DATA_FLAG,
+  UVERBS_ATTR_UHW_OUT,
+};
+enum uverbs_methods_device {
+  UVERBS_METHOD_INVOKE_WRITE,
+  UVERBS_METHOD_INFO_HANDLES,
+  UVERBS_METHOD_QUERY_PORT,
+  UVERBS_METHOD_GET_CONTEXT,
+  UVERBS_METHOD_QUERY_CONTEXT,
+  UVERBS_METHOD_QUERY_GID_TABLE,
+  UVERBS_METHOD_QUERY_GID_ENTRY,
+};
+enum uverbs_attrs_invoke_write_cmd_attr_ids {
+  UVERBS_ATTR_CORE_IN,
+  UVERBS_ATTR_CORE_OUT,
+  UVERBS_ATTR_WRITE_CMD,
+};
+enum uverbs_attrs_query_port_cmd_attr_ids {
+  UVERBS_ATTR_QUERY_PORT_PORT_NUM,
+  UVERBS_ATTR_QUERY_PORT_RESP,
+};
+enum uverbs_attrs_get_context_attr_ids {
+  UVERBS_ATTR_GET_CONTEXT_NUM_COMP_VECTORS,
+  UVERBS_ATTR_GET_CONTEXT_CORE_SUPPORT,
+};
+enum uverbs_attrs_query_context_attr_ids {
+  UVERBS_ATTR_QUERY_CONTEXT_NUM_COMP_VECTORS,
+  UVERBS_ATTR_QUERY_CONTEXT_CORE_SUPPORT,
+};
+enum uverbs_attrs_create_cq_cmd_attr_ids {
+  UVERBS_ATTR_CREATE_CQ_HANDLE,
+  UVERBS_ATTR_CREATE_CQ_CQE,
+  UVERBS_ATTR_CREATE_CQ_USER_HANDLE,
+  UVERBS_ATTR_CREATE_CQ_COMP_CHANNEL,
+  UVERBS_ATTR_CREATE_CQ_COMP_VECTOR,
+  UVERBS_ATTR_CREATE_CQ_FLAGS,
+  UVERBS_ATTR_CREATE_CQ_RESP_CQE,
+  UVERBS_ATTR_CREATE_CQ_EVENT_FD,
+};
+enum uverbs_attrs_destroy_cq_cmd_attr_ids {
+  UVERBS_ATTR_DESTROY_CQ_HANDLE,
+  UVERBS_ATTR_DESTROY_CQ_RESP,
+};
+enum uverbs_attrs_create_flow_action_esp {
+  UVERBS_ATTR_CREATE_FLOW_ACTION_ESP_HANDLE,
+  UVERBS_ATTR_FLOW_ACTION_ESP_ATTRS,
+  UVERBS_ATTR_FLOW_ACTION_ESP_ESN,
+  UVERBS_ATTR_FLOW_ACTION_ESP_KEYMAT,
+  UVERBS_ATTR_FLOW_ACTION_ESP_REPLAY,
+  UVERBS_ATTR_FLOW_ACTION_ESP_ENCAP,
+};
+enum uverbs_attrs_modify_flow_action_esp {
+  UVERBS_ATTR_MODIFY_FLOW_ACTION_ESP_HANDLE = UVERBS_ATTR_CREATE_FLOW_ACTION_ESP_HANDLE,
+};
+enum uverbs_attrs_destroy_flow_action_esp {
+  UVERBS_ATTR_DESTROY_FLOW_ACTION_HANDLE,
+};
+enum uverbs_attrs_create_qp_cmd_attr_ids {
+  UVERBS_ATTR_CREATE_QP_HANDLE,
+  UVERBS_ATTR_CREATE_QP_XRCD_HANDLE,
+  UVERBS_ATTR_CREATE_QP_PD_HANDLE,
+  UVERBS_ATTR_CREATE_QP_SRQ_HANDLE,
+  UVERBS_ATTR_CREATE_QP_SEND_CQ_HANDLE,
+  UVERBS_ATTR_CREATE_QP_RECV_CQ_HANDLE,
+  UVERBS_ATTR_CREATE_QP_IND_TABLE_HANDLE,
+  UVERBS_ATTR_CREATE_QP_USER_HANDLE,
+  UVERBS_ATTR_CREATE_QP_CAP,
+  UVERBS_ATTR_CREATE_QP_TYPE,
+  UVERBS_ATTR_CREATE_QP_FLAGS,
+  UVERBS_ATTR_CREATE_QP_SOURCE_QPN,
+  UVERBS_ATTR_CREATE_QP_EVENT_FD,
+  UVERBS_ATTR_CREATE_QP_RESP_CAP,
+  UVERBS_ATTR_CREATE_QP_RESP_QP_NUM,
+};
+enum uverbs_attrs_destroy_qp_cmd_attr_ids {
+  UVERBS_ATTR_DESTROY_QP_HANDLE,
+  UVERBS_ATTR_DESTROY_QP_RESP,
+};
+enum uverbs_methods_qp {
+  UVERBS_METHOD_QP_CREATE,
+  UVERBS_METHOD_QP_DESTROY,
+};
+enum uverbs_attrs_create_srq_cmd_attr_ids {
+  UVERBS_ATTR_CREATE_SRQ_HANDLE,
+  UVERBS_ATTR_CREATE_SRQ_PD_HANDLE,
+  UVERBS_ATTR_CREATE_SRQ_XRCD_HANDLE,
+  UVERBS_ATTR_CREATE_SRQ_CQ_HANDLE,
+  UVERBS_ATTR_CREATE_SRQ_USER_HANDLE,
+  UVERBS_ATTR_CREATE_SRQ_MAX_WR,
+  UVERBS_ATTR_CREATE_SRQ_MAX_SGE,
+  UVERBS_ATTR_CREATE_SRQ_LIMIT,
+  UVERBS_ATTR_CREATE_SRQ_MAX_NUM_TAGS,
+  UVERBS_ATTR_CREATE_SRQ_TYPE,
+  UVERBS_ATTR_CREATE_SRQ_EVENT_FD,
+  UVERBS_ATTR_CREATE_SRQ_RESP_MAX_WR,
+  UVERBS_ATTR_CREATE_SRQ_RESP_MAX_SGE,
+  UVERBS_ATTR_CREATE_SRQ_RESP_SRQ_NUM,
+};
+enum uverbs_attrs_destroy_srq_cmd_attr_ids {
+  UVERBS_ATTR_DESTROY_SRQ_HANDLE,
+  UVERBS_ATTR_DESTROY_SRQ_RESP,
+};
+enum uverbs_methods_srq {
+  UVERBS_METHOD_SRQ_CREATE,
+  UVERBS_METHOD_SRQ_DESTROY,
+};
+enum uverbs_methods_cq {
+  UVERBS_METHOD_CQ_CREATE,
+  UVERBS_METHOD_CQ_DESTROY,
+};
+enum uverbs_attrs_create_wq_cmd_attr_ids {
+  UVERBS_ATTR_CREATE_WQ_HANDLE,
+  UVERBS_ATTR_CREATE_WQ_PD_HANDLE,
+  UVERBS_ATTR_CREATE_WQ_CQ_HANDLE,
+  UVERBS_ATTR_CREATE_WQ_USER_HANDLE,
+  UVERBS_ATTR_CREATE_WQ_TYPE,
+  UVERBS_ATTR_CREATE_WQ_EVENT_FD,
+  UVERBS_ATTR_CREATE_WQ_MAX_WR,
+  UVERBS_ATTR_CREATE_WQ_MAX_SGE,
+  UVERBS_ATTR_CREATE_WQ_FLAGS,
+  UVERBS_ATTR_CREATE_WQ_RESP_MAX_WR,
+  UVERBS_ATTR_CREATE_WQ_RESP_MAX_SGE,
+  UVERBS_ATTR_CREATE_WQ_RESP_WQ_NUM,
+};
+enum uverbs_attrs_destroy_wq_cmd_attr_ids {
+  UVERBS_ATTR_DESTROY_WQ_HANDLE,
+  UVERBS_ATTR_DESTROY_WQ_RESP,
+};
+enum uverbs_methods_wq {
+  UVERBS_METHOD_WQ_CREATE,
+  UVERBS_METHOD_WQ_DESTROY,
+};
+enum uverbs_methods_actions_flow_action_ops {
+  UVERBS_METHOD_FLOW_ACTION_ESP_CREATE,
+  UVERBS_METHOD_FLOW_ACTION_DESTROY,
+  UVERBS_METHOD_FLOW_ACTION_ESP_MODIFY,
+};
+enum uverbs_attrs_alloc_dm_cmd_attr_ids {
+  UVERBS_ATTR_ALLOC_DM_HANDLE,
+  UVERBS_ATTR_ALLOC_DM_LENGTH,
+  UVERBS_ATTR_ALLOC_DM_ALIGNMENT,
+};
+enum uverbs_attrs_free_dm_cmd_attr_ids {
+  UVERBS_ATTR_FREE_DM_HANDLE,
+};
+enum uverbs_methods_dm {
+  UVERBS_METHOD_DM_ALLOC,
+  UVERBS_METHOD_DM_FREE,
+};
+enum uverbs_attrs_reg_dm_mr_cmd_attr_ids {
+  UVERBS_ATTR_REG_DM_MR_HANDLE,
+  UVERBS_ATTR_REG_DM_MR_OFFSET,
+  UVERBS_ATTR_REG_DM_MR_LENGTH,
+  UVERBS_ATTR_REG_DM_MR_PD_HANDLE,
+  UVERBS_ATTR_REG_DM_MR_ACCESS_FLAGS,
+  UVERBS_ATTR_REG_DM_MR_DM_HANDLE,
+  UVERBS_ATTR_REG_DM_MR_RESP_LKEY,
+  UVERBS_ATTR_REG_DM_MR_RESP_RKEY,
+};
+enum uverbs_methods_mr {
+  UVERBS_METHOD_DM_MR_REG,
+  UVERBS_METHOD_MR_DESTROY,
+  UVERBS_METHOD_ADVISE_MR,
+  UVERBS_METHOD_QUERY_MR,
+  UVERBS_METHOD_REG_DMABUF_MR,
+};
+enum uverbs_attrs_mr_destroy_ids {
+  UVERBS_ATTR_DESTROY_MR_HANDLE,
+};
+enum uverbs_attrs_advise_mr_cmd_attr_ids {
+  UVERBS_ATTR_ADVISE_MR_PD_HANDLE,
+  UVERBS_ATTR_ADVISE_MR_ADVICE,
+  UVERBS_ATTR_ADVISE_MR_FLAGS,
+  UVERBS_ATTR_ADVISE_MR_SGE_LIST,
+};
+enum uverbs_attrs_query_mr_cmd_attr_ids {
+  UVERBS_ATTR_QUERY_MR_HANDLE,
+  UVERBS_ATTR_QUERY_MR_RESP_LKEY,
+  UVERBS_ATTR_QUERY_MR_RESP_RKEY,
+  UVERBS_ATTR_QUERY_MR_RESP_LENGTH,
+  UVERBS_ATTR_QUERY_MR_RESP_IOVA,
+};
+enum uverbs_attrs_reg_dmabuf_mr_cmd_attr_ids {
+  UVERBS_ATTR_REG_DMABUF_MR_HANDLE,
+  UVERBS_ATTR_REG_DMABUF_MR_PD_HANDLE,
+  UVERBS_ATTR_REG_DMABUF_MR_OFFSET,
+  UVERBS_ATTR_REG_DMABUF_MR_LENGTH,
+  UVERBS_ATTR_REG_DMABUF_MR_IOVA,
+  UVERBS_ATTR_REG_DMABUF_MR_FD,
+  UVERBS_ATTR_REG_DMABUF_MR_ACCESS_FLAGS,
+  UVERBS_ATTR_REG_DMABUF_MR_RESP_LKEY,
+  UVERBS_ATTR_REG_DMABUF_MR_RESP_RKEY,
+};
+enum uverbs_attrs_create_counters_cmd_attr_ids {
+  UVERBS_ATTR_CREATE_COUNTERS_HANDLE,
+};
+enum uverbs_attrs_destroy_counters_cmd_attr_ids {
+  UVERBS_ATTR_DESTROY_COUNTERS_HANDLE,
+};
+enum uverbs_attrs_read_counters_cmd_attr_ids {
+  UVERBS_ATTR_READ_COUNTERS_HANDLE,
+  UVERBS_ATTR_READ_COUNTERS_BUFF,
+  UVERBS_ATTR_READ_COUNTERS_FLAGS,
+};
+enum uverbs_methods_actions_counters_ops {
+  UVERBS_METHOD_COUNTERS_CREATE,
+  UVERBS_METHOD_COUNTERS_DESTROY,
+  UVERBS_METHOD_COUNTERS_READ,
+};
+enum uverbs_attrs_info_handles_id {
+  UVERBS_ATTR_INFO_OBJECT_ID,
+  UVERBS_ATTR_INFO_TOTAL_HANDLES,
+  UVERBS_ATTR_INFO_HANDLES_LIST,
+};
+enum uverbs_methods_pd {
+  UVERBS_METHOD_PD_DESTROY,
+};
+enum uverbs_attrs_pd_destroy_ids {
+  UVERBS_ATTR_DESTROY_PD_HANDLE,
+};
+enum uverbs_methods_mw {
+  UVERBS_METHOD_MW_DESTROY,
+};
+enum uverbs_attrs_mw_destroy_ids {
+  UVERBS_ATTR_DESTROY_MW_HANDLE,
+};
+enum uverbs_methods_xrcd {
+  UVERBS_METHOD_XRCD_DESTROY,
+};
+enum uverbs_attrs_xrcd_destroy_ids {
+  UVERBS_ATTR_DESTROY_XRCD_HANDLE,
+};
+enum uverbs_methods_ah {
+  UVERBS_METHOD_AH_DESTROY,
+};
+enum uverbs_attrs_ah_destroy_ids {
+  UVERBS_ATTR_DESTROY_AH_HANDLE,
+};
+enum uverbs_methods_rwq_ind_tbl {
+  UVERBS_METHOD_RWQ_IND_TBL_DESTROY,
+};
+enum uverbs_attrs_rwq_ind_tbl_destroy_ids {
+  UVERBS_ATTR_DESTROY_RWQ_IND_TBL_HANDLE,
+};
+enum uverbs_methods_flow {
+  UVERBS_METHOD_FLOW_DESTROY,
+};
+enum uverbs_attrs_flow_destroy_ids {
+  UVERBS_ATTR_DESTROY_FLOW_HANDLE,
+};
+enum uverbs_method_async_event {
+  UVERBS_METHOD_ASYNC_EVENT_ALLOC,
+};
+enum uverbs_attrs_async_event_create {
+  UVERBS_ATTR_ASYNC_EVENT_ALLOC_FD_HANDLE,
+};
+enum uverbs_attrs_query_gid_table_cmd_attr_ids {
+  UVERBS_ATTR_QUERY_GID_TABLE_ENTRY_SIZE,
+  UVERBS_ATTR_QUERY_GID_TABLE_FLAGS,
+  UVERBS_ATTR_QUERY_GID_TABLE_RESP_ENTRIES,
+  UVERBS_ATTR_QUERY_GID_TABLE_RESP_NUM_ENTRIES,
+};
+enum uverbs_attrs_query_gid_entry_cmd_attr_ids {
+  UVERBS_ATTR_QUERY_GID_ENTRY_PORT,
+  UVERBS_ATTR_QUERY_GID_ENTRY_GID_INDEX,
+  UVERBS_ATTR_QUERY_GID_ENTRY_FLAGS,
+  UVERBS_ATTR_QUERY_GID_ENTRY_RESP_ENTRY,
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/ib_user_ioctl_verbs.h b/x86_64-linux-musl/include/rdma/ib_user_ioctl_verbs.h
new file mode 100644
index 0000000..3b94907
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/ib_user_ioctl_verbs.h
@@ -0,0 +1,207 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef IB_USER_IOCTL_VERBS_H
+#define IB_USER_IOCTL_VERBS_H
+#include <linux/types.h>
+#include <rdma/ib_user_verbs.h>
+#ifndef RDMA_UAPI_PTR
+#define RDMA_UAPI_PTR(_type,_name) __aligned_u64 _name
+#endif
+#define IB_UVERBS_ACCESS_OPTIONAL_FIRST (1 << 20)
+#define IB_UVERBS_ACCESS_OPTIONAL_LAST (1 << 29)
+enum ib_uverbs_core_support {
+  IB_UVERBS_CORE_SUPPORT_OPTIONAL_MR_ACCESS = 1 << 0,
+};
+enum ib_uverbs_access_flags {
+  IB_UVERBS_ACCESS_LOCAL_WRITE = 1 << 0,
+  IB_UVERBS_ACCESS_REMOTE_WRITE = 1 << 1,
+  IB_UVERBS_ACCESS_REMOTE_READ = 1 << 2,
+  IB_UVERBS_ACCESS_REMOTE_ATOMIC = 1 << 3,
+  IB_UVERBS_ACCESS_MW_BIND = 1 << 4,
+  IB_UVERBS_ACCESS_ZERO_BASED = 1 << 5,
+  IB_UVERBS_ACCESS_ON_DEMAND = 1 << 6,
+  IB_UVERBS_ACCESS_HUGETLB = 1 << 7,
+  IB_UVERBS_ACCESS_RELAXED_ORDERING = IB_UVERBS_ACCESS_OPTIONAL_FIRST,
+  IB_UVERBS_ACCESS_OPTIONAL_RANGE = ((IB_UVERBS_ACCESS_OPTIONAL_LAST << 1) - 1) & ~(IB_UVERBS_ACCESS_OPTIONAL_FIRST - 1)
+};
+enum ib_uverbs_srq_type {
+  IB_UVERBS_SRQT_BASIC,
+  IB_UVERBS_SRQT_XRC,
+  IB_UVERBS_SRQT_TM,
+};
+enum ib_uverbs_wq_type {
+  IB_UVERBS_WQT_RQ,
+};
+enum ib_uverbs_wq_flags {
+  IB_UVERBS_WQ_FLAGS_CVLAN_STRIPPING = 1 << 0,
+  IB_UVERBS_WQ_FLAGS_SCATTER_FCS = 1 << 1,
+  IB_UVERBS_WQ_FLAGS_DELAY_DROP = 1 << 2,
+  IB_UVERBS_WQ_FLAGS_PCI_WRITE_END_PADDING = 1 << 3,
+};
+enum ib_uverbs_qp_type {
+  IB_UVERBS_QPT_RC = 2,
+  IB_UVERBS_QPT_UC,
+  IB_UVERBS_QPT_UD,
+  IB_UVERBS_QPT_RAW_PACKET = 8,
+  IB_UVERBS_QPT_XRC_INI,
+  IB_UVERBS_QPT_XRC_TGT,
+  IB_UVERBS_QPT_DRIVER = 0xFF,
+};
+enum ib_uverbs_qp_create_flags {
+  IB_UVERBS_QP_CREATE_BLOCK_MULTICAST_LOOPBACK = 1 << 1,
+  IB_UVERBS_QP_CREATE_SCATTER_FCS = 1 << 8,
+  IB_UVERBS_QP_CREATE_CVLAN_STRIPPING = 1 << 9,
+  IB_UVERBS_QP_CREATE_PCI_WRITE_END_PADDING = 1 << 11,
+  IB_UVERBS_QP_CREATE_SQ_SIG_ALL = 1 << 12,
+};
+enum ib_uverbs_query_port_cap_flags {
+  IB_UVERBS_PCF_SM = 1 << 1,
+  IB_UVERBS_PCF_NOTICE_SUP = 1 << 2,
+  IB_UVERBS_PCF_TRAP_SUP = 1 << 3,
+  IB_UVERBS_PCF_OPT_IPD_SUP = 1 << 4,
+  IB_UVERBS_PCF_AUTO_MIGR_SUP = 1 << 5,
+  IB_UVERBS_PCF_SL_MAP_SUP = 1 << 6,
+  IB_UVERBS_PCF_MKEY_NVRAM = 1 << 7,
+  IB_UVERBS_PCF_PKEY_NVRAM = 1 << 8,
+  IB_UVERBS_PCF_LED_INFO_SUP = 1 << 9,
+  IB_UVERBS_PCF_SM_DISABLED = 1 << 10,
+  IB_UVERBS_PCF_SYS_IMAGE_GUID_SUP = 1 << 11,
+  IB_UVERBS_PCF_PKEY_SW_EXT_PORT_TRAP_SUP = 1 << 12,
+  IB_UVERBS_PCF_EXTENDED_SPEEDS_SUP = 1 << 14,
+  IB_UVERBS_PCF_CM_SUP = 1 << 16,
+  IB_UVERBS_PCF_SNMP_TUNNEL_SUP = 1 << 17,
+  IB_UVERBS_PCF_REINIT_SUP = 1 << 18,
+  IB_UVERBS_PCF_DEVICE_MGMT_SUP = 1 << 19,
+  IB_UVERBS_PCF_VENDOR_CLASS_SUP = 1 << 20,
+  IB_UVERBS_PCF_DR_NOTICE_SUP = 1 << 21,
+  IB_UVERBS_PCF_CAP_MASK_NOTICE_SUP = 1 << 22,
+  IB_UVERBS_PCF_BOOT_MGMT_SUP = 1 << 23,
+  IB_UVERBS_PCF_LINK_LATENCY_SUP = 1 << 24,
+  IB_UVERBS_PCF_CLIENT_REG_SUP = 1 << 25,
+  IB_UVERBS_PCF_LINK_SPEED_WIDTH_TABLE_SUP = 1 << 27,
+  IB_UVERBS_PCF_VENDOR_SPECIFIC_MADS_TABLE_SUP = 1 << 28,
+  IB_UVERBS_PCF_MCAST_PKEY_TRAP_SUPPRESSION_SUP = 1 << 29,
+  IB_UVERBS_PCF_MCAST_FDB_TOP_SUP = 1 << 30,
+  IB_UVERBS_PCF_HIERARCHY_INFO_SUP = 1ULL << 31,
+  IB_UVERBS_PCF_IP_BASED_GIDS = 1 << 26,
+};
+enum ib_uverbs_query_port_flags {
+  IB_UVERBS_QPF_GRH_REQUIRED = 1 << 0,
+};
+enum ib_uverbs_flow_action_esp_keymat {
+  IB_UVERBS_FLOW_ACTION_ESP_KEYMAT_AES_GCM,
+};
+enum ib_uverbs_flow_action_esp_keymat_aes_gcm_iv_algo {
+  IB_UVERBS_FLOW_ACTION_IV_ALGO_SEQ,
+};
+struct ib_uverbs_flow_action_esp_keymat_aes_gcm {
+  __aligned_u64 iv;
+  __u32 iv_algo;
+  __u32 salt;
+  __u32 icv_len;
+  __u32 key_len;
+  __u32 aes_key[256 / 32];
+};
+enum ib_uverbs_flow_action_esp_replay {
+  IB_UVERBS_FLOW_ACTION_ESP_REPLAY_NONE,
+  IB_UVERBS_FLOW_ACTION_ESP_REPLAY_BMP,
+};
+struct ib_uverbs_flow_action_esp_replay_bmp {
+  __u32 size;
+};
+enum ib_uverbs_flow_action_esp_flags {
+  IB_UVERBS_FLOW_ACTION_ESP_FLAGS_INLINE_CRYPTO = 0UL << 0,
+  IB_UVERBS_FLOW_ACTION_ESP_FLAGS_FULL_OFFLOAD = 1UL << 0,
+  IB_UVERBS_FLOW_ACTION_ESP_FLAGS_TUNNEL = 0UL << 1,
+  IB_UVERBS_FLOW_ACTION_ESP_FLAGS_TRANSPORT = 1UL << 1,
+  IB_UVERBS_FLOW_ACTION_ESP_FLAGS_DECRYPT = 0UL << 2,
+  IB_UVERBS_FLOW_ACTION_ESP_FLAGS_ENCRYPT = 1UL << 2,
+  IB_UVERBS_FLOW_ACTION_ESP_FLAGS_ESN_NEW_WINDOW = 1UL << 3,
+};
+struct ib_uverbs_flow_action_esp_encap {
+  RDMA_UAPI_PTR(void *, val_ptr);
+  RDMA_UAPI_PTR(struct ib_uverbs_flow_action_esp_encap *, next_ptr);
+  __u16 len;
+  __u16 type;
+};
+struct ib_uverbs_flow_action_esp {
+  __u32 spi;
+  __u32 seq;
+  __u32 tfc_pad;
+  __u32 flags;
+  __aligned_u64 hard_limit_pkts;
+};
+enum ib_uverbs_read_counters_flags {
+  IB_UVERBS_READ_COUNTERS_PREFER_CACHED = 1 << 0,
+};
+enum ib_uverbs_advise_mr_advice {
+  IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH,
+  IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_WRITE,
+  IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_NO_FAULT,
+};
+enum ib_uverbs_advise_mr_flag {
+  IB_UVERBS_ADVISE_MR_FLAG_FLUSH = 1 << 0,
+};
+struct ib_uverbs_query_port_resp_ex {
+  struct ib_uverbs_query_port_resp legacy_resp;
+  __u16 port_cap_flags2;
+  __u8 reserved[6];
+};
+struct ib_uverbs_qp_cap {
+  __u32 max_send_wr;
+  __u32 max_recv_wr;
+  __u32 max_send_sge;
+  __u32 max_recv_sge;
+  __u32 max_inline_data;
+};
+enum rdma_driver_id {
+  RDMA_DRIVER_UNKNOWN,
+  RDMA_DRIVER_MLX5,
+  RDMA_DRIVER_MLX4,
+  RDMA_DRIVER_CXGB3,
+  RDMA_DRIVER_CXGB4,
+  RDMA_DRIVER_MTHCA,
+  RDMA_DRIVER_BNXT_RE,
+  RDMA_DRIVER_OCRDMA,
+  RDMA_DRIVER_NES,
+  RDMA_DRIVER_I40IW,
+  RDMA_DRIVER_IRDMA = RDMA_DRIVER_I40IW,
+  RDMA_DRIVER_VMW_PVRDMA,
+  RDMA_DRIVER_QEDR,
+  RDMA_DRIVER_HNS,
+  RDMA_DRIVER_USNIC,
+  RDMA_DRIVER_RXE,
+  RDMA_DRIVER_HFI1,
+  RDMA_DRIVER_QIB,
+  RDMA_DRIVER_EFA,
+  RDMA_DRIVER_SIW,
+};
+enum ib_uverbs_gid_type {
+  IB_UVERBS_GID_TYPE_IB,
+  IB_UVERBS_GID_TYPE_ROCE_V1,
+  IB_UVERBS_GID_TYPE_ROCE_V2,
+};
+struct ib_uverbs_gid_entry {
+  __aligned_u64 gid[2];
+  __u32 gid_index;
+  __u32 port_num;
+  __u32 gid_type;
+  __u32 netdev_ifindex;
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/ib_user_mad.h b/x86_64-linux-musl/include/rdma/ib_user_mad.h
new file mode 100644
index 0000000..04b9f08
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/ib_user_mad.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 IB_USER_MAD_H
+#define IB_USER_MAD_H
+#include <linux/types.h>
+#include <rdma/rdma_user_ioctl.h>
+#define IB_USER_MAD_ABI_VERSION 5
+struct ib_user_mad_hdr_old {
+  __u32 id;
+  __u32 status;
+  __u32 timeout_ms;
+  __u32 retries;
+  __u32 length;
+  __be32 qpn;
+  __be32 qkey;
+  __be16 lid;
+  __u8 sl;
+  __u8 path_bits;
+  __u8 grh_present;
+  __u8 gid_index;
+  __u8 hop_limit;
+  __u8 traffic_class;
+  __u8 gid[16];
+  __be32 flow_label;
+};
+struct ib_user_mad_hdr {
+  __u32 id;
+  __u32 status;
+  __u32 timeout_ms;
+  __u32 retries;
+  __u32 length;
+  __be32 qpn;
+  __be32 qkey;
+  __be16 lid;
+  __u8 sl;
+  __u8 path_bits;
+  __u8 grh_present;
+  __u8 gid_index;
+  __u8 hop_limit;
+  __u8 traffic_class;
+  __u8 gid[16];
+  __be32 flow_label;
+  __u16 pkey_index;
+  __u8 reserved[6];
+};
+struct ib_user_mad {
+  struct ib_user_mad_hdr hdr;
+  __aligned_u64 data[];
+};
+typedef unsigned long __attribute__((aligned(4))) packed_ulong;
+#define IB_USER_MAD_LONGS_PER_METHOD_MASK (128 / (8 * sizeof(long)))
+struct ib_user_mad_reg_req {
+  __u32 id;
+  packed_ulong method_mask[IB_USER_MAD_LONGS_PER_METHOD_MASK];
+  __u8 qpn;
+  __u8 mgmt_class;
+  __u8 mgmt_class_version;
+  __u8 oui[3];
+  __u8 rmpp_version;
+};
+enum {
+  IB_USER_MAD_USER_RMPP = (1 << 0),
+};
+#define IB_USER_MAD_REG_FLAGS_CAP (IB_USER_MAD_USER_RMPP)
+struct ib_user_mad_reg_req2 {
+  __u32 id;
+  __u32 qpn;
+  __u8 mgmt_class;
+  __u8 mgmt_class_version;
+  __u16 res;
+  __u32 flags;
+  __aligned_u64 method_mask[2];
+  __u32 oui;
+  __u8 rmpp_version;
+  __u8 reserved[3];
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/ib_user_sa.h b/x86_64-linux-musl/include/rdma/ib_user_sa.h
new file mode 100644
index 0000000..c999320
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/ib_user_sa.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 IB_USER_SA_H
+#define IB_USER_SA_H
+#include <linux/types.h>
+enum {
+  IB_PATH_GMP = 1,
+  IB_PATH_PRIMARY = (1 << 1),
+  IB_PATH_ALTERNATE = (1 << 2),
+  IB_PATH_OUTBOUND = (1 << 3),
+  IB_PATH_INBOUND = (1 << 4),
+  IB_PATH_INBOUND_REVERSE = (1 << 5),
+  IB_PATH_BIDIRECTIONAL = IB_PATH_OUTBOUND | IB_PATH_INBOUND_REVERSE
+};
+struct ib_path_rec_data {
+  __u32 flags;
+  __u32 reserved;
+  __u32 path_rec[16];
+};
+struct ib_user_path_rec {
+  __u8 dgid[16];
+  __u8 sgid[16];
+  __be16 dlid;
+  __be16 slid;
+  __u32 raw_traffic;
+  __be32 flow_label;
+  __u32 reversible;
+  __u32 mtu;
+  __be16 pkey;
+  __u8 hop_limit;
+  __u8 traffic_class;
+  __u8 numb_path;
+  __u8 sl;
+  __u8 mtu_selector;
+  __u8 rate_selector;
+  __u8 rate;
+  __u8 packet_life_time_selector;
+  __u8 packet_life_time;
+  __u8 preference;
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/ib_user_verbs.h b/x86_64-linux-musl/include/rdma/ib_user_verbs.h
new file mode 100644
index 0000000..d9ac9e0
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/ib_user_verbs.h
@@ -0,0 +1,1082 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef IB_USER_VERBS_H
+#define IB_USER_VERBS_H
+#include <linux/types.h>
+#define IB_USER_VERBS_ABI_VERSION 6
+#define IB_USER_VERBS_CMD_THRESHOLD 50
+enum ib_uverbs_write_cmds {
+  IB_USER_VERBS_CMD_GET_CONTEXT,
+  IB_USER_VERBS_CMD_QUERY_DEVICE,
+  IB_USER_VERBS_CMD_QUERY_PORT,
+  IB_USER_VERBS_CMD_ALLOC_PD,
+  IB_USER_VERBS_CMD_DEALLOC_PD,
+  IB_USER_VERBS_CMD_CREATE_AH,
+  IB_USER_VERBS_CMD_MODIFY_AH,
+  IB_USER_VERBS_CMD_QUERY_AH,
+  IB_USER_VERBS_CMD_DESTROY_AH,
+  IB_USER_VERBS_CMD_REG_MR,
+  IB_USER_VERBS_CMD_REG_SMR,
+  IB_USER_VERBS_CMD_REREG_MR,
+  IB_USER_VERBS_CMD_QUERY_MR,
+  IB_USER_VERBS_CMD_DEREG_MR,
+  IB_USER_VERBS_CMD_ALLOC_MW,
+  IB_USER_VERBS_CMD_BIND_MW,
+  IB_USER_VERBS_CMD_DEALLOC_MW,
+  IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL,
+  IB_USER_VERBS_CMD_CREATE_CQ,
+  IB_USER_VERBS_CMD_RESIZE_CQ,
+  IB_USER_VERBS_CMD_DESTROY_CQ,
+  IB_USER_VERBS_CMD_POLL_CQ,
+  IB_USER_VERBS_CMD_PEEK_CQ,
+  IB_USER_VERBS_CMD_REQ_NOTIFY_CQ,
+  IB_USER_VERBS_CMD_CREATE_QP,
+  IB_USER_VERBS_CMD_QUERY_QP,
+  IB_USER_VERBS_CMD_MODIFY_QP,
+  IB_USER_VERBS_CMD_DESTROY_QP,
+  IB_USER_VERBS_CMD_POST_SEND,
+  IB_USER_VERBS_CMD_POST_RECV,
+  IB_USER_VERBS_CMD_ATTACH_MCAST,
+  IB_USER_VERBS_CMD_DETACH_MCAST,
+  IB_USER_VERBS_CMD_CREATE_SRQ,
+  IB_USER_VERBS_CMD_MODIFY_SRQ,
+  IB_USER_VERBS_CMD_QUERY_SRQ,
+  IB_USER_VERBS_CMD_DESTROY_SRQ,
+  IB_USER_VERBS_CMD_POST_SRQ_RECV,
+  IB_USER_VERBS_CMD_OPEN_XRCD,
+  IB_USER_VERBS_CMD_CLOSE_XRCD,
+  IB_USER_VERBS_CMD_CREATE_XSRQ,
+  IB_USER_VERBS_CMD_OPEN_QP,
+};
+enum {
+  IB_USER_VERBS_EX_CMD_QUERY_DEVICE = IB_USER_VERBS_CMD_QUERY_DEVICE,
+  IB_USER_VERBS_EX_CMD_CREATE_CQ = IB_USER_VERBS_CMD_CREATE_CQ,
+  IB_USER_VERBS_EX_CMD_CREATE_QP = IB_USER_VERBS_CMD_CREATE_QP,
+  IB_USER_VERBS_EX_CMD_MODIFY_QP = IB_USER_VERBS_CMD_MODIFY_QP,
+  IB_USER_VERBS_EX_CMD_CREATE_FLOW = IB_USER_VERBS_CMD_THRESHOLD,
+  IB_USER_VERBS_EX_CMD_DESTROY_FLOW,
+  IB_USER_VERBS_EX_CMD_CREATE_WQ,
+  IB_USER_VERBS_EX_CMD_MODIFY_WQ,
+  IB_USER_VERBS_EX_CMD_DESTROY_WQ,
+  IB_USER_VERBS_EX_CMD_CREATE_RWQ_IND_TBL,
+  IB_USER_VERBS_EX_CMD_DESTROY_RWQ_IND_TBL,
+  IB_USER_VERBS_EX_CMD_MODIFY_CQ
+};
+struct ib_uverbs_async_event_desc {
+  __aligned_u64 element;
+  __u32 event_type;
+  __u32 reserved;
+};
+struct ib_uverbs_comp_event_desc {
+  __aligned_u64 cq_handle;
+};
+struct ib_uverbs_cq_moderation_caps {
+  __u16 max_cq_moderation_count;
+  __u16 max_cq_moderation_period;
+  __u32 reserved;
+};
+#define IB_USER_VERBS_CMD_COMMAND_MASK 0xff
+#define IB_USER_VERBS_CMD_FLAG_EXTENDED 0x80000000u
+struct ib_uverbs_cmd_hdr {
+  __u32 command;
+  __u16 in_words;
+  __u16 out_words;
+};
+struct ib_uverbs_ex_cmd_hdr {
+  __aligned_u64 response;
+  __u16 provider_in_words;
+  __u16 provider_out_words;
+  __u32 cmd_hdr_reserved;
+};
+struct ib_uverbs_get_context {
+  __aligned_u64 response;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_get_context_resp {
+  __u32 async_fd;
+  __u32 num_comp_vectors;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_query_device {
+  __aligned_u64 response;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_query_device_resp {
+  __aligned_u64 fw_ver;
+  __be64 node_guid;
+  __be64 sys_image_guid;
+  __aligned_u64 max_mr_size;
+  __aligned_u64 page_size_cap;
+  __u32 vendor_id;
+  __u32 vendor_part_id;
+  __u32 hw_ver;
+  __u32 max_qp;
+  __u32 max_qp_wr;
+  __u32 device_cap_flags;
+  __u32 max_sge;
+  __u32 max_sge_rd;
+  __u32 max_cq;
+  __u32 max_cqe;
+  __u32 max_mr;
+  __u32 max_pd;
+  __u32 max_qp_rd_atom;
+  __u32 max_ee_rd_atom;
+  __u32 max_res_rd_atom;
+  __u32 max_qp_init_rd_atom;
+  __u32 max_ee_init_rd_atom;
+  __u32 atomic_cap;
+  __u32 max_ee;
+  __u32 max_rdd;
+  __u32 max_mw;
+  __u32 max_raw_ipv6_qp;
+  __u32 max_raw_ethy_qp;
+  __u32 max_mcast_grp;
+  __u32 max_mcast_qp_attach;
+  __u32 max_total_mcast_qp_attach;
+  __u32 max_ah;
+  __u32 max_fmr;
+  __u32 max_map_per_fmr;
+  __u32 max_srq;
+  __u32 max_srq_wr;
+  __u32 max_srq_sge;
+  __u16 max_pkeys;
+  __u8 local_ca_ack_delay;
+  __u8 phys_port_cnt;
+  __u8 reserved[4];
+};
+struct ib_uverbs_ex_query_device {
+  __u32 comp_mask;
+  __u32 reserved;
+};
+struct ib_uverbs_odp_caps {
+  __aligned_u64 general_caps;
+  struct {
+    __u32 rc_odp_caps;
+    __u32 uc_odp_caps;
+    __u32 ud_odp_caps;
+  } per_transport_caps;
+  __u32 reserved;
+};
+struct ib_uverbs_rss_caps {
+  __u32 supported_qpts;
+  __u32 max_rwq_indirection_tables;
+  __u32 max_rwq_indirection_table_size;
+  __u32 reserved;
+};
+struct ib_uverbs_tm_caps {
+  __u32 max_rndv_hdr_size;
+  __u32 max_num_tags;
+  __u32 flags;
+  __u32 max_ops;
+  __u32 max_sge;
+  __u32 reserved;
+};
+struct ib_uverbs_ex_query_device_resp {
+  struct ib_uverbs_query_device_resp base;
+  __u32 comp_mask;
+  __u32 response_length;
+  struct ib_uverbs_odp_caps odp_caps;
+  __aligned_u64 timestamp_mask;
+  __aligned_u64 hca_core_clock;
+  __aligned_u64 device_cap_flags_ex;
+  struct ib_uverbs_rss_caps rss_caps;
+  __u32 max_wq_type_rq;
+  __u32 raw_packet_caps;
+  struct ib_uverbs_tm_caps tm_caps;
+  struct ib_uverbs_cq_moderation_caps cq_moderation_caps;
+  __aligned_u64 max_dm_size;
+  __u32 xrc_odp_caps;
+  __u32 reserved;
+};
+struct ib_uverbs_query_port {
+  __aligned_u64 response;
+  __u8 port_num;
+  __u8 reserved[7];
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_query_port_resp {
+  __u32 port_cap_flags;
+  __u32 max_msg_sz;
+  __u32 bad_pkey_cntr;
+  __u32 qkey_viol_cntr;
+  __u32 gid_tbl_len;
+  __u16 pkey_tbl_len;
+  __u16 lid;
+  __u16 sm_lid;
+  __u8 state;
+  __u8 max_mtu;
+  __u8 active_mtu;
+  __u8 lmc;
+  __u8 max_vl_num;
+  __u8 sm_sl;
+  __u8 subnet_timeout;
+  __u8 init_type_reply;
+  __u8 active_width;
+  __u8 active_speed;
+  __u8 phys_state;
+  __u8 link_layer;
+  __u8 flags;
+  __u8 reserved;
+};
+struct ib_uverbs_alloc_pd {
+  __aligned_u64 response;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_alloc_pd_resp {
+  __u32 pd_handle;
+  __u32 driver_data[0];
+};
+struct ib_uverbs_dealloc_pd {
+  __u32 pd_handle;
+};
+struct ib_uverbs_open_xrcd {
+  __aligned_u64 response;
+  __u32 fd;
+  __u32 oflags;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_open_xrcd_resp {
+  __u32 xrcd_handle;
+  __u32 driver_data[0];
+};
+struct ib_uverbs_close_xrcd {
+  __u32 xrcd_handle;
+};
+struct ib_uverbs_reg_mr {
+  __aligned_u64 response;
+  __aligned_u64 start;
+  __aligned_u64 length;
+  __aligned_u64 hca_va;
+  __u32 pd_handle;
+  __u32 access_flags;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_reg_mr_resp {
+  __u32 mr_handle;
+  __u32 lkey;
+  __u32 rkey;
+  __u32 driver_data[0];
+};
+struct ib_uverbs_rereg_mr {
+  __aligned_u64 response;
+  __u32 mr_handle;
+  __u32 flags;
+  __aligned_u64 start;
+  __aligned_u64 length;
+  __aligned_u64 hca_va;
+  __u32 pd_handle;
+  __u32 access_flags;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_rereg_mr_resp {
+  __u32 lkey;
+  __u32 rkey;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_dereg_mr {
+  __u32 mr_handle;
+};
+struct ib_uverbs_alloc_mw {
+  __aligned_u64 response;
+  __u32 pd_handle;
+  __u8 mw_type;
+  __u8 reserved[3];
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_alloc_mw_resp {
+  __u32 mw_handle;
+  __u32 rkey;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_dealloc_mw {
+  __u32 mw_handle;
+};
+struct ib_uverbs_create_comp_channel {
+  __aligned_u64 response;
+};
+struct ib_uverbs_create_comp_channel_resp {
+  __u32 fd;
+};
+struct ib_uverbs_create_cq {
+  __aligned_u64 response;
+  __aligned_u64 user_handle;
+  __u32 cqe;
+  __u32 comp_vector;
+  __s32 comp_channel;
+  __u32 reserved;
+  __aligned_u64 driver_data[0];
+};
+enum ib_uverbs_ex_create_cq_flags {
+  IB_UVERBS_CQ_FLAGS_TIMESTAMP_COMPLETION = 1 << 0,
+  IB_UVERBS_CQ_FLAGS_IGNORE_OVERRUN = 1 << 1,
+};
+struct ib_uverbs_ex_create_cq {
+  __aligned_u64 user_handle;
+  __u32 cqe;
+  __u32 comp_vector;
+  __s32 comp_channel;
+  __u32 comp_mask;
+  __u32 flags;
+  __u32 reserved;
+};
+struct ib_uverbs_create_cq_resp {
+  __u32 cq_handle;
+  __u32 cqe;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_ex_create_cq_resp {
+  struct ib_uverbs_create_cq_resp base;
+  __u32 comp_mask;
+  __u32 response_length;
+};
+struct ib_uverbs_resize_cq {
+  __aligned_u64 response;
+  __u32 cq_handle;
+  __u32 cqe;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_resize_cq_resp {
+  __u32 cqe;
+  __u32 reserved;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_poll_cq {
+  __aligned_u64 response;
+  __u32 cq_handle;
+  __u32 ne;
+};
+enum ib_uverbs_wc_opcode {
+  IB_UVERBS_WC_SEND = 0,
+  IB_UVERBS_WC_RDMA_WRITE = 1,
+  IB_UVERBS_WC_RDMA_READ = 2,
+  IB_UVERBS_WC_COMP_SWAP = 3,
+  IB_UVERBS_WC_FETCH_ADD = 4,
+  IB_UVERBS_WC_BIND_MW = 5,
+  IB_UVERBS_WC_LOCAL_INV = 6,
+  IB_UVERBS_WC_TSO = 7,
+};
+struct ib_uverbs_wc {
+  __aligned_u64 wr_id;
+  __u32 status;
+  __u32 opcode;
+  __u32 vendor_err;
+  __u32 byte_len;
+  union {
+    __be32 imm_data;
+    __u32 invalidate_rkey;
+  } ex;
+  __u32 qp_num;
+  __u32 src_qp;
+  __u32 wc_flags;
+  __u16 pkey_index;
+  __u16 slid;
+  __u8 sl;
+  __u8 dlid_path_bits;
+  __u8 port_num;
+  __u8 reserved;
+};
+struct ib_uverbs_poll_cq_resp {
+  __u32 count;
+  __u32 reserved;
+  struct ib_uverbs_wc wc[0];
+};
+struct ib_uverbs_req_notify_cq {
+  __u32 cq_handle;
+  __u32 solicited_only;
+};
+struct ib_uverbs_destroy_cq {
+  __aligned_u64 response;
+  __u32 cq_handle;
+  __u32 reserved;
+};
+struct ib_uverbs_destroy_cq_resp {
+  __u32 comp_events_reported;
+  __u32 async_events_reported;
+};
+struct ib_uverbs_global_route {
+  __u8 dgid[16];
+  __u32 flow_label;
+  __u8 sgid_index;
+  __u8 hop_limit;
+  __u8 traffic_class;
+  __u8 reserved;
+};
+struct ib_uverbs_ah_attr {
+  struct ib_uverbs_global_route grh;
+  __u16 dlid;
+  __u8 sl;
+  __u8 src_path_bits;
+  __u8 static_rate;
+  __u8 is_global;
+  __u8 port_num;
+  __u8 reserved;
+};
+struct ib_uverbs_qp_attr {
+  __u32 qp_attr_mask;
+  __u32 qp_state;
+  __u32 cur_qp_state;
+  __u32 path_mtu;
+  __u32 path_mig_state;
+  __u32 qkey;
+  __u32 rq_psn;
+  __u32 sq_psn;
+  __u32 dest_qp_num;
+  __u32 qp_access_flags;
+  struct ib_uverbs_ah_attr ah_attr;
+  struct ib_uverbs_ah_attr alt_ah_attr;
+  __u32 max_send_wr;
+  __u32 max_recv_wr;
+  __u32 max_send_sge;
+  __u32 max_recv_sge;
+  __u32 max_inline_data;
+  __u16 pkey_index;
+  __u16 alt_pkey_index;
+  __u8 en_sqd_async_notify;
+  __u8 sq_draining;
+  __u8 max_rd_atomic;
+  __u8 max_dest_rd_atomic;
+  __u8 min_rnr_timer;
+  __u8 port_num;
+  __u8 timeout;
+  __u8 retry_cnt;
+  __u8 rnr_retry;
+  __u8 alt_port_num;
+  __u8 alt_timeout;
+  __u8 reserved[5];
+};
+struct ib_uverbs_create_qp {
+  __aligned_u64 response;
+  __aligned_u64 user_handle;
+  __u32 pd_handle;
+  __u32 send_cq_handle;
+  __u32 recv_cq_handle;
+  __u32 srq_handle;
+  __u32 max_send_wr;
+  __u32 max_recv_wr;
+  __u32 max_send_sge;
+  __u32 max_recv_sge;
+  __u32 max_inline_data;
+  __u8 sq_sig_all;
+  __u8 qp_type;
+  __u8 is_srq;
+  __u8 reserved;
+  __aligned_u64 driver_data[0];
+};
+enum ib_uverbs_create_qp_mask {
+  IB_UVERBS_CREATE_QP_MASK_IND_TABLE = 1UL << 0,
+};
+enum {
+  IB_UVERBS_CREATE_QP_SUP_COMP_MASK = IB_UVERBS_CREATE_QP_MASK_IND_TABLE,
+};
+struct ib_uverbs_ex_create_qp {
+  __aligned_u64 user_handle;
+  __u32 pd_handle;
+  __u32 send_cq_handle;
+  __u32 recv_cq_handle;
+  __u32 srq_handle;
+  __u32 max_send_wr;
+  __u32 max_recv_wr;
+  __u32 max_send_sge;
+  __u32 max_recv_sge;
+  __u32 max_inline_data;
+  __u8 sq_sig_all;
+  __u8 qp_type;
+  __u8 is_srq;
+  __u8 reserved;
+  __u32 comp_mask;
+  __u32 create_flags;
+  __u32 rwq_ind_tbl_handle;
+  __u32 source_qpn;
+};
+struct ib_uverbs_open_qp {
+  __aligned_u64 response;
+  __aligned_u64 user_handle;
+  __u32 pd_handle;
+  __u32 qpn;
+  __u8 qp_type;
+  __u8 reserved[7];
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_create_qp_resp {
+  __u32 qp_handle;
+  __u32 qpn;
+  __u32 max_send_wr;
+  __u32 max_recv_wr;
+  __u32 max_send_sge;
+  __u32 max_recv_sge;
+  __u32 max_inline_data;
+  __u32 reserved;
+  __u32 driver_data[0];
+};
+struct ib_uverbs_ex_create_qp_resp {
+  struct ib_uverbs_create_qp_resp base;
+  __u32 comp_mask;
+  __u32 response_length;
+};
+struct ib_uverbs_qp_dest {
+  __u8 dgid[16];
+  __u32 flow_label;
+  __u16 dlid;
+  __u16 reserved;
+  __u8 sgid_index;
+  __u8 hop_limit;
+  __u8 traffic_class;
+  __u8 sl;
+  __u8 src_path_bits;
+  __u8 static_rate;
+  __u8 is_global;
+  __u8 port_num;
+};
+struct ib_uverbs_query_qp {
+  __aligned_u64 response;
+  __u32 qp_handle;
+  __u32 attr_mask;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_query_qp_resp {
+  struct ib_uverbs_qp_dest dest;
+  struct ib_uverbs_qp_dest alt_dest;
+  __u32 max_send_wr;
+  __u32 max_recv_wr;
+  __u32 max_send_sge;
+  __u32 max_recv_sge;
+  __u32 max_inline_data;
+  __u32 qkey;
+  __u32 rq_psn;
+  __u32 sq_psn;
+  __u32 dest_qp_num;
+  __u32 qp_access_flags;
+  __u16 pkey_index;
+  __u16 alt_pkey_index;
+  __u8 qp_state;
+  __u8 cur_qp_state;
+  __u8 path_mtu;
+  __u8 path_mig_state;
+  __u8 sq_draining;
+  __u8 max_rd_atomic;
+  __u8 max_dest_rd_atomic;
+  __u8 min_rnr_timer;
+  __u8 port_num;
+  __u8 timeout;
+  __u8 retry_cnt;
+  __u8 rnr_retry;
+  __u8 alt_port_num;
+  __u8 alt_timeout;
+  __u8 sq_sig_all;
+  __u8 reserved[5];
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_modify_qp {
+  struct ib_uverbs_qp_dest dest;
+  struct ib_uverbs_qp_dest alt_dest;
+  __u32 qp_handle;
+  __u32 attr_mask;
+  __u32 qkey;
+  __u32 rq_psn;
+  __u32 sq_psn;
+  __u32 dest_qp_num;
+  __u32 qp_access_flags;
+  __u16 pkey_index;
+  __u16 alt_pkey_index;
+  __u8 qp_state;
+  __u8 cur_qp_state;
+  __u8 path_mtu;
+  __u8 path_mig_state;
+  __u8 en_sqd_async_notify;
+  __u8 max_rd_atomic;
+  __u8 max_dest_rd_atomic;
+  __u8 min_rnr_timer;
+  __u8 port_num;
+  __u8 timeout;
+  __u8 retry_cnt;
+  __u8 rnr_retry;
+  __u8 alt_port_num;
+  __u8 alt_timeout;
+  __u8 reserved[2];
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_ex_modify_qp {
+  struct ib_uverbs_modify_qp base;
+  __u32 rate_limit;
+  __u32 reserved;
+};
+struct ib_uverbs_ex_modify_qp_resp {
+  __u32 comp_mask;
+  __u32 response_length;
+};
+struct ib_uverbs_destroy_qp {
+  __aligned_u64 response;
+  __u32 qp_handle;
+  __u32 reserved;
+};
+struct ib_uverbs_destroy_qp_resp {
+  __u32 events_reported;
+};
+struct ib_uverbs_sge {
+  __aligned_u64 addr;
+  __u32 length;
+  __u32 lkey;
+};
+enum ib_uverbs_wr_opcode {
+  IB_UVERBS_WR_RDMA_WRITE = 0,
+  IB_UVERBS_WR_RDMA_WRITE_WITH_IMM = 1,
+  IB_UVERBS_WR_SEND = 2,
+  IB_UVERBS_WR_SEND_WITH_IMM = 3,
+  IB_UVERBS_WR_RDMA_READ = 4,
+  IB_UVERBS_WR_ATOMIC_CMP_AND_SWP = 5,
+  IB_UVERBS_WR_ATOMIC_FETCH_AND_ADD = 6,
+  IB_UVERBS_WR_LOCAL_INV = 7,
+  IB_UVERBS_WR_BIND_MW = 8,
+  IB_UVERBS_WR_SEND_WITH_INV = 9,
+  IB_UVERBS_WR_TSO = 10,
+  IB_UVERBS_WR_RDMA_READ_WITH_INV = 11,
+  IB_UVERBS_WR_MASKED_ATOMIC_CMP_AND_SWP = 12,
+  IB_UVERBS_WR_MASKED_ATOMIC_FETCH_AND_ADD = 13,
+};
+struct ib_uverbs_send_wr {
+  __aligned_u64 wr_id;
+  __u32 num_sge;
+  __u32 opcode;
+  __u32 send_flags;
+  union {
+    __be32 imm_data;
+    __u32 invalidate_rkey;
+  } ex;
+  union {
+    struct {
+      __aligned_u64 remote_addr;
+      __u32 rkey;
+      __u32 reserved;
+    } rdma;
+    struct {
+      __aligned_u64 remote_addr;
+      __aligned_u64 compare_add;
+      __aligned_u64 swap;
+      __u32 rkey;
+      __u32 reserved;
+    } atomic;
+    struct {
+      __u32 ah;
+      __u32 remote_qpn;
+      __u32 remote_qkey;
+      __u32 reserved;
+    } ud;
+  } wr;
+};
+struct ib_uverbs_post_send {
+  __aligned_u64 response;
+  __u32 qp_handle;
+  __u32 wr_count;
+  __u32 sge_count;
+  __u32 wqe_size;
+  struct ib_uverbs_send_wr send_wr[0];
+};
+struct ib_uverbs_post_send_resp {
+  __u32 bad_wr;
+};
+struct ib_uverbs_recv_wr {
+  __aligned_u64 wr_id;
+  __u32 num_sge;
+  __u32 reserved;
+};
+struct ib_uverbs_post_recv {
+  __aligned_u64 response;
+  __u32 qp_handle;
+  __u32 wr_count;
+  __u32 sge_count;
+  __u32 wqe_size;
+  struct ib_uverbs_recv_wr recv_wr[0];
+};
+struct ib_uverbs_post_recv_resp {
+  __u32 bad_wr;
+};
+struct ib_uverbs_post_srq_recv {
+  __aligned_u64 response;
+  __u32 srq_handle;
+  __u32 wr_count;
+  __u32 sge_count;
+  __u32 wqe_size;
+  struct ib_uverbs_recv_wr recv[0];
+};
+struct ib_uverbs_post_srq_recv_resp {
+  __u32 bad_wr;
+};
+struct ib_uverbs_create_ah {
+  __aligned_u64 response;
+  __aligned_u64 user_handle;
+  __u32 pd_handle;
+  __u32 reserved;
+  struct ib_uverbs_ah_attr attr;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_create_ah_resp {
+  __u32 ah_handle;
+  __u32 driver_data[0];
+};
+struct ib_uverbs_destroy_ah {
+  __u32 ah_handle;
+};
+struct ib_uverbs_attach_mcast {
+  __u8 gid[16];
+  __u32 qp_handle;
+  __u16 mlid;
+  __u16 reserved;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_detach_mcast {
+  __u8 gid[16];
+  __u32 qp_handle;
+  __u16 mlid;
+  __u16 reserved;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_flow_spec_hdr {
+  __u32 type;
+  __u16 size;
+  __u16 reserved;
+  __aligned_u64 flow_spec_data[0];
+};
+struct ib_uverbs_flow_eth_filter {
+  __u8 dst_mac[6];
+  __u8 src_mac[6];
+  __be16 ether_type;
+  __be16 vlan_tag;
+};
+struct ib_uverbs_flow_spec_eth {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  struct ib_uverbs_flow_eth_filter val;
+  struct ib_uverbs_flow_eth_filter mask;
+};
+struct ib_uverbs_flow_ipv4_filter {
+  __be32 src_ip;
+  __be32 dst_ip;
+  __u8 proto;
+  __u8 tos;
+  __u8 ttl;
+  __u8 flags;
+};
+struct ib_uverbs_flow_spec_ipv4 {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  struct ib_uverbs_flow_ipv4_filter val;
+  struct ib_uverbs_flow_ipv4_filter mask;
+};
+struct ib_uverbs_flow_tcp_udp_filter {
+  __be16 dst_port;
+  __be16 src_port;
+};
+struct ib_uverbs_flow_spec_tcp_udp {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  struct ib_uverbs_flow_tcp_udp_filter val;
+  struct ib_uverbs_flow_tcp_udp_filter mask;
+};
+struct ib_uverbs_flow_ipv6_filter {
+  __u8 src_ip[16];
+  __u8 dst_ip[16];
+  __be32 flow_label;
+  __u8 next_hdr;
+  __u8 traffic_class;
+  __u8 hop_limit;
+  __u8 reserved;
+};
+struct ib_uverbs_flow_spec_ipv6 {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  struct ib_uverbs_flow_ipv6_filter val;
+  struct ib_uverbs_flow_ipv6_filter mask;
+};
+struct ib_uverbs_flow_spec_action_tag {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  __u32 tag_id;
+  __u32 reserved1;
+};
+struct ib_uverbs_flow_spec_action_drop {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+};
+struct ib_uverbs_flow_spec_action_handle {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  __u32 handle;
+  __u32 reserved1;
+};
+struct ib_uverbs_flow_spec_action_count {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  __u32 handle;
+  __u32 reserved1;
+};
+struct ib_uverbs_flow_tunnel_filter {
+  __be32 tunnel_id;
+};
+struct ib_uverbs_flow_spec_tunnel {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  struct ib_uverbs_flow_tunnel_filter val;
+  struct ib_uverbs_flow_tunnel_filter mask;
+};
+struct ib_uverbs_flow_spec_esp_filter {
+  __u32 spi;
+  __u32 seq;
+};
+struct ib_uverbs_flow_spec_esp {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  struct ib_uverbs_flow_spec_esp_filter val;
+  struct ib_uverbs_flow_spec_esp_filter mask;
+};
+struct ib_uverbs_flow_gre_filter {
+  __be16 c_ks_res0_ver;
+  __be16 protocol;
+  __be32 key;
+};
+struct ib_uverbs_flow_spec_gre {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  struct ib_uverbs_flow_gre_filter val;
+  struct ib_uverbs_flow_gre_filter mask;
+};
+struct ib_uverbs_flow_mpls_filter {
+  __be32 label;
+};
+struct ib_uverbs_flow_spec_mpls {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  struct ib_uverbs_flow_mpls_filter val;
+  struct ib_uverbs_flow_mpls_filter mask;
+};
+struct ib_uverbs_flow_attr {
+  __u32 type;
+  __u16 size;
+  __u16 priority;
+  __u8 num_of_specs;
+  __u8 reserved[2];
+  __u8 port;
+  __u32 flags;
+  struct ib_uverbs_flow_spec_hdr flow_specs[0];
+};
+struct ib_uverbs_create_flow {
+  __u32 comp_mask;
+  __u32 qp_handle;
+  struct ib_uverbs_flow_attr flow_attr;
+};
+struct ib_uverbs_create_flow_resp {
+  __u32 comp_mask;
+  __u32 flow_handle;
+};
+struct ib_uverbs_destroy_flow {
+  __u32 comp_mask;
+  __u32 flow_handle;
+};
+struct ib_uverbs_create_srq {
+  __aligned_u64 response;
+  __aligned_u64 user_handle;
+  __u32 pd_handle;
+  __u32 max_wr;
+  __u32 max_sge;
+  __u32 srq_limit;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_create_xsrq {
+  __aligned_u64 response;
+  __aligned_u64 user_handle;
+  __u32 srq_type;
+  __u32 pd_handle;
+  __u32 max_wr;
+  __u32 max_sge;
+  __u32 srq_limit;
+  __u32 max_num_tags;
+  __u32 xrcd_handle;
+  __u32 cq_handle;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_create_srq_resp {
+  __u32 srq_handle;
+  __u32 max_wr;
+  __u32 max_sge;
+  __u32 srqn;
+  __u32 driver_data[0];
+};
+struct ib_uverbs_modify_srq {
+  __u32 srq_handle;
+  __u32 attr_mask;
+  __u32 max_wr;
+  __u32 srq_limit;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_query_srq {
+  __aligned_u64 response;
+  __u32 srq_handle;
+  __u32 reserved;
+  __aligned_u64 driver_data[0];
+};
+struct ib_uverbs_query_srq_resp {
+  __u32 max_wr;
+  __u32 max_sge;
+  __u32 srq_limit;
+  __u32 reserved;
+};
+struct ib_uverbs_destroy_srq {
+  __aligned_u64 response;
+  __u32 srq_handle;
+  __u32 reserved;
+};
+struct ib_uverbs_destroy_srq_resp {
+  __u32 events_reported;
+};
+struct ib_uverbs_ex_create_wq {
+  __u32 comp_mask;
+  __u32 wq_type;
+  __aligned_u64 user_handle;
+  __u32 pd_handle;
+  __u32 cq_handle;
+  __u32 max_wr;
+  __u32 max_sge;
+  __u32 create_flags;
+  __u32 reserved;
+};
+struct ib_uverbs_ex_create_wq_resp {
+  __u32 comp_mask;
+  __u32 response_length;
+  __u32 wq_handle;
+  __u32 max_wr;
+  __u32 max_sge;
+  __u32 wqn;
+};
+struct ib_uverbs_ex_destroy_wq {
+  __u32 comp_mask;
+  __u32 wq_handle;
+};
+struct ib_uverbs_ex_destroy_wq_resp {
+  __u32 comp_mask;
+  __u32 response_length;
+  __u32 events_reported;
+  __u32 reserved;
+};
+struct ib_uverbs_ex_modify_wq {
+  __u32 attr_mask;
+  __u32 wq_handle;
+  __u32 wq_state;
+  __u32 curr_wq_state;
+  __u32 flags;
+  __u32 flags_mask;
+};
+#define IB_USER_VERBS_MAX_LOG_IND_TBL_SIZE 0x0d
+struct ib_uverbs_ex_create_rwq_ind_table {
+  __u32 comp_mask;
+  __u32 log_ind_tbl_size;
+  __u32 wq_handles[0];
+};
+struct ib_uverbs_ex_create_rwq_ind_table_resp {
+  __u32 comp_mask;
+  __u32 response_length;
+  __u32 ind_tbl_handle;
+  __u32 ind_tbl_num;
+};
+struct ib_uverbs_ex_destroy_rwq_ind_table {
+  __u32 comp_mask;
+  __u32 ind_tbl_handle;
+};
+struct ib_uverbs_cq_moderation {
+  __u16 cq_count;
+  __u16 cq_period;
+};
+struct ib_uverbs_ex_modify_cq {
+  __u32 cq_handle;
+  __u32 attr_mask;
+  struct ib_uverbs_cq_moderation attr;
+  __u32 reserved;
+};
+#define IB_DEVICE_NAME_MAX 64
+#endif
diff --git a/x86_64-linux-musl/include/rdma/irdma-abi.h b/x86_64-linux-musl/include/rdma/irdma-abi.h
new file mode 100644
index 0000000..b6840cf
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/irdma-abi.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 IRDMA_ABI_H
+#define IRDMA_ABI_H
+#include <linux/types.h>
+#define IRDMA_ABI_VER 5
+enum irdma_memreg_type {
+  IRDMA_MEMREG_TYPE_MEM = 0,
+  IRDMA_MEMREG_TYPE_QP = 1,
+  IRDMA_MEMREG_TYPE_CQ = 2,
+};
+struct irdma_alloc_ucontext_req {
+  __u32 rsvd32;
+  __u8 userspace_ver;
+  __u8 rsvd8[3];
+};
+struct irdma_alloc_ucontext_resp {
+  __u32 max_pds;
+  __u32 max_qps;
+  __u32 wq_size;
+  __u8 kernel_ver;
+  __u8 rsvd[3];
+  __aligned_u64 feature_flags;
+  __aligned_u64 db_mmap_key;
+  __u32 max_hw_wq_frags;
+  __u32 max_hw_read_sges;
+  __u32 max_hw_inline;
+  __u32 max_hw_rq_quanta;
+  __u32 max_hw_wq_quanta;
+  __u32 min_hw_cq_size;
+  __u32 max_hw_cq_size;
+  __u16 max_hw_sq_chunk;
+  __u8 hw_rev;
+  __u8 rsvd2;
+};
+struct irdma_alloc_pd_resp {
+  __u32 pd_id;
+  __u8 rsvd[4];
+};
+struct irdma_resize_cq_req {
+  __aligned_u64 user_cq_buffer;
+};
+struct irdma_create_cq_req {
+  __aligned_u64 user_cq_buf;
+  __aligned_u64 user_shadow_area;
+};
+struct irdma_create_qp_req {
+  __aligned_u64 user_wqe_bufs;
+  __aligned_u64 user_compl_ctx;
+};
+struct irdma_mem_reg_req {
+  __u16 reg_type;
+  __u16 cq_pages;
+  __u16 rq_pages;
+  __u16 sq_pages;
+};
+struct irdma_modify_qp_req {
+  __u8 sq_flush;
+  __u8 rq_flush;
+  __u8 rsvd[6];
+};
+struct irdma_create_cq_resp {
+  __u32 cq_id;
+  __u32 cq_size;
+};
+struct irdma_create_qp_resp {
+  __u32 qp_id;
+  __u32 actual_sq_size;
+  __u32 actual_rq_size;
+  __u32 irdma_drv_opt;
+  __u16 push_idx;
+  __u8 lsmm;
+  __u8 rsvd;
+  __u32 qp_caps;
+};
+struct irdma_modify_qp_resp {
+  __aligned_u64 push_wqe_mmap_key;
+  __aligned_u64 push_db_mmap_key;
+  __u16 push_offset;
+  __u8 push_valid;
+  __u8 rsvd[5];
+};
+struct irdma_create_ah_resp {
+  __u32 ah_id;
+  __u8 rsvd[4];
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/mlx4-abi.h b/x86_64-linux-musl/include/rdma/mlx4-abi.h
new file mode 100644
index 0000000..121762b
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/mlx4-abi.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 MLX4_ABI_USER_H
+#define MLX4_ABI_USER_H
+#include <linux/types.h>
+#define MLX4_IB_UVERBS_NO_DEV_CAPS_ABI_VERSION 3
+#define MLX4_IB_UVERBS_ABI_VERSION 4
+struct mlx4_ib_alloc_ucontext_resp_v3 {
+  __u32 qp_tab_size;
+  __u16 bf_reg_size;
+  __u16 bf_regs_per_page;
+};
+enum {
+  MLX4_USER_DEV_CAP_LARGE_CQE = 1L << 0,
+};
+struct mlx4_ib_alloc_ucontext_resp {
+  __u32 dev_caps;
+  __u32 qp_tab_size;
+  __u16 bf_reg_size;
+  __u16 bf_regs_per_page;
+  __u32 cqe_size;
+};
+struct mlx4_ib_alloc_pd_resp {
+  __u32 pdn;
+  __u32 reserved;
+};
+struct mlx4_ib_create_cq {
+  __aligned_u64 buf_addr;
+  __aligned_u64 db_addr;
+};
+struct mlx4_ib_create_cq_resp {
+  __u32 cqn;
+  __u32 reserved;
+};
+struct mlx4_ib_resize_cq {
+  __aligned_u64 buf_addr;
+};
+struct mlx4_ib_create_srq {
+  __aligned_u64 buf_addr;
+  __aligned_u64 db_addr;
+};
+struct mlx4_ib_create_srq_resp {
+  __u32 srqn;
+  __u32 reserved;
+};
+struct mlx4_ib_create_qp_rss {
+  __aligned_u64 rx_hash_fields_mask;
+  __u8 rx_hash_function;
+  __u8 reserved[7];
+  __u8 rx_hash_key[40];
+  __u32 comp_mask;
+  __u32 reserved1;
+};
+struct mlx4_ib_create_qp {
+  __aligned_u64 buf_addr;
+  __aligned_u64 db_addr;
+  __u8 log_sq_bb_count;
+  __u8 log_sq_stride;
+  __u8 sq_no_prefetch;
+  __u8 reserved;
+  __u32 inl_recv_sz;
+};
+struct mlx4_ib_create_wq {
+  __aligned_u64 buf_addr;
+  __aligned_u64 db_addr;
+  __u8 log_range_size;
+  __u8 reserved[3];
+  __u32 comp_mask;
+};
+struct mlx4_ib_modify_wq {
+  __u32 comp_mask;
+  __u32 reserved;
+};
+struct mlx4_ib_create_rwq_ind_tbl_resp {
+  __u32 response_length;
+  __u32 reserved;
+};
+enum mlx4_ib_rx_hash_function_flags {
+  MLX4_IB_RX_HASH_FUNC_TOEPLITZ = 1 << 0,
+};
+enum mlx4_ib_rx_hash_fields {
+  MLX4_IB_RX_HASH_SRC_IPV4 = 1 << 0,
+  MLX4_IB_RX_HASH_DST_IPV4 = 1 << 1,
+  MLX4_IB_RX_HASH_SRC_IPV6 = 1 << 2,
+  MLX4_IB_RX_HASH_DST_IPV6 = 1 << 3,
+  MLX4_IB_RX_HASH_SRC_PORT_TCP = 1 << 4,
+  MLX4_IB_RX_HASH_DST_PORT_TCP = 1 << 5,
+  MLX4_IB_RX_HASH_SRC_PORT_UDP = 1 << 6,
+  MLX4_IB_RX_HASH_DST_PORT_UDP = 1 << 7,
+  MLX4_IB_RX_HASH_INNER = 1ULL << 31,
+};
+struct mlx4_ib_rss_caps {
+  __aligned_u64 rx_hash_fields_mask;
+  __u8 rx_hash_function;
+  __u8 reserved[7];
+};
+enum query_device_resp_mask {
+  MLX4_IB_QUERY_DEV_RESP_MASK_CORE_CLOCK_OFFSET = 1UL << 0,
+};
+struct mlx4_ib_tso_caps {
+  __u32 max_tso;
+  __u32 supported_qpts;
+};
+struct mlx4_uverbs_ex_query_device_resp {
+  __u32 comp_mask;
+  __u32 response_length;
+  __aligned_u64 hca_core_clock_offset;
+  __u32 max_inl_recv_sz;
+  __u32 reserved;
+  struct mlx4_ib_rss_caps rss_caps;
+  struct mlx4_ib_tso_caps tso_caps;
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/mlx5-abi.h b/x86_64-linux-musl/include/rdma/mlx5-abi.h
new file mode 100644
index 0000000..aadb20e
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/mlx5-abi.h
@@ -0,0 +1,397 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef MLX5_ABI_USER_H
+#define MLX5_ABI_USER_H
+#include <linux/types.h>
+#include <linux/if_ether.h>
+#include <rdma/ib_user_ioctl_verbs.h>
+enum {
+  MLX5_QP_FLAG_SIGNATURE = 1 << 0,
+  MLX5_QP_FLAG_SCATTER_CQE = 1 << 1,
+  MLX5_QP_FLAG_TUNNEL_OFFLOADS = 1 << 2,
+  MLX5_QP_FLAG_BFREG_INDEX = 1 << 3,
+  MLX5_QP_FLAG_TYPE_DCT = 1 << 4,
+  MLX5_QP_FLAG_TYPE_DCI = 1 << 5,
+  MLX5_QP_FLAG_TIR_ALLOW_SELF_LB_UC = 1 << 6,
+  MLX5_QP_FLAG_TIR_ALLOW_SELF_LB_MC = 1 << 7,
+  MLX5_QP_FLAG_ALLOW_SCATTER_CQE = 1 << 8,
+  MLX5_QP_FLAG_PACKET_BASED_CREDIT_MODE = 1 << 9,
+  MLX5_QP_FLAG_UAR_PAGE_INDEX = 1 << 10,
+  MLX5_QP_FLAG_DCI_STREAM = 1 << 11,
+};
+enum {
+  MLX5_SRQ_FLAG_SIGNATURE = 1 << 0,
+};
+enum {
+  MLX5_WQ_FLAG_SIGNATURE = 1 << 0,
+};
+#define MLX5_IB_UVERBS_ABI_VERSION 1
+struct mlx5_ib_alloc_ucontext_req {
+  __u32 total_num_bfregs;
+  __u32 num_low_latency_bfregs;
+};
+enum mlx5_lib_caps {
+  MLX5_LIB_CAP_4K_UAR = (__u64) 1 << 0,
+  MLX5_LIB_CAP_DYN_UAR = (__u64) 1 << 1,
+};
+enum mlx5_ib_alloc_uctx_v2_flags {
+  MLX5_IB_ALLOC_UCTX_DEVX = 1 << 0,
+};
+struct mlx5_ib_alloc_ucontext_req_v2 {
+  __u32 total_num_bfregs;
+  __u32 num_low_latency_bfregs;
+  __u32 flags;
+  __u32 comp_mask;
+  __u8 max_cqe_version;
+  __u8 reserved0;
+  __u16 reserved1;
+  __u32 reserved2;
+  __aligned_u64 lib_caps;
+};
+enum mlx5_ib_alloc_ucontext_resp_mask {
+  MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_CORE_CLOCK_OFFSET = 1UL << 0,
+  MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_DUMP_FILL_MKEY = 1UL << 1,
+  MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_ECE = 1UL << 2,
+  MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_SQD2RTS = 1UL << 3,
+  MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_REAL_TIME_TS = 1UL << 4,
+};
+enum mlx5_user_cmds_supp_uhw {
+  MLX5_USER_CMDS_SUPP_UHW_QUERY_DEVICE = 1 << 0,
+  MLX5_USER_CMDS_SUPP_UHW_CREATE_AH = 1 << 1,
+};
+enum mlx5_user_inline_mode {
+  MLX5_USER_INLINE_MODE_NA,
+  MLX5_USER_INLINE_MODE_NONE,
+  MLX5_USER_INLINE_MODE_L2,
+  MLX5_USER_INLINE_MODE_IP,
+  MLX5_USER_INLINE_MODE_TCP_UDP,
+};
+enum {
+  MLX5_USER_ALLOC_UCONTEXT_FLOW_ACTION_FLAGS_ESP_AES_GCM = 1 << 0,
+  MLX5_USER_ALLOC_UCONTEXT_FLOW_ACTION_FLAGS_ESP_AES_GCM_REQ_METADATA = 1 << 1,
+  MLX5_USER_ALLOC_UCONTEXT_FLOW_ACTION_FLAGS_ESP_AES_GCM_SPI_STEERING = 1 << 2,
+  MLX5_USER_ALLOC_UCONTEXT_FLOW_ACTION_FLAGS_ESP_AES_GCM_FULL_OFFLOAD = 1 << 3,
+  MLX5_USER_ALLOC_UCONTEXT_FLOW_ACTION_FLAGS_ESP_AES_GCM_TX_IV_IS_ESN = 1 << 4,
+};
+struct mlx5_ib_alloc_ucontext_resp {
+  __u32 qp_tab_size;
+  __u32 bf_reg_size;
+  __u32 tot_bfregs;
+  __u32 cache_line_size;
+  __u16 max_sq_desc_sz;
+  __u16 max_rq_desc_sz;
+  __u32 max_send_wqebb;
+  __u32 max_recv_wr;
+  __u32 max_srq_recv_wr;
+  __u16 num_ports;
+  __u16 flow_action_flags;
+  __u32 comp_mask;
+  __u32 response_length;
+  __u8 cqe_version;
+  __u8 cmds_supp_uhw;
+  __u8 eth_min_inline;
+  __u8 clock_info_versions;
+  __aligned_u64 hca_core_clock_offset;
+  __u32 log_uar_size;
+  __u32 num_uars_per_page;
+  __u32 num_dyn_bfregs;
+  __u32 dump_fill_mkey;
+};
+struct mlx5_ib_alloc_pd_resp {
+  __u32 pdn;
+};
+struct mlx5_ib_tso_caps {
+  __u32 max_tso;
+  __u32 supported_qpts;
+};
+struct mlx5_ib_rss_caps {
+  __aligned_u64 rx_hash_fields_mask;
+  __u8 rx_hash_function;
+  __u8 reserved[7];
+};
+enum mlx5_ib_cqe_comp_res_format {
+  MLX5_IB_CQE_RES_FORMAT_HASH = 1 << 0,
+  MLX5_IB_CQE_RES_FORMAT_CSUM = 1 << 1,
+  MLX5_IB_CQE_RES_FORMAT_CSUM_STRIDX = 1 << 2,
+};
+struct mlx5_ib_cqe_comp_caps {
+  __u32 max_num;
+  __u32 supported_format;
+};
+enum mlx5_ib_packet_pacing_cap_flags {
+  MLX5_IB_PP_SUPPORT_BURST = 1 << 0,
+};
+struct mlx5_packet_pacing_caps {
+  __u32 qp_rate_limit_min;
+  __u32 qp_rate_limit_max;
+  __u32 supported_qpts;
+  __u8 cap_flags;
+  __u8 reserved[3];
+};
+enum mlx5_ib_mpw_caps {
+  MPW_RESERVED = 1 << 0,
+  MLX5_IB_ALLOW_MPW = 1 << 1,
+  MLX5_IB_SUPPORT_EMPW = 1 << 2,
+};
+enum mlx5_ib_sw_parsing_offloads {
+  MLX5_IB_SW_PARSING = 1 << 0,
+  MLX5_IB_SW_PARSING_CSUM = 1 << 1,
+  MLX5_IB_SW_PARSING_LSO = 1 << 2,
+};
+struct mlx5_ib_sw_parsing_caps {
+  __u32 sw_parsing_offloads;
+  __u32 supported_qpts;
+};
+struct mlx5_ib_striding_rq_caps {
+  __u32 min_single_stride_log_num_of_bytes;
+  __u32 max_single_stride_log_num_of_bytes;
+  __u32 min_single_wqe_log_num_of_strides;
+  __u32 max_single_wqe_log_num_of_strides;
+  __u32 supported_qpts;
+  __u32 reserved;
+};
+struct mlx5_ib_dci_streams_caps {
+  __u8 max_log_num_concurent;
+  __u8 max_log_num_errored;
+};
+enum mlx5_ib_query_dev_resp_flags {
+  MLX5_IB_QUERY_DEV_RESP_FLAGS_CQE_128B_COMP = 1 << 0,
+  MLX5_IB_QUERY_DEV_RESP_FLAGS_CQE_128B_PAD = 1 << 1,
+  MLX5_IB_QUERY_DEV_RESP_PACKET_BASED_CREDIT_MODE = 1 << 2,
+  MLX5_IB_QUERY_DEV_RESP_FLAGS_SCAT2CQE_DCT = 1 << 3,
+};
+enum mlx5_ib_tunnel_offloads {
+  MLX5_IB_TUNNELED_OFFLOADS_VXLAN = 1 << 0,
+  MLX5_IB_TUNNELED_OFFLOADS_GRE = 1 << 1,
+  MLX5_IB_TUNNELED_OFFLOADS_GENEVE = 1 << 2,
+  MLX5_IB_TUNNELED_OFFLOADS_MPLS_GRE = 1 << 3,
+  MLX5_IB_TUNNELED_OFFLOADS_MPLS_UDP = 1 << 4,
+};
+struct mlx5_ib_query_device_resp {
+  __u32 comp_mask;
+  __u32 response_length;
+  struct mlx5_ib_tso_caps tso_caps;
+  struct mlx5_ib_rss_caps rss_caps;
+  struct mlx5_ib_cqe_comp_caps cqe_comp_caps;
+  struct mlx5_packet_pacing_caps packet_pacing_caps;
+  __u32 mlx5_ib_support_multi_pkt_send_wqes;
+  __u32 flags;
+  struct mlx5_ib_sw_parsing_caps sw_parsing_caps;
+  struct mlx5_ib_striding_rq_caps striding_rq_caps;
+  __u32 tunnel_offloads_caps;
+  struct mlx5_ib_dci_streams_caps dci_streams_caps;
+  __u16 reserved;
+};
+enum mlx5_ib_create_cq_flags {
+  MLX5_IB_CREATE_CQ_FLAGS_CQE_128B_PAD = 1 << 0,
+  MLX5_IB_CREATE_CQ_FLAGS_UAR_PAGE_INDEX = 1 << 1,
+  MLX5_IB_CREATE_CQ_FLAGS_REAL_TIME_TS = 1 << 2,
+};
+struct mlx5_ib_create_cq {
+  __aligned_u64 buf_addr;
+  __aligned_u64 db_addr;
+  __u32 cqe_size;
+  __u8 cqe_comp_en;
+  __u8 cqe_comp_res_format;
+  __u16 flags;
+  __u16 uar_page_index;
+  __u16 reserved0;
+  __u32 reserved1;
+};
+struct mlx5_ib_create_cq_resp {
+  __u32 cqn;
+  __u32 reserved;
+};
+struct mlx5_ib_resize_cq {
+  __aligned_u64 buf_addr;
+  __u16 cqe_size;
+  __u16 reserved0;
+  __u32 reserved1;
+};
+struct mlx5_ib_create_srq {
+  __aligned_u64 buf_addr;
+  __aligned_u64 db_addr;
+  __u32 flags;
+  __u32 reserved0;
+  __u32 uidx;
+  __u32 reserved1;
+};
+struct mlx5_ib_create_srq_resp {
+  __u32 srqn;
+  __u32 reserved;
+};
+struct mlx5_ib_create_qp_dci_streams {
+  __u8 log_num_concurent;
+  __u8 log_num_errored;
+};
+struct mlx5_ib_create_qp {
+  __aligned_u64 buf_addr;
+  __aligned_u64 db_addr;
+  __u32 sq_wqe_count;
+  __u32 rq_wqe_count;
+  __u32 rq_wqe_shift;
+  __u32 flags;
+  __u32 uidx;
+  __u32 bfreg_index;
+  union {
+    __aligned_u64 sq_buf_addr;
+    __aligned_u64 access_key;
+  };
+  __u32 ece_options;
+  struct mlx5_ib_create_qp_dci_streams dci_streams;
+  __u16 reserved;
+};
+enum mlx5_rx_hash_function_flags {
+  MLX5_RX_HASH_FUNC_TOEPLITZ = 1 << 0,
+};
+enum mlx5_rx_hash_fields {
+  MLX5_RX_HASH_SRC_IPV4 = 1 << 0,
+  MLX5_RX_HASH_DST_IPV4 = 1 << 1,
+  MLX5_RX_HASH_SRC_IPV6 = 1 << 2,
+  MLX5_RX_HASH_DST_IPV6 = 1 << 3,
+  MLX5_RX_HASH_SRC_PORT_TCP = 1 << 4,
+  MLX5_RX_HASH_DST_PORT_TCP = 1 << 5,
+  MLX5_RX_HASH_SRC_PORT_UDP = 1 << 6,
+  MLX5_RX_HASH_DST_PORT_UDP = 1 << 7,
+  MLX5_RX_HASH_IPSEC_SPI = 1 << 8,
+  MLX5_RX_HASH_INNER = (1UL << 31),
+};
+struct mlx5_ib_create_qp_rss {
+  __aligned_u64 rx_hash_fields_mask;
+  __u8 rx_hash_function;
+  __u8 rx_key_len;
+  __u8 reserved[6];
+  __u8 rx_hash_key[128];
+  __u32 comp_mask;
+  __u32 flags;
+};
+enum mlx5_ib_create_qp_resp_mask {
+  MLX5_IB_CREATE_QP_RESP_MASK_TIRN = 1UL << 0,
+  MLX5_IB_CREATE_QP_RESP_MASK_TISN = 1UL << 1,
+  MLX5_IB_CREATE_QP_RESP_MASK_RQN = 1UL << 2,
+  MLX5_IB_CREATE_QP_RESP_MASK_SQN = 1UL << 3,
+  MLX5_IB_CREATE_QP_RESP_MASK_TIR_ICM_ADDR = 1UL << 4,
+};
+struct mlx5_ib_create_qp_resp {
+  __u32 bfreg_index;
+  __u32 ece_options;
+  __u32 comp_mask;
+  __u32 tirn;
+  __u32 tisn;
+  __u32 rqn;
+  __u32 sqn;
+  __u32 reserved1;
+  __u64 tir_icm_addr;
+};
+struct mlx5_ib_alloc_mw {
+  __u32 comp_mask;
+  __u8 num_klms;
+  __u8 reserved1;
+  __u16 reserved2;
+};
+enum mlx5_ib_create_wq_mask {
+  MLX5_IB_CREATE_WQ_STRIDING_RQ = (1 << 0),
+};
+struct mlx5_ib_create_wq {
+  __aligned_u64 buf_addr;
+  __aligned_u64 db_addr;
+  __u32 rq_wqe_count;
+  __u32 rq_wqe_shift;
+  __u32 user_index;
+  __u32 flags;
+  __u32 comp_mask;
+  __u32 single_stride_log_num_of_bytes;
+  __u32 single_wqe_log_num_of_strides;
+  __u32 two_byte_shift_en;
+};
+struct mlx5_ib_create_ah_resp {
+  __u32 response_length;
+  __u8 dmac[ETH_ALEN];
+  __u8 reserved[6];
+};
+struct mlx5_ib_burst_info {
+  __u32 max_burst_sz;
+  __u16 typical_pkt_sz;
+  __u16 reserved;
+};
+struct mlx5_ib_modify_qp {
+  __u32 comp_mask;
+  struct mlx5_ib_burst_info burst_info;
+  __u32 ece_options;
+};
+struct mlx5_ib_modify_qp_resp {
+  __u32 response_length;
+  __u32 dctn;
+  __u32 ece_options;
+  __u32 reserved;
+};
+struct mlx5_ib_create_wq_resp {
+  __u32 response_length;
+  __u32 reserved;
+};
+struct mlx5_ib_create_rwq_ind_tbl_resp {
+  __u32 response_length;
+  __u32 reserved;
+};
+struct mlx5_ib_modify_wq {
+  __u32 comp_mask;
+  __u32 reserved;
+};
+struct mlx5_ib_clock_info {
+  __u32 sign;
+  __u32 resv;
+  __aligned_u64 nsec;
+  __aligned_u64 cycles;
+  __aligned_u64 frac;
+  __u32 mult;
+  __u32 shift;
+  __aligned_u64 mask;
+  __aligned_u64 overflow_period;
+};
+enum mlx5_ib_mmap_cmd {
+  MLX5_IB_MMAP_REGULAR_PAGE = 0,
+  MLX5_IB_MMAP_GET_CONTIGUOUS_PAGES = 1,
+  MLX5_IB_MMAP_WC_PAGE = 2,
+  MLX5_IB_MMAP_NC_PAGE = 3,
+  MLX5_IB_MMAP_CORE_CLOCK = 5,
+  MLX5_IB_MMAP_ALLOC_WC = 6,
+  MLX5_IB_MMAP_CLOCK_INFO = 7,
+  MLX5_IB_MMAP_DEVICE_MEM = 8,
+};
+enum {
+  MLX5_IB_CLOCK_INFO_KERNEL_UPDATING = 1,
+};
+enum {
+  MLX5_IB_CLOCK_INFO_V1 = 0,
+};
+struct mlx5_ib_flow_counters_desc {
+  __u32 description;
+  __u32 index;
+};
+struct mlx5_ib_flow_counters_data {
+  RDMA_UAPI_PTR(struct mlx5_ib_flow_counters_desc *, counters_data);
+  __u32 ncounters;
+  __u32 reserved;
+};
+struct mlx5_ib_create_flow {
+  __u32 ncounters_data;
+  __u32 reserved;
+  struct mlx5_ib_flow_counters_data data[];
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/mlx5_user_ioctl_cmds.h b/x86_64-linux-musl/include/rdma/mlx5_user_ioctl_cmds.h
new file mode 100644
index 0000000..dad5c17
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/mlx5_user_ioctl_cmds.h
@@ -0,0 +1,263 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef MLX5_USER_IOCTL_CMDS_H
+#define MLX5_USER_IOCTL_CMDS_H
+#include <linux/types.h>
+#include <rdma/ib_user_ioctl_cmds.h>
+enum mlx5_ib_create_flow_action_attrs {
+  MLX5_IB_ATTR_CREATE_FLOW_ACTION_FLAGS = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_dm_methods {
+  MLX5_IB_METHOD_DM_MAP_OP_ADDR = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_DM_QUERY,
+};
+enum mlx5_ib_dm_map_op_addr_attrs {
+  MLX5_IB_ATTR_DM_MAP_OP_ADDR_REQ_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DM_MAP_OP_ADDR_REQ_OP,
+  MLX5_IB_ATTR_DM_MAP_OP_ADDR_RESP_START_OFFSET,
+  MLX5_IB_ATTR_DM_MAP_OP_ADDR_RESP_PAGE_INDEX,
+};
+enum mlx5_ib_query_dm_attrs {
+  MLX5_IB_ATTR_QUERY_DM_REQ_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_QUERY_DM_RESP_START_OFFSET,
+  MLX5_IB_ATTR_QUERY_DM_RESP_PAGE_INDEX,
+  MLX5_IB_ATTR_QUERY_DM_RESP_LENGTH,
+};
+enum mlx5_ib_alloc_dm_attrs {
+  MLX5_IB_ATTR_ALLOC_DM_RESP_START_OFFSET = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_ALLOC_DM_RESP_PAGE_INDEX,
+  MLX5_IB_ATTR_ALLOC_DM_REQ_TYPE,
+};
+enum mlx5_ib_devx_methods {
+  MLX5_IB_METHOD_DEVX_OTHER = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_DEVX_QUERY_UAR,
+  MLX5_IB_METHOD_DEVX_QUERY_EQN,
+  MLX5_IB_METHOD_DEVX_SUBSCRIBE_EVENT,
+};
+enum mlx5_ib_devx_other_attrs {
+  MLX5_IB_ATTR_DEVX_OTHER_CMD_IN = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DEVX_OTHER_CMD_OUT,
+};
+enum mlx5_ib_devx_obj_create_attrs {
+  MLX5_IB_ATTR_DEVX_OBJ_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DEVX_OBJ_CREATE_CMD_IN,
+  MLX5_IB_ATTR_DEVX_OBJ_CREATE_CMD_OUT,
+};
+enum mlx5_ib_devx_query_uar_attrs {
+  MLX5_IB_ATTR_DEVX_QUERY_UAR_USER_IDX = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DEVX_QUERY_UAR_DEV_IDX,
+};
+enum mlx5_ib_devx_obj_destroy_attrs {
+  MLX5_IB_ATTR_DEVX_OBJ_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_devx_obj_modify_attrs {
+  MLX5_IB_ATTR_DEVX_OBJ_MODIFY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DEVX_OBJ_MODIFY_CMD_IN,
+  MLX5_IB_ATTR_DEVX_OBJ_MODIFY_CMD_OUT,
+};
+enum mlx5_ib_devx_obj_query_attrs {
+  MLX5_IB_ATTR_DEVX_OBJ_QUERY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DEVX_OBJ_QUERY_CMD_IN,
+  MLX5_IB_ATTR_DEVX_OBJ_QUERY_CMD_OUT,
+};
+enum mlx5_ib_devx_obj_query_async_attrs {
+  MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_CMD_IN,
+  MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_FD,
+  MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_WR_ID,
+  MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_OUT_LEN,
+};
+enum mlx5_ib_devx_subscribe_event_attrs {
+  MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_FD_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_OBJ_HANDLE,
+  MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_TYPE_NUM_LIST,
+  MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_FD_NUM,
+  MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_COOKIE,
+};
+enum mlx5_ib_devx_query_eqn_attrs {
+  MLX5_IB_ATTR_DEVX_QUERY_EQN_USER_VEC = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DEVX_QUERY_EQN_DEV_EQN,
+};
+enum mlx5_ib_devx_obj_methods {
+  MLX5_IB_METHOD_DEVX_OBJ_CREATE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_DEVX_OBJ_DESTROY,
+  MLX5_IB_METHOD_DEVX_OBJ_MODIFY,
+  MLX5_IB_METHOD_DEVX_OBJ_QUERY,
+  MLX5_IB_METHOD_DEVX_OBJ_ASYNC_QUERY,
+};
+enum mlx5_ib_var_alloc_attrs {
+  MLX5_IB_ATTR_VAR_OBJ_ALLOC_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_VAR_OBJ_ALLOC_MMAP_OFFSET,
+  MLX5_IB_ATTR_VAR_OBJ_ALLOC_MMAP_LENGTH,
+  MLX5_IB_ATTR_VAR_OBJ_ALLOC_PAGE_ID,
+};
+enum mlx5_ib_var_obj_destroy_attrs {
+  MLX5_IB_ATTR_VAR_OBJ_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_var_obj_methods {
+  MLX5_IB_METHOD_VAR_OBJ_ALLOC = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_VAR_OBJ_DESTROY,
+};
+enum mlx5_ib_uar_alloc_attrs {
+  MLX5_IB_ATTR_UAR_OBJ_ALLOC_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_UAR_OBJ_ALLOC_TYPE,
+  MLX5_IB_ATTR_UAR_OBJ_ALLOC_MMAP_OFFSET,
+  MLX5_IB_ATTR_UAR_OBJ_ALLOC_MMAP_LENGTH,
+  MLX5_IB_ATTR_UAR_OBJ_ALLOC_PAGE_ID,
+};
+enum mlx5_ib_uar_obj_destroy_attrs {
+  MLX5_IB_ATTR_UAR_OBJ_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_uar_obj_methods {
+  MLX5_IB_METHOD_UAR_OBJ_ALLOC = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_UAR_OBJ_DESTROY,
+};
+enum mlx5_ib_devx_umem_reg_attrs {
+  MLX5_IB_ATTR_DEVX_UMEM_REG_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DEVX_UMEM_REG_ADDR,
+  MLX5_IB_ATTR_DEVX_UMEM_REG_LEN,
+  MLX5_IB_ATTR_DEVX_UMEM_REG_ACCESS,
+  MLX5_IB_ATTR_DEVX_UMEM_REG_OUT_ID,
+  MLX5_IB_ATTR_DEVX_UMEM_REG_PGSZ_BITMAP,
+};
+enum mlx5_ib_devx_umem_dereg_attrs {
+  MLX5_IB_ATTR_DEVX_UMEM_DEREG_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_pp_obj_methods {
+  MLX5_IB_METHOD_PP_OBJ_ALLOC = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_PP_OBJ_DESTROY,
+};
+enum mlx5_ib_pp_alloc_attrs {
+  MLX5_IB_ATTR_PP_OBJ_ALLOC_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_PP_OBJ_ALLOC_CTX,
+  MLX5_IB_ATTR_PP_OBJ_ALLOC_FLAGS,
+  MLX5_IB_ATTR_PP_OBJ_ALLOC_INDEX,
+};
+enum mlx5_ib_pp_obj_destroy_attrs {
+  MLX5_IB_ATTR_PP_OBJ_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_devx_umem_methods {
+  MLX5_IB_METHOD_DEVX_UMEM_REG = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_DEVX_UMEM_DEREG,
+};
+enum mlx5_ib_devx_async_cmd_fd_alloc_attrs {
+  MLX5_IB_ATTR_DEVX_ASYNC_CMD_FD_ALLOC_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_devx_async_event_fd_alloc_attrs {
+  MLX5_IB_ATTR_DEVX_ASYNC_EVENT_FD_ALLOC_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DEVX_ASYNC_EVENT_FD_ALLOC_FLAGS,
+};
+enum mlx5_ib_devx_async_cmd_fd_methods {
+  MLX5_IB_METHOD_DEVX_ASYNC_CMD_FD_ALLOC = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_devx_async_event_fd_methods {
+  MLX5_IB_METHOD_DEVX_ASYNC_EVENT_FD_ALLOC = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_objects {
+  MLX5_IB_OBJECT_DEVX = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_OBJECT_DEVX_OBJ,
+  MLX5_IB_OBJECT_DEVX_UMEM,
+  MLX5_IB_OBJECT_FLOW_MATCHER,
+  MLX5_IB_OBJECT_DEVX_ASYNC_CMD_FD,
+  MLX5_IB_OBJECT_DEVX_ASYNC_EVENT_FD,
+  MLX5_IB_OBJECT_VAR,
+  MLX5_IB_OBJECT_PP,
+  MLX5_IB_OBJECT_UAR,
+};
+enum mlx5_ib_flow_matcher_create_attrs {
+  MLX5_IB_ATTR_FLOW_MATCHER_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_FLOW_MATCHER_MATCH_MASK,
+  MLX5_IB_ATTR_FLOW_MATCHER_FLOW_TYPE,
+  MLX5_IB_ATTR_FLOW_MATCHER_MATCH_CRITERIA,
+  MLX5_IB_ATTR_FLOW_MATCHER_FLOW_FLAGS,
+  MLX5_IB_ATTR_FLOW_MATCHER_FT_TYPE,
+};
+enum mlx5_ib_flow_matcher_destroy_attrs {
+  MLX5_IB_ATTR_FLOW_MATCHER_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_flow_matcher_methods {
+  MLX5_IB_METHOD_FLOW_MATCHER_CREATE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_FLOW_MATCHER_DESTROY,
+};
+enum mlx5_ib_device_query_context_attrs {
+  MLX5_IB_ATTR_QUERY_CONTEXT_RESP_UCTX = (1U << UVERBS_ID_NS_SHIFT),
+};
+#define MLX5_IB_DW_MATCH_PARAM 0x90
+struct mlx5_ib_match_params {
+  __u32 match_params[MLX5_IB_DW_MATCH_PARAM];
+};
+enum mlx5_ib_flow_type {
+  MLX5_IB_FLOW_TYPE_NORMAL,
+  MLX5_IB_FLOW_TYPE_SNIFFER,
+  MLX5_IB_FLOW_TYPE_ALL_DEFAULT,
+  MLX5_IB_FLOW_TYPE_MC_DEFAULT,
+};
+enum mlx5_ib_create_flow_flags {
+  MLX5_IB_ATTR_CREATE_FLOW_FLAGS_DEFAULT_MISS = 1 << 0,
+  MLX5_IB_ATTR_CREATE_FLOW_FLAGS_DROP = 1 << 1,
+};
+enum mlx5_ib_create_flow_attrs {
+  MLX5_IB_ATTR_CREATE_FLOW_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_CREATE_FLOW_MATCH_VALUE,
+  MLX5_IB_ATTR_CREATE_FLOW_DEST_QP,
+  MLX5_IB_ATTR_CREATE_FLOW_DEST_DEVX,
+  MLX5_IB_ATTR_CREATE_FLOW_MATCHER,
+  MLX5_IB_ATTR_CREATE_FLOW_ARR_FLOW_ACTIONS,
+  MLX5_IB_ATTR_CREATE_FLOW_TAG,
+  MLX5_IB_ATTR_CREATE_FLOW_ARR_COUNTERS_DEVX,
+  MLX5_IB_ATTR_CREATE_FLOW_ARR_COUNTERS_DEVX_OFFSET,
+  MLX5_IB_ATTR_CREATE_FLOW_FLAGS,
+};
+enum mlx5_ib_destroy_flow_attrs {
+  MLX5_IB_ATTR_DESTROY_FLOW_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_flow_methods {
+  MLX5_IB_METHOD_CREATE_FLOW = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_DESTROY_FLOW,
+};
+enum mlx5_ib_flow_action_methods {
+  MLX5_IB_METHOD_FLOW_ACTION_CREATE_MODIFY_HEADER = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_FLOW_ACTION_CREATE_PACKET_REFORMAT,
+};
+enum mlx5_ib_create_flow_action_create_modify_header_attrs {
+  MLX5_IB_ATTR_CREATE_MODIFY_HEADER_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_CREATE_MODIFY_HEADER_ACTIONS_PRM,
+  MLX5_IB_ATTR_CREATE_MODIFY_HEADER_FT_TYPE,
+};
+enum mlx5_ib_create_flow_action_create_packet_reformat_attrs {
+  MLX5_IB_ATTR_CREATE_PACKET_REFORMAT_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_CREATE_PACKET_REFORMAT_TYPE,
+  MLX5_IB_ATTR_CREATE_PACKET_REFORMAT_FT_TYPE,
+  MLX5_IB_ATTR_CREATE_PACKET_REFORMAT_DATA_BUF,
+};
+enum mlx5_ib_query_pd_attrs {
+  MLX5_IB_ATTR_QUERY_PD_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_QUERY_PD_RESP_PDN,
+};
+enum mlx5_ib_pd_methods {
+  MLX5_IB_METHOD_PD_QUERY = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_device_methods {
+  MLX5_IB_METHOD_QUERY_PORT = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_query_port_attrs {
+  MLX5_IB_ATTR_QUERY_PORT_PORT_NUM = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_QUERY_PORT,
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/mlx5_user_ioctl_verbs.h b/x86_64-linux-musl/include/rdma/mlx5_user_ioctl_verbs.h
new file mode 100644
index 0000000..c3c3f89
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/mlx5_user_ioctl_verbs.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 MLX5_USER_IOCTL_VERBS_H
+#define MLX5_USER_IOCTL_VERBS_H
+#include <linux/types.h>
+enum mlx5_ib_uapi_flow_action_flags {
+  MLX5_IB_UAPI_FLOW_ACTION_FLAGS_REQUIRE_METADATA = 1 << 0,
+};
+enum mlx5_ib_uapi_flow_table_type {
+  MLX5_IB_UAPI_FLOW_TABLE_TYPE_NIC_RX = 0x0,
+  MLX5_IB_UAPI_FLOW_TABLE_TYPE_NIC_TX = 0x1,
+  MLX5_IB_UAPI_FLOW_TABLE_TYPE_FDB = 0x2,
+  MLX5_IB_UAPI_FLOW_TABLE_TYPE_RDMA_RX = 0x3,
+  MLX5_IB_UAPI_FLOW_TABLE_TYPE_RDMA_TX = 0x4,
+};
+enum mlx5_ib_uapi_flow_action_packet_reformat_type {
+  MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L2_TUNNEL_TO_L2 = 0x0,
+  MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L2_TO_L2_TUNNEL = 0x1,
+  MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L3_TUNNEL_TO_L2 = 0x2,
+  MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L2_TO_L3_TUNNEL = 0x3,
+};
+struct mlx5_ib_uapi_devx_async_cmd_hdr {
+  __aligned_u64 wr_id;
+  __u8 out_data[];
+};
+enum mlx5_ib_uapi_dm_type {
+  MLX5_IB_UAPI_DM_TYPE_MEMIC,
+  MLX5_IB_UAPI_DM_TYPE_STEERING_SW_ICM,
+  MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_SW_ICM,
+};
+enum mlx5_ib_uapi_devx_create_event_channel_flags {
+  MLX5_IB_UAPI_DEVX_CR_EV_CH_FLAGS_OMIT_DATA = 1 << 0,
+};
+struct mlx5_ib_uapi_devx_async_event_hdr {
+  __aligned_u64 cookie;
+  __u8 out_data[];
+};
+enum mlx5_ib_uapi_pp_alloc_flags {
+  MLX5_IB_UAPI_PP_ALLOC_FLAGS_DEDICATED_INDEX = 1 << 0,
+};
+enum mlx5_ib_uapi_uar_alloc_type {
+  MLX5_IB_UAPI_UAR_ALLOC_TYPE_BF = 0x0,
+  MLX5_IB_UAPI_UAR_ALLOC_TYPE_NC = 0x1,
+};
+enum mlx5_ib_uapi_query_port_flags {
+  MLX5_IB_UAPI_QUERY_PORT_VPORT = 1 << 0,
+  MLX5_IB_UAPI_QUERY_PORT_VPORT_VHCA_ID = 1 << 1,
+  MLX5_IB_UAPI_QUERY_PORT_VPORT_STEERING_ICM_RX = 1 << 2,
+  MLX5_IB_UAPI_QUERY_PORT_VPORT_STEERING_ICM_TX = 1 << 3,
+  MLX5_IB_UAPI_QUERY_PORT_VPORT_REG_C0 = 1 << 4,
+  MLX5_IB_UAPI_QUERY_PORT_ESW_OWNER_VHCA_ID = 1 << 5,
+};
+struct mlx5_ib_uapi_reg {
+  __u32 value;
+  __u32 mask;
+};
+struct mlx5_ib_uapi_query_port {
+  __aligned_u64 flags;
+  __u16 vport;
+  __u16 vport_vhca_id;
+  __u16 esw_owner_vhca_id;
+  __u16 rsvd0;
+  __aligned_u64 vport_steering_icm_rx;
+  __aligned_u64 vport_steering_icm_tx;
+  struct mlx5_ib_uapi_reg reg_c0;
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/mthca-abi.h b/x86_64-linux-musl/include/rdma/mthca-abi.h
new file mode 100644
index 0000000..86224f2
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/mthca-abi.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 MTHCA_ABI_USER_H
+#define MTHCA_ABI_USER_H
+#include <linux/types.h>
+#define MTHCA_UVERBS_ABI_VERSION 1
+struct mthca_alloc_ucontext_resp {
+  __u32 qp_tab_size;
+  __u32 uarc_size;
+};
+struct mthca_alloc_pd_resp {
+  __u32 pdn;
+  __u32 reserved;
+};
+#define MTHCA_MR_DMASYNC 0x1
+struct mthca_reg_mr {
+  __u32 mr_attrs;
+  __u32 reserved;
+};
+struct mthca_create_cq {
+  __u32 lkey;
+  __u32 pdn;
+  __aligned_u64 arm_db_page;
+  __aligned_u64 set_db_page;
+  __u32 arm_db_index;
+  __u32 set_db_index;
+};
+struct mthca_create_cq_resp {
+  __u32 cqn;
+  __u32 reserved;
+};
+struct mthca_resize_cq {
+  __u32 lkey;
+  __u32 reserved;
+};
+struct mthca_create_srq {
+  __u32 lkey;
+  __u32 db_index;
+  __aligned_u64 db_page;
+};
+struct mthca_create_srq_resp {
+  __u32 srqn;
+  __u32 reserved;
+};
+struct mthca_create_qp {
+  __u32 lkey;
+  __u32 reserved;
+  __aligned_u64 sq_db_page;
+  __aligned_u64 rq_db_page;
+  __u32 sq_db_index;
+  __u32 rq_db_index;
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/ocrdma-abi.h b/x86_64-linux-musl/include/rdma/ocrdma-abi.h
new file mode 100644
index 0000000..007f0e1
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/ocrdma-abi.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 OCRDMA_ABI_USER_H
+#define OCRDMA_ABI_USER_H
+#include <linux/types.h>
+#define OCRDMA_ABI_VERSION 2
+#define OCRDMA_BE_ROCE_ABI_VERSION 1
+struct ocrdma_alloc_ucontext_resp {
+  __u32 dev_id;
+  __u32 wqe_size;
+  __u32 max_inline_data;
+  __u32 dpp_wqe_size;
+  __aligned_u64 ah_tbl_page;
+  __u32 ah_tbl_len;
+  __u32 rqe_size;
+  __u8 fw_ver[32];
+  __aligned_u64 rsvd1;
+  __aligned_u64 rsvd2;
+};
+struct ocrdma_alloc_pd_ureq {
+  __u32 rsvd[2];
+};
+struct ocrdma_alloc_pd_uresp {
+  __u32 id;
+  __u32 dpp_enabled;
+  __u32 dpp_page_addr_hi;
+  __u32 dpp_page_addr_lo;
+  __u32 rsvd[2];
+};
+struct ocrdma_create_cq_ureq {
+  __u32 dpp_cq;
+  __u32 rsvd;
+};
+#define MAX_CQ_PAGES 8
+struct ocrdma_create_cq_uresp {
+  __u32 cq_id;
+  __u32 page_size;
+  __u32 num_pages;
+  __u32 max_hw_cqe;
+  __aligned_u64 page_addr[MAX_CQ_PAGES];
+  __aligned_u64 db_page_addr;
+  __u32 db_page_size;
+  __u32 phase_change;
+  __aligned_u64 rsvd1;
+  __aligned_u64 rsvd2;
+};
+#define MAX_QP_PAGES 8
+#define MAX_UD_AV_PAGES 8
+struct ocrdma_create_qp_ureq {
+  __u8 enable_dpp_cq;
+  __u8 rsvd;
+  __u16 dpp_cq_id;
+  __u32 rsvd1;
+};
+struct ocrdma_create_qp_uresp {
+  __u16 qp_id;
+  __u16 sq_dbid;
+  __u16 rq_dbid;
+  __u16 resv0;
+  __u32 sq_page_size;
+  __u32 rq_page_size;
+  __u32 num_sq_pages;
+  __u32 num_rq_pages;
+  __aligned_u64 sq_page_addr[MAX_QP_PAGES];
+  __aligned_u64 rq_page_addr[MAX_QP_PAGES];
+  __aligned_u64 db_page_addr;
+  __u32 db_page_size;
+  __u32 dpp_credit;
+  __u32 dpp_offset;
+  __u32 num_wqe_allocated;
+  __u32 num_rqe_allocated;
+  __u32 db_sq_offset;
+  __u32 db_rq_offset;
+  __u32 db_shift;
+  __aligned_u64 rsvd[11];
+};
+struct ocrdma_create_srq_uresp {
+  __u16 rq_dbid;
+  __u16 resv0;
+  __u32 resv1;
+  __u32 rq_page_size;
+  __u32 num_rq_pages;
+  __aligned_u64 rq_page_addr[MAX_QP_PAGES];
+  __aligned_u64 db_page_addr;
+  __u32 db_page_size;
+  __u32 num_rqe_allocated;
+  __u32 db_rq_offset;
+  __u32 db_shift;
+  __aligned_u64 rsvd2;
+  __aligned_u64 rsvd3;
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/qedr-abi.h b/x86_64-linux-musl/include/rdma/qedr-abi.h
new file mode 100644
index 0000000..bf6dc76
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/qedr-abi.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 __QEDR_USER_H__
+#define __QEDR_USER_H__
+#include <linux/types.h>
+#define QEDR_ABI_VERSION (8)
+enum qedr_alloc_ucontext_flags {
+  QEDR_ALLOC_UCTX_EDPM_MODE = 1 << 0,
+  QEDR_ALLOC_UCTX_DB_REC = 1 << 1,
+  QEDR_SUPPORT_DPM_SIZES = 1 << 2,
+};
+struct qedr_alloc_ucontext_req {
+  __u32 context_flags;
+  __u32 reserved;
+};
+#define QEDR_LDPM_MAX_SIZE (8192)
+#define QEDR_EDPM_TRANS_SIZE (64)
+#define QEDR_EDPM_MAX_SIZE (ROCE_REQ_MAX_INLINE_DATA_SIZE)
+enum qedr_rdma_dpm_type {
+  QEDR_DPM_TYPE_NONE = 0,
+  QEDR_DPM_TYPE_ROCE_ENHANCED = 1 << 0,
+  QEDR_DPM_TYPE_ROCE_LEGACY = 1 << 1,
+  QEDR_DPM_TYPE_IWARP_LEGACY = 1 << 2,
+  QEDR_DPM_TYPE_ROCE_EDPM_MODE = 1 << 3,
+  QEDR_DPM_SIZES_SET = 1 << 4,
+};
+struct qedr_alloc_ucontext_resp {
+  __aligned_u64 db_pa;
+  __u32 db_size;
+  __u32 max_send_wr;
+  __u32 max_recv_wr;
+  __u32 max_srq_wr;
+  __u32 sges_per_send_wr;
+  __u32 sges_per_recv_wr;
+  __u32 sges_per_srq_wr;
+  __u32 max_cqes;
+  __u8 dpm_flags;
+  __u8 wids_enabled;
+  __u16 wid_count;
+  __u16 ldpm_limit_size;
+  __u8 edpm_trans_size;
+  __u8 reserved;
+  __u16 edpm_limit_size;
+  __u8 padding[6];
+};
+struct qedr_alloc_pd_ureq {
+  __aligned_u64 rsvd1;
+};
+struct qedr_alloc_pd_uresp {
+  __u32 pd_id;
+  __u32 reserved;
+};
+struct qedr_create_cq_ureq {
+  __aligned_u64 addr;
+  __aligned_u64 len;
+};
+struct qedr_create_cq_uresp {
+  __u32 db_offset;
+  __u16 icid;
+  __u16 reserved;
+  __aligned_u64 db_rec_addr;
+};
+struct qedr_create_qp_ureq {
+  __u32 qp_handle_hi;
+  __u32 qp_handle_lo;
+  __aligned_u64 sq_addr;
+  __aligned_u64 sq_len;
+  __aligned_u64 rq_addr;
+  __aligned_u64 rq_len;
+};
+struct qedr_create_qp_uresp {
+  __u32 qp_id;
+  __u32 atomic_supported;
+  __u32 sq_db_offset;
+  __u16 sq_icid;
+  __u32 rq_db_offset;
+  __u16 rq_icid;
+  __u32 rq_db2_offset;
+  __u32 reserved;
+  __aligned_u64 sq_db_rec_addr;
+  __aligned_u64 rq_db_rec_addr;
+};
+struct qedr_create_srq_ureq {
+  __aligned_u64 prod_pair_addr;
+  __aligned_u64 srq_addr;
+  __aligned_u64 srq_len;
+};
+struct qedr_create_srq_uresp {
+  __u16 srq_id;
+  __u16 reserved0;
+  __u32 reserved1;
+};
+struct qedr_user_db_rec {
+  __aligned_u64 db_data;
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/rdma_netlink.h b/x86_64-linux-musl/include/rdma/rdma_netlink.h
new file mode 100644
index 0000000..bdb5fdd
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/rdma_netlink.h
@@ -0,0 +1,329 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_RDMA_NETLINK_H
+#define _UAPI_RDMA_NETLINK_H
+#include <linux/types.h>
+enum {
+  RDMA_NL_IWCM = 2,
+  RDMA_NL_RSVD,
+  RDMA_NL_LS,
+  RDMA_NL_NLDEV,
+  RDMA_NL_NUM_CLIENTS
+};
+enum {
+  RDMA_NL_GROUP_IWPM = 2,
+  RDMA_NL_GROUP_LS,
+  RDMA_NL_NUM_GROUPS
+};
+#define RDMA_NL_GET_CLIENT(type) ((type & (((1 << 6) - 1) << 10)) >> 10)
+#define RDMA_NL_GET_OP(type) (type & ((1 << 10) - 1))
+#define RDMA_NL_GET_TYPE(client,op) ((client << 10) + op)
+#define IWPM_UABI_VERSION_MIN 3
+#define IWPM_UABI_VERSION 4
+enum {
+  IWPM_FLAGS_NO_PORT_MAP = (1 << 0),
+};
+enum {
+  RDMA_NL_IWPM_REG_PID = 0,
+  RDMA_NL_IWPM_ADD_MAPPING,
+  RDMA_NL_IWPM_QUERY_MAPPING,
+  RDMA_NL_IWPM_REMOVE_MAPPING,
+  RDMA_NL_IWPM_REMOTE_INFO,
+  RDMA_NL_IWPM_HANDLE_ERR,
+  RDMA_NL_IWPM_MAPINFO,
+  RDMA_NL_IWPM_MAPINFO_NUM,
+  RDMA_NL_IWPM_HELLO,
+  RDMA_NL_IWPM_NUM_OPS
+};
+enum {
+  IWPM_NLA_REG_PID_UNSPEC = 0,
+  IWPM_NLA_REG_PID_SEQ,
+  IWPM_NLA_REG_IF_NAME,
+  IWPM_NLA_REG_IBDEV_NAME,
+  IWPM_NLA_REG_ULIB_NAME,
+  IWPM_NLA_REG_PID_MAX
+};
+enum {
+  IWPM_NLA_RREG_PID_UNSPEC = 0,
+  IWPM_NLA_RREG_PID_SEQ,
+  IWPM_NLA_RREG_IBDEV_NAME,
+  IWPM_NLA_RREG_ULIB_NAME,
+  IWPM_NLA_RREG_ULIB_VER,
+  IWPM_NLA_RREG_PID_ERR,
+  IWPM_NLA_RREG_PID_MAX
+};
+enum {
+  IWPM_NLA_MANAGE_MAPPING_UNSPEC = 0,
+  IWPM_NLA_MANAGE_MAPPING_SEQ,
+  IWPM_NLA_MANAGE_ADDR,
+  IWPM_NLA_MANAGE_FLAGS,
+  IWPM_NLA_MANAGE_MAPPING_MAX
+};
+enum {
+  IWPM_NLA_RMANAGE_MAPPING_UNSPEC = 0,
+  IWPM_NLA_RMANAGE_MAPPING_SEQ,
+  IWPM_NLA_RMANAGE_ADDR,
+  IWPM_NLA_RMANAGE_MAPPED_LOC_ADDR,
+  IWPM_NLA_MANAGE_MAPPED_LOC_ADDR = IWPM_NLA_RMANAGE_MAPPED_LOC_ADDR,
+  IWPM_NLA_RMANAGE_MAPPING_ERR,
+  IWPM_NLA_RMANAGE_MAPPING_MAX
+};
+#define IWPM_NLA_MAPINFO_SEND_MAX 3
+#define IWPM_NLA_REMOVE_MAPPING_MAX 3
+enum {
+  IWPM_NLA_QUERY_MAPPING_UNSPEC = 0,
+  IWPM_NLA_QUERY_MAPPING_SEQ,
+  IWPM_NLA_QUERY_LOCAL_ADDR,
+  IWPM_NLA_QUERY_REMOTE_ADDR,
+  IWPM_NLA_QUERY_FLAGS,
+  IWPM_NLA_QUERY_MAPPING_MAX,
+};
+enum {
+  IWPM_NLA_RQUERY_MAPPING_UNSPEC = 0,
+  IWPM_NLA_RQUERY_MAPPING_SEQ,
+  IWPM_NLA_RQUERY_LOCAL_ADDR,
+  IWPM_NLA_RQUERY_REMOTE_ADDR,
+  IWPM_NLA_RQUERY_MAPPED_LOC_ADDR,
+  IWPM_NLA_RQUERY_MAPPED_REM_ADDR,
+  IWPM_NLA_RQUERY_MAPPING_ERR,
+  IWPM_NLA_RQUERY_MAPPING_MAX
+};
+enum {
+  IWPM_NLA_MAPINFO_REQ_UNSPEC = 0,
+  IWPM_NLA_MAPINFO_ULIB_NAME,
+  IWPM_NLA_MAPINFO_ULIB_VER,
+  IWPM_NLA_MAPINFO_REQ_MAX
+};
+enum {
+  IWPM_NLA_MAPINFO_UNSPEC = 0,
+  IWPM_NLA_MAPINFO_LOCAL_ADDR,
+  IWPM_NLA_MAPINFO_MAPPED_ADDR,
+  IWPM_NLA_MAPINFO_FLAGS,
+  IWPM_NLA_MAPINFO_MAX
+};
+enum {
+  IWPM_NLA_MAPINFO_NUM_UNSPEC = 0,
+  IWPM_NLA_MAPINFO_SEQ,
+  IWPM_NLA_MAPINFO_SEND_NUM,
+  IWPM_NLA_MAPINFO_ACK_NUM,
+  IWPM_NLA_MAPINFO_NUM_MAX
+};
+enum {
+  IWPM_NLA_ERR_UNSPEC = 0,
+  IWPM_NLA_ERR_SEQ,
+  IWPM_NLA_ERR_CODE,
+  IWPM_NLA_ERR_MAX
+};
+enum {
+  IWPM_NLA_HELLO_UNSPEC = 0,
+  IWPM_NLA_HELLO_ABI_VERSION,
+  IWPM_NLA_HELLO_MAX
+};
+enum {
+  RDMA_NODE_IB_CA = 1,
+  RDMA_NODE_IB_SWITCH,
+  RDMA_NODE_IB_ROUTER,
+  RDMA_NODE_RNIC,
+  RDMA_NODE_USNIC,
+  RDMA_NODE_USNIC_UDP,
+  RDMA_NODE_UNSPECIFIED,
+};
+enum {
+  RDMA_NL_LS_OP_RESOLVE = 0,
+  RDMA_NL_LS_OP_SET_TIMEOUT,
+  RDMA_NL_LS_OP_IP_RESOLVE,
+  RDMA_NL_LS_NUM_OPS
+};
+#define RDMA_NL_LS_F_ERR 0x0100
+enum {
+  LS_RESOLVE_PATH_USE_ALL = 0,
+  LS_RESOLVE_PATH_USE_UNIDIRECTIONAL,
+  LS_RESOLVE_PATH_USE_GMP,
+  LS_RESOLVE_PATH_USE_MAX
+};
+#define LS_DEVICE_NAME_MAX 64
+struct rdma_ls_resolve_header {
+  __u8 device_name[LS_DEVICE_NAME_MAX];
+  __u8 port_num;
+  __u8 path_use;
+};
+struct rdma_ls_ip_resolve_header {
+  __u32 ifindex;
+};
+#define RDMA_NLA_F_MANDATORY (1 << 13)
+#define RDMA_NLA_TYPE_MASK (~(NLA_F_NESTED | NLA_F_NET_BYTEORDER | RDMA_NLA_F_MANDATORY))
+enum {
+  LS_NLA_TYPE_UNSPEC = 0,
+  LS_NLA_TYPE_PATH_RECORD,
+  LS_NLA_TYPE_TIMEOUT,
+  LS_NLA_TYPE_SERVICE_ID,
+  LS_NLA_TYPE_DGID,
+  LS_NLA_TYPE_SGID,
+  LS_NLA_TYPE_TCLASS,
+  LS_NLA_TYPE_PKEY,
+  LS_NLA_TYPE_QOS_CLASS,
+  LS_NLA_TYPE_IPV4,
+  LS_NLA_TYPE_IPV6,
+  LS_NLA_TYPE_MAX
+};
+struct rdma_nla_ls_gid {
+  __u8 gid[16];
+};
+enum rdma_nldev_command {
+  RDMA_NLDEV_CMD_UNSPEC,
+  RDMA_NLDEV_CMD_GET,
+  RDMA_NLDEV_CMD_SET,
+  RDMA_NLDEV_CMD_NEWLINK,
+  RDMA_NLDEV_CMD_DELLINK,
+  RDMA_NLDEV_CMD_PORT_GET,
+  RDMA_NLDEV_CMD_SYS_GET,
+  RDMA_NLDEV_CMD_SYS_SET,
+  RDMA_NLDEV_CMD_RES_GET = 9,
+  RDMA_NLDEV_CMD_RES_QP_GET,
+  RDMA_NLDEV_CMD_RES_CM_ID_GET,
+  RDMA_NLDEV_CMD_RES_CQ_GET,
+  RDMA_NLDEV_CMD_RES_MR_GET,
+  RDMA_NLDEV_CMD_RES_PD_GET,
+  RDMA_NLDEV_CMD_GET_CHARDEV,
+  RDMA_NLDEV_CMD_STAT_SET,
+  RDMA_NLDEV_CMD_STAT_GET,
+  RDMA_NLDEV_CMD_STAT_DEL,
+  RDMA_NLDEV_CMD_RES_QP_GET_RAW,
+  RDMA_NLDEV_CMD_RES_CQ_GET_RAW,
+  RDMA_NLDEV_CMD_RES_MR_GET_RAW,
+  RDMA_NLDEV_CMD_RES_CTX_GET,
+  RDMA_NLDEV_CMD_RES_SRQ_GET,
+  RDMA_NLDEV_CMD_STAT_GET_STATUS,
+  RDMA_NLDEV_NUM_OPS
+};
+enum rdma_nldev_print_type {
+  RDMA_NLDEV_PRINT_TYPE_UNSPEC,
+  RDMA_NLDEV_PRINT_TYPE_HEX,
+};
+enum rdma_nldev_attr {
+  RDMA_NLDEV_ATTR_UNSPEC,
+  RDMA_NLDEV_ATTR_PAD = RDMA_NLDEV_ATTR_UNSPEC,
+  RDMA_NLDEV_ATTR_DEV_INDEX,
+  RDMA_NLDEV_ATTR_DEV_NAME,
+  RDMA_NLDEV_ATTR_PORT_INDEX,
+  RDMA_NLDEV_ATTR_CAP_FLAGS,
+  RDMA_NLDEV_ATTR_FW_VERSION,
+  RDMA_NLDEV_ATTR_NODE_GUID,
+  RDMA_NLDEV_ATTR_SYS_IMAGE_GUID,
+  RDMA_NLDEV_ATTR_SUBNET_PREFIX,
+  RDMA_NLDEV_ATTR_LID,
+  RDMA_NLDEV_ATTR_SM_LID,
+  RDMA_NLDEV_ATTR_LMC,
+  RDMA_NLDEV_ATTR_PORT_STATE,
+  RDMA_NLDEV_ATTR_PORT_PHYS_STATE,
+  RDMA_NLDEV_ATTR_DEV_NODE_TYPE,
+  RDMA_NLDEV_ATTR_RES_SUMMARY,
+  RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY,
+  RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY_NAME,
+  RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY_CURR,
+  RDMA_NLDEV_ATTR_RES_QP,
+  RDMA_NLDEV_ATTR_RES_QP_ENTRY,
+  RDMA_NLDEV_ATTR_RES_LQPN,
+  RDMA_NLDEV_ATTR_RES_RQPN,
+  RDMA_NLDEV_ATTR_RES_RQ_PSN,
+  RDMA_NLDEV_ATTR_RES_SQ_PSN,
+  RDMA_NLDEV_ATTR_RES_PATH_MIG_STATE,
+  RDMA_NLDEV_ATTR_RES_TYPE,
+  RDMA_NLDEV_ATTR_RES_STATE,
+  RDMA_NLDEV_ATTR_RES_PID,
+  RDMA_NLDEV_ATTR_RES_KERN_NAME,
+  RDMA_NLDEV_ATTR_RES_CM_ID,
+  RDMA_NLDEV_ATTR_RES_CM_ID_ENTRY,
+  RDMA_NLDEV_ATTR_RES_PS,
+  RDMA_NLDEV_ATTR_RES_SRC_ADDR,
+  RDMA_NLDEV_ATTR_RES_DST_ADDR,
+  RDMA_NLDEV_ATTR_RES_CQ,
+  RDMA_NLDEV_ATTR_RES_CQ_ENTRY,
+  RDMA_NLDEV_ATTR_RES_CQE,
+  RDMA_NLDEV_ATTR_RES_USECNT,
+  RDMA_NLDEV_ATTR_RES_POLL_CTX,
+  RDMA_NLDEV_ATTR_RES_MR,
+  RDMA_NLDEV_ATTR_RES_MR_ENTRY,
+  RDMA_NLDEV_ATTR_RES_RKEY,
+  RDMA_NLDEV_ATTR_RES_LKEY,
+  RDMA_NLDEV_ATTR_RES_IOVA,
+  RDMA_NLDEV_ATTR_RES_MRLEN,
+  RDMA_NLDEV_ATTR_RES_PD,
+  RDMA_NLDEV_ATTR_RES_PD_ENTRY,
+  RDMA_NLDEV_ATTR_RES_LOCAL_DMA_LKEY,
+  RDMA_NLDEV_ATTR_RES_UNSAFE_GLOBAL_RKEY,
+  RDMA_NLDEV_ATTR_NDEV_INDEX,
+  RDMA_NLDEV_ATTR_NDEV_NAME,
+  RDMA_NLDEV_ATTR_DRIVER,
+  RDMA_NLDEV_ATTR_DRIVER_ENTRY,
+  RDMA_NLDEV_ATTR_DRIVER_STRING,
+  RDMA_NLDEV_ATTR_DRIVER_PRINT_TYPE,
+  RDMA_NLDEV_ATTR_DRIVER_S32,
+  RDMA_NLDEV_ATTR_DRIVER_U32,
+  RDMA_NLDEV_ATTR_DRIVER_S64,
+  RDMA_NLDEV_ATTR_DRIVER_U64,
+  RDMA_NLDEV_ATTR_RES_PDN,
+  RDMA_NLDEV_ATTR_RES_CQN,
+  RDMA_NLDEV_ATTR_RES_MRN,
+  RDMA_NLDEV_ATTR_RES_CM_IDN,
+  RDMA_NLDEV_ATTR_RES_CTXN,
+  RDMA_NLDEV_ATTR_LINK_TYPE,
+  RDMA_NLDEV_SYS_ATTR_NETNS_MODE,
+  RDMA_NLDEV_ATTR_DEV_PROTOCOL,
+  RDMA_NLDEV_NET_NS_FD,
+  RDMA_NLDEV_ATTR_CHARDEV_TYPE,
+  RDMA_NLDEV_ATTR_CHARDEV_NAME,
+  RDMA_NLDEV_ATTR_CHARDEV_ABI,
+  RDMA_NLDEV_ATTR_CHARDEV,
+  RDMA_NLDEV_ATTR_UVERBS_DRIVER_ID,
+  RDMA_NLDEV_ATTR_STAT_MODE,
+  RDMA_NLDEV_ATTR_STAT_RES,
+  RDMA_NLDEV_ATTR_STAT_AUTO_MODE_MASK,
+  RDMA_NLDEV_ATTR_STAT_COUNTER,
+  RDMA_NLDEV_ATTR_STAT_COUNTER_ENTRY,
+  RDMA_NLDEV_ATTR_STAT_COUNTER_ID,
+  RDMA_NLDEV_ATTR_STAT_HWCOUNTERS,
+  RDMA_NLDEV_ATTR_STAT_HWCOUNTER_ENTRY,
+  RDMA_NLDEV_ATTR_STAT_HWCOUNTER_ENTRY_NAME,
+  RDMA_NLDEV_ATTR_STAT_HWCOUNTER_ENTRY_VALUE,
+  RDMA_NLDEV_ATTR_DEV_DIM,
+  RDMA_NLDEV_ATTR_RES_RAW,
+  RDMA_NLDEV_ATTR_RES_CTX,
+  RDMA_NLDEV_ATTR_RES_CTX_ENTRY,
+  RDMA_NLDEV_ATTR_RES_SRQ,
+  RDMA_NLDEV_ATTR_RES_SRQ_ENTRY,
+  RDMA_NLDEV_ATTR_RES_SRQN,
+  RDMA_NLDEV_ATTR_MIN_RANGE,
+  RDMA_NLDEV_ATTR_MAX_RANGE,
+  RDMA_NLDEV_SYS_ATTR_COPY_ON_FORK,
+  RDMA_NLDEV_ATTR_STAT_HWCOUNTER_INDEX,
+  RDMA_NLDEV_ATTR_STAT_HWCOUNTER_DYNAMIC,
+  RDMA_NLDEV_ATTR_MAX
+};
+enum rdma_nl_counter_mode {
+  RDMA_COUNTER_MODE_NONE,
+  RDMA_COUNTER_MODE_AUTO,
+  RDMA_COUNTER_MODE_MANUAL,
+  RDMA_COUNTER_MODE_MAX,
+};
+enum rdma_nl_counter_mask {
+  RDMA_COUNTER_MASK_QP_TYPE = 1,
+  RDMA_COUNTER_MASK_PID = 1 << 1,
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/rdma_user_cm.h b/x86_64-linux-musl/include/rdma/rdma_user_cm.h
new file mode 100644
index 0000000..7b1f7ee
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/rdma_user_cm.h
@@ -0,0 +1,273 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef RDMA_USER_CM_H
+#define RDMA_USER_CM_H
+#include <linux/types.h>
+#include <linux/socket.h>
+#include <linux/in6.h>
+#include <rdma/ib_user_verbs.h>
+#include <rdma/ib_user_sa.h>
+#define RDMA_USER_CM_ABI_VERSION 4
+#define RDMA_MAX_PRIVATE_DATA 256
+enum {
+  RDMA_USER_CM_CMD_CREATE_ID,
+  RDMA_USER_CM_CMD_DESTROY_ID,
+  RDMA_USER_CM_CMD_BIND_IP,
+  RDMA_USER_CM_CMD_RESOLVE_IP,
+  RDMA_USER_CM_CMD_RESOLVE_ROUTE,
+  RDMA_USER_CM_CMD_QUERY_ROUTE,
+  RDMA_USER_CM_CMD_CONNECT,
+  RDMA_USER_CM_CMD_LISTEN,
+  RDMA_USER_CM_CMD_ACCEPT,
+  RDMA_USER_CM_CMD_REJECT,
+  RDMA_USER_CM_CMD_DISCONNECT,
+  RDMA_USER_CM_CMD_INIT_QP_ATTR,
+  RDMA_USER_CM_CMD_GET_EVENT,
+  RDMA_USER_CM_CMD_GET_OPTION,
+  RDMA_USER_CM_CMD_SET_OPTION,
+  RDMA_USER_CM_CMD_NOTIFY,
+  RDMA_USER_CM_CMD_JOIN_IP_MCAST,
+  RDMA_USER_CM_CMD_LEAVE_MCAST,
+  RDMA_USER_CM_CMD_MIGRATE_ID,
+  RDMA_USER_CM_CMD_QUERY,
+  RDMA_USER_CM_CMD_BIND,
+  RDMA_USER_CM_CMD_RESOLVE_ADDR,
+  RDMA_USER_CM_CMD_JOIN_MCAST
+};
+enum rdma_ucm_port_space {
+  RDMA_PS_IPOIB = 0x0002,
+  RDMA_PS_IB = 0x013F,
+  RDMA_PS_TCP = 0x0106,
+  RDMA_PS_UDP = 0x0111,
+};
+struct rdma_ucm_cmd_hdr {
+  __u32 cmd;
+  __u16 in;
+  __u16 out;
+};
+struct rdma_ucm_create_id {
+  __aligned_u64 uid;
+  __aligned_u64 response;
+  __u16 ps;
+  __u8 qp_type;
+  __u8 reserved[5];
+};
+struct rdma_ucm_create_id_resp {
+  __u32 id;
+};
+struct rdma_ucm_destroy_id {
+  __aligned_u64 response;
+  __u32 id;
+  __u32 reserved;
+};
+struct rdma_ucm_destroy_id_resp {
+  __u32 events_reported;
+};
+struct rdma_ucm_bind_ip {
+  __aligned_u64 response;
+  struct sockaddr_in6 addr;
+  __u32 id;
+};
+struct rdma_ucm_bind {
+  __u32 id;
+  __u16 addr_size;
+  __u16 reserved;
+  struct __kernel_sockaddr_storage addr;
+};
+struct rdma_ucm_resolve_ip {
+  struct sockaddr_in6 src_addr;
+  struct sockaddr_in6 dst_addr;
+  __u32 id;
+  __u32 timeout_ms;
+};
+struct rdma_ucm_resolve_addr {
+  __u32 id;
+  __u32 timeout_ms;
+  __u16 src_size;
+  __u16 dst_size;
+  __u32 reserved;
+  struct __kernel_sockaddr_storage src_addr;
+  struct __kernel_sockaddr_storage dst_addr;
+};
+struct rdma_ucm_resolve_route {
+  __u32 id;
+  __u32 timeout_ms;
+};
+enum {
+  RDMA_USER_CM_QUERY_ADDR,
+  RDMA_USER_CM_QUERY_PATH,
+  RDMA_USER_CM_QUERY_GID
+};
+struct rdma_ucm_query {
+  __aligned_u64 response;
+  __u32 id;
+  __u32 option;
+};
+struct rdma_ucm_query_route_resp {
+  __aligned_u64 node_guid;
+  struct ib_user_path_rec ib_route[2];
+  struct sockaddr_in6 src_addr;
+  struct sockaddr_in6 dst_addr;
+  __u32 num_paths;
+  __u8 port_num;
+  __u8 reserved[3];
+  __u32 ibdev_index;
+  __u32 reserved1;
+};
+struct rdma_ucm_query_addr_resp {
+  __aligned_u64 node_guid;
+  __u8 port_num;
+  __u8 reserved;
+  __u16 pkey;
+  __u16 src_size;
+  __u16 dst_size;
+  struct __kernel_sockaddr_storage src_addr;
+  struct __kernel_sockaddr_storage dst_addr;
+  __u32 ibdev_index;
+  __u32 reserved1;
+};
+struct rdma_ucm_query_path_resp {
+  __u32 num_paths;
+  __u32 reserved;
+  struct ib_path_rec_data path_data[0];
+};
+struct rdma_ucm_conn_param {
+  __u32 qp_num;
+  __u32 qkey;
+  __u8 private_data[RDMA_MAX_PRIVATE_DATA];
+  __u8 private_data_len;
+  __u8 srq;
+  __u8 responder_resources;
+  __u8 initiator_depth;
+  __u8 flow_control;
+  __u8 retry_count;
+  __u8 rnr_retry_count;
+  __u8 valid;
+};
+struct rdma_ucm_ud_param {
+  __u32 qp_num;
+  __u32 qkey;
+  struct ib_uverbs_ah_attr ah_attr;
+  __u8 private_data[RDMA_MAX_PRIVATE_DATA];
+  __u8 private_data_len;
+  __u8 reserved[7];
+};
+struct rdma_ucm_ece {
+  __u32 vendor_id;
+  __u32 attr_mod;
+};
+struct rdma_ucm_connect {
+  struct rdma_ucm_conn_param conn_param;
+  __u32 id;
+  __u32 reserved;
+  struct rdma_ucm_ece ece;
+};
+struct rdma_ucm_listen {
+  __u32 id;
+  __u32 backlog;
+};
+struct rdma_ucm_accept {
+  __aligned_u64 uid;
+  struct rdma_ucm_conn_param conn_param;
+  __u32 id;
+  __u32 reserved;
+  struct rdma_ucm_ece ece;
+};
+struct rdma_ucm_reject {
+  __u32 id;
+  __u8 private_data_len;
+  __u8 reason;
+  __u8 reserved[2];
+  __u8 private_data[RDMA_MAX_PRIVATE_DATA];
+};
+struct rdma_ucm_disconnect {
+  __u32 id;
+};
+struct rdma_ucm_init_qp_attr {
+  __aligned_u64 response;
+  __u32 id;
+  __u32 qp_state;
+};
+struct rdma_ucm_notify {
+  __u32 id;
+  __u32 event;
+};
+struct rdma_ucm_join_ip_mcast {
+  __aligned_u64 response;
+  __aligned_u64 uid;
+  struct sockaddr_in6 addr;
+  __u32 id;
+};
+enum {
+  RDMA_MC_JOIN_FLAG_FULLMEMBER,
+  RDMA_MC_JOIN_FLAG_SENDONLY_FULLMEMBER,
+  RDMA_MC_JOIN_FLAG_RESERVED,
+};
+struct rdma_ucm_join_mcast {
+  __aligned_u64 response;
+  __aligned_u64 uid;
+  __u32 id;
+  __u16 addr_size;
+  __u16 join_flags;
+  struct __kernel_sockaddr_storage addr;
+};
+struct rdma_ucm_get_event {
+  __aligned_u64 response;
+};
+struct rdma_ucm_event_resp {
+  __aligned_u64 uid;
+  __u32 id;
+  __u32 event;
+  __u32 status;
+  union {
+    struct rdma_ucm_conn_param conn;
+    struct rdma_ucm_ud_param ud;
+  } param;
+  __u32 reserved;
+  struct rdma_ucm_ece ece;
+};
+enum {
+  RDMA_OPTION_ID = 0,
+  RDMA_OPTION_IB = 1
+};
+enum {
+  RDMA_OPTION_ID_TOS = 0,
+  RDMA_OPTION_ID_REUSEADDR = 1,
+  RDMA_OPTION_ID_AFONLY = 2,
+  RDMA_OPTION_ID_ACK_TIMEOUT = 3
+};
+enum {
+  RDMA_OPTION_IB_PATH = 1
+};
+struct rdma_ucm_set_option {
+  __aligned_u64 optval;
+  __u32 id;
+  __u32 level;
+  __u32 optname;
+  __u32 optlen;
+};
+struct rdma_ucm_migrate_id {
+  __aligned_u64 response;
+  __u32 id;
+  __u32 fd;
+};
+struct rdma_ucm_migrate_resp {
+  __u32 events_reported;
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/rdma_user_ioctl.h b/x86_64-linux-musl/include/rdma/rdma_user_ioctl.h
new file mode 100644
index 0000000..2f532d3
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/rdma_user_ioctl.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 RDMA_USER_IOCTL_H
+#define RDMA_USER_IOCTL_H
+#include <rdma/ib_user_mad.h>
+#include <rdma/hfi/hfi1_ioctl.h>
+#include <rdma/rdma_user_ioctl_cmds.h>
+#define IB_IOCTL_MAGIC RDMA_IOCTL_MAGIC
+#define IB_USER_MAD_REGISTER_AGENT _IOWR(RDMA_IOCTL_MAGIC, 0x01, struct ib_user_mad_reg_req)
+#define IB_USER_MAD_UNREGISTER_AGENT _IOW(RDMA_IOCTL_MAGIC, 0x02, __u32)
+#define IB_USER_MAD_ENABLE_PKEY _IO(RDMA_IOCTL_MAGIC, 0x03)
+#define IB_USER_MAD_REGISTER_AGENT2 _IOWR(RDMA_IOCTL_MAGIC, 0x04, struct ib_user_mad_reg_req2)
+#define HFI1_IOCTL_ASSIGN_CTXT _IOWR(RDMA_IOCTL_MAGIC, 0xE1, struct hfi1_user_info)
+#define HFI1_IOCTL_CTXT_INFO _IOW(RDMA_IOCTL_MAGIC, 0xE2, struct hfi1_ctxt_info)
+#define HFI1_IOCTL_USER_INFO _IOW(RDMA_IOCTL_MAGIC, 0xE3, struct hfi1_base_info)
+#define HFI1_IOCTL_TID_UPDATE _IOWR(RDMA_IOCTL_MAGIC, 0xE4, struct hfi1_tid_info)
+#define HFI1_IOCTL_TID_FREE _IOWR(RDMA_IOCTL_MAGIC, 0xE5, struct hfi1_tid_info)
+#define HFI1_IOCTL_CREDIT_UPD _IO(RDMA_IOCTL_MAGIC, 0xE6)
+#define HFI1_IOCTL_RECV_CTRL _IOW(RDMA_IOCTL_MAGIC, 0xE8, int)
+#define HFI1_IOCTL_POLL_TYPE _IOW(RDMA_IOCTL_MAGIC, 0xE9, int)
+#define HFI1_IOCTL_ACK_EVENT _IOW(RDMA_IOCTL_MAGIC, 0xEA, unsigned long)
+#define HFI1_IOCTL_SET_PKEY _IOW(RDMA_IOCTL_MAGIC, 0xEB, __u16)
+#define HFI1_IOCTL_CTXT_RESET _IO(RDMA_IOCTL_MAGIC, 0xEC)
+#define HFI1_IOCTL_TID_INVAL_READ _IOWR(RDMA_IOCTL_MAGIC, 0xED, struct hfi1_tid_info)
+#define HFI1_IOCTL_GET_VERS _IOR(RDMA_IOCTL_MAGIC, 0xEE, int)
+#endif
diff --git a/x86_64-linux-musl/include/rdma/rdma_user_ioctl_cmds.h b/x86_64-linux-musl/include/rdma/rdma_user_ioctl_cmds.h
new file mode 100644
index 0000000..22adfaa
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/rdma_user_ioctl_cmds.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 RDMA_USER_IOCTL_CMDS_H
+#define RDMA_USER_IOCTL_CMDS_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define RDMA_IOCTL_MAGIC 0x1b
+#define RDMA_VERBS_IOCTL _IOWR(RDMA_IOCTL_MAGIC, 1, struct ib_uverbs_ioctl_hdr)
+enum {
+  UVERBS_ATTR_F_MANDATORY = 1U << 0,
+  UVERBS_ATTR_F_VALID_OUTPUT = 1U << 1,
+};
+struct ib_uverbs_attr {
+  __u16 attr_id;
+  __u16 len;
+  __u16 flags;
+  union {
+    struct {
+      __u8 elem_id;
+      __u8 reserved;
+    } enum_data;
+    __u16 reserved;
+  } attr_data;
+  union {
+    __aligned_u64 data;
+    __s64 data_s64;
+  };
+};
+struct ib_uverbs_ioctl_hdr {
+  __u16 length;
+  __u16 object_id;
+  __u16 method_id;
+  __u16 num_attrs;
+  __aligned_u64 reserved1;
+  __u32 driver_id;
+  __u32 reserved2;
+  struct ib_uverbs_attr attrs[0];
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/rdma_user_rxe.h b/x86_64-linux-musl/include/rdma/rdma_user_rxe.h
new file mode 100644
index 0000000..cdb00c7
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/rdma_user_rxe.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 RDMA_USER_RXE_H
+#define RDMA_USER_RXE_H
+#include <linux/types.h>
+#include <linux/socket.h>
+#include <linux/in.h>
+#include <linux/in6.h>
+enum {
+  RXE_NETWORK_TYPE_IPV4 = 1,
+  RXE_NETWORK_TYPE_IPV6 = 2,
+};
+union rxe_gid {
+  __u8 raw[16];
+  struct {
+    __be64 subnet_prefix;
+    __be64 interface_id;
+  } global;
+};
+struct rxe_global_route {
+  union rxe_gid dgid;
+  __u32 flow_label;
+  __u8 sgid_index;
+  __u8 hop_limit;
+  __u8 traffic_class;
+};
+struct rxe_av {
+  __u8 port_num;
+  __u8 network_type;
+  __u8 dmac[6];
+  struct rxe_global_route grh;
+  union {
+    struct sockaddr_in _sockaddr_in;
+    struct sockaddr_in6 _sockaddr_in6;
+  } sgid_addr, dgid_addr;
+};
+struct rxe_send_wr {
+  __aligned_u64 wr_id;
+  __u32 num_sge;
+  __u32 opcode;
+  __u32 send_flags;
+  union {
+    __be32 imm_data;
+    __u32 invalidate_rkey;
+  } ex;
+  union {
+    struct {
+      __aligned_u64 remote_addr;
+      __u32 rkey;
+      __u32 reserved;
+    } rdma;
+    struct {
+      __aligned_u64 remote_addr;
+      __aligned_u64 compare_add;
+      __aligned_u64 swap;
+      __u32 rkey;
+      __u32 reserved;
+    } atomic;
+    struct {
+      __u32 remote_qpn;
+      __u32 remote_qkey;
+      __u16 pkey_index;
+      __u16 reserved;
+      __u32 ah_num;
+      __u32 pad[4];
+      struct rxe_av av;
+    } ud;
+    struct {
+      __aligned_u64 addr;
+      __aligned_u64 length;
+      __u32 mr_lkey;
+      __u32 mw_rkey;
+      __u32 rkey;
+      __u32 access;
+    } mw;
+  } wr;
+};
+struct rxe_sge {
+  __aligned_u64 addr;
+  __u32 length;
+  __u32 lkey;
+};
+struct mminfo {
+  __aligned_u64 offset;
+  __u32 size;
+  __u32 pad;
+};
+struct rxe_dma_info {
+  __u32 length;
+  __u32 resid;
+  __u32 cur_sge;
+  __u32 num_sge;
+  __u32 sge_offset;
+  __u32 reserved;
+  union {
+    __DECLARE_FLEX_ARRAY(__u8, inline_data);
+    __DECLARE_FLEX_ARRAY(struct rxe_sge, sge);
+  };
+};
+struct rxe_send_wqe {
+  struct rxe_send_wr wr;
+  __u32 status;
+  __u32 state;
+  __aligned_u64 iova;
+  __u32 mask;
+  __u32 first_psn;
+  __u32 last_psn;
+  __u32 ack_length;
+  __u32 ssn;
+  __u32 has_rd_atomic;
+  struct rxe_dma_info dma;
+};
+struct rxe_recv_wqe {
+  __aligned_u64 wr_id;
+  __u32 num_sge;
+  __u32 padding;
+  struct rxe_dma_info dma;
+};
+struct rxe_create_ah_resp {
+  __u32 ah_num;
+  __u32 reserved;
+};
+struct rxe_create_cq_resp {
+  struct mminfo mi;
+};
+struct rxe_resize_cq_resp {
+  struct mminfo mi;
+};
+struct rxe_create_qp_resp {
+  struct mminfo rq_mi;
+  struct mminfo sq_mi;
+};
+struct rxe_create_srq_resp {
+  struct mminfo mi;
+  __u32 srq_num;
+  __u32 reserved;
+};
+struct rxe_modify_srq_cmd {
+  __aligned_u64 mmap_info_addr;
+};
+struct rxe_queue_buf {
+  __u32 log2_elem_size;
+  __u32 index_mask;
+  __u32 pad_1[30];
+  __u32 producer_index;
+  __u32 pad_2[31];
+  __u32 consumer_index;
+  __u32 pad_3[31];
+  __u8 data[];
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/rvt-abi.h b/x86_64-linux-musl/include/rdma/rvt-abi.h
new file mode 100644
index 0000000..49632ee
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/rvt-abi.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 RVT_ABI_USER_H
+#define RVT_ABI_USER_H
+#include <linux/types.h>
+#include <rdma/ib_user_verbs.h>
+#ifndef RDMA_ATOMIC_UAPI
+#define RDMA_ATOMIC_UAPI(_type,_name) struct { _type val; } _name
+#endif
+struct rvt_wqe_sge {
+  __aligned_u64 addr;
+  __u32 length;
+  __u32 lkey;
+};
+struct rvt_cq_wc {
+  RDMA_ATOMIC_UAPI(__u32, head);
+  RDMA_ATOMIC_UAPI(__u32, tail);
+  struct ib_uverbs_wc uqueue[];
+};
+struct rvt_rwqe {
+  __u64 wr_id;
+  __u8 num_sge;
+  __u8 padding[7];
+  struct rvt_wqe_sge sg_list[];
+};
+struct rvt_rwq {
+  RDMA_ATOMIC_UAPI(__u32, head);
+  RDMA_ATOMIC_UAPI(__u32, tail);
+  struct rvt_rwqe wq[];
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/siw-abi.h b/x86_64-linux-musl/include/rdma/siw-abi.h
new file mode 100644
index 0000000..e2363a1
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/siw-abi.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 _SIW_USER_H
+#define _SIW_USER_H
+#include <linux/types.h>
+#define SIW_NODE_DESC_COMMON "Software iWARP stack"
+#define SIW_ABI_VERSION 1
+#define SIW_MAX_SGE 6
+#define SIW_UOBJ_MAX_KEY 0x08FFFF
+#define SIW_INVAL_UOBJ_KEY (SIW_UOBJ_MAX_KEY + 1)
+struct siw_uresp_create_cq {
+  __u32 cq_id;
+  __u32 num_cqe;
+  __aligned_u64 cq_key;
+};
+struct siw_uresp_create_qp {
+  __u32 qp_id;
+  __u32 num_sqe;
+  __u32 num_rqe;
+  __u32 pad;
+  __aligned_u64 sq_key;
+  __aligned_u64 rq_key;
+};
+struct siw_ureq_reg_mr {
+  __u8 stag_key;
+  __u8 reserved[3];
+  __u32 pad;
+};
+struct siw_uresp_reg_mr {
+  __u32 stag;
+  __u32 pad;
+};
+struct siw_uresp_create_srq {
+  __u32 num_rqe;
+  __u32 pad;
+  __aligned_u64 srq_key;
+};
+struct siw_uresp_alloc_ctx {
+  __u32 dev_id;
+  __u32 pad;
+};
+enum siw_opcode {
+  SIW_OP_WRITE,
+  SIW_OP_READ,
+  SIW_OP_READ_LOCAL_INV,
+  SIW_OP_SEND,
+  SIW_OP_SEND_WITH_IMM,
+  SIW_OP_SEND_REMOTE_INV,
+  SIW_OP_FETCH_AND_ADD,
+  SIW_OP_COMP_AND_SWAP,
+  SIW_OP_RECEIVE,
+  SIW_OP_READ_RESPONSE,
+  SIW_OP_INVAL_STAG,
+  SIW_OP_REG_MR,
+  SIW_NUM_OPCODES
+};
+struct siw_sge {
+  __aligned_u64 laddr;
+  __u32 length;
+  __u32 lkey;
+};
+#define SIW_MAX_INLINE (sizeof(struct siw_sge) * (SIW_MAX_SGE - 1))
+#if SIW_MAX_SGE < 2
+#error "SIW_MAX_SGE must be at least 2"
+#endif
+enum siw_wqe_flags {
+  SIW_WQE_VALID = 1,
+  SIW_WQE_INLINE = (1 << 1),
+  SIW_WQE_SIGNALLED = (1 << 2),
+  SIW_WQE_SOLICITED = (1 << 3),
+  SIW_WQE_READ_FENCE = (1 << 4),
+  SIW_WQE_REM_INVAL = (1 << 5),
+  SIW_WQE_COMPLETED = (1 << 6)
+};
+struct siw_sqe {
+  __aligned_u64 id;
+  __u16 flags;
+  __u8 num_sge;
+  __u8 opcode;
+  __u32 rkey;
+  union {
+    __aligned_u64 raddr;
+    __aligned_u64 base_mr;
+  };
+  union {
+    struct siw_sge sge[SIW_MAX_SGE];
+    __aligned_u64 access;
+  };
+};
+struct siw_rqe {
+  __aligned_u64 id;
+  __u16 flags;
+  __u8 num_sge;
+  __u8 opcode;
+  __u32 unused;
+  struct siw_sge sge[SIW_MAX_SGE];
+};
+enum siw_notify_flags {
+  SIW_NOTIFY_NOT = (0),
+  SIW_NOTIFY_SOLICITED = (1 << 0),
+  SIW_NOTIFY_NEXT_COMPLETION = (1 << 1),
+  SIW_NOTIFY_MISSED_EVENTS = (1 << 2),
+  SIW_NOTIFY_ALL = SIW_NOTIFY_SOLICITED | SIW_NOTIFY_NEXT_COMPLETION | SIW_NOTIFY_MISSED_EVENTS
+};
+enum siw_wc_status {
+  SIW_WC_SUCCESS,
+  SIW_WC_LOC_LEN_ERR,
+  SIW_WC_LOC_PROT_ERR,
+  SIW_WC_LOC_QP_OP_ERR,
+  SIW_WC_WR_FLUSH_ERR,
+  SIW_WC_BAD_RESP_ERR,
+  SIW_WC_LOC_ACCESS_ERR,
+  SIW_WC_REM_ACCESS_ERR,
+  SIW_WC_REM_INV_REQ_ERR,
+  SIW_WC_GENERAL_ERR,
+  SIW_NUM_WC_STATUS
+};
+struct siw_cqe {
+  __aligned_u64 id;
+  __u8 flags;
+  __u8 opcode;
+  __u16 status;
+  __u32 bytes;
+  union {
+    __aligned_u64 imm_data;
+    __u32 inval_stag;
+  };
+  union {
+    struct ib_qp * base_qp;
+    __aligned_u64 qp_id;
+  };
+};
+struct siw_cq_ctrl {
+  __u32 flags;
+  __u32 pad;
+};
+#endif
diff --git a/x86_64-linux-musl/include/rdma/vmw_pvrdma-abi.h b/x86_64-linux-musl/include/rdma/vmw_pvrdma-abi.h
new file mode 100644
index 0000000..f4444c4
--- /dev/null
+++ b/x86_64-linux-musl/include/rdma/vmw_pvrdma-abi.h
@@ -0,0 +1,249 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __VMW_PVRDMA_ABI_H__
+#define __VMW_PVRDMA_ABI_H__
+#include <linux/types.h>
+#define PVRDMA_UVERBS_ABI_VERSION 3
+#define PVRDMA_UAR_HANDLE_MASK 0x00FFFFFF
+#define PVRDMA_UAR_QP_OFFSET 0
+#define PVRDMA_UAR_QP_SEND (1 << 30)
+#define PVRDMA_UAR_QP_RECV (1 << 31)
+#define PVRDMA_UAR_CQ_OFFSET 4
+#define PVRDMA_UAR_CQ_ARM_SOL (1 << 29)
+#define PVRDMA_UAR_CQ_ARM (1 << 30)
+#define PVRDMA_UAR_CQ_POLL (1 << 31)
+#define PVRDMA_UAR_SRQ_OFFSET 8
+#define PVRDMA_UAR_SRQ_RECV (1 << 30)
+enum pvrdma_wr_opcode {
+  PVRDMA_WR_RDMA_WRITE,
+  PVRDMA_WR_RDMA_WRITE_WITH_IMM,
+  PVRDMA_WR_SEND,
+  PVRDMA_WR_SEND_WITH_IMM,
+  PVRDMA_WR_RDMA_READ,
+  PVRDMA_WR_ATOMIC_CMP_AND_SWP,
+  PVRDMA_WR_ATOMIC_FETCH_AND_ADD,
+  PVRDMA_WR_LSO,
+  PVRDMA_WR_SEND_WITH_INV,
+  PVRDMA_WR_RDMA_READ_WITH_INV,
+  PVRDMA_WR_LOCAL_INV,
+  PVRDMA_WR_FAST_REG_MR,
+  PVRDMA_WR_MASKED_ATOMIC_CMP_AND_SWP,
+  PVRDMA_WR_MASKED_ATOMIC_FETCH_AND_ADD,
+  PVRDMA_WR_BIND_MW,
+  PVRDMA_WR_REG_SIG_MR,
+  PVRDMA_WR_ERROR,
+};
+enum pvrdma_wc_status {
+  PVRDMA_WC_SUCCESS,
+  PVRDMA_WC_LOC_LEN_ERR,
+  PVRDMA_WC_LOC_QP_OP_ERR,
+  PVRDMA_WC_LOC_EEC_OP_ERR,
+  PVRDMA_WC_LOC_PROT_ERR,
+  PVRDMA_WC_WR_FLUSH_ERR,
+  PVRDMA_WC_MW_BIND_ERR,
+  PVRDMA_WC_BAD_RESP_ERR,
+  PVRDMA_WC_LOC_ACCESS_ERR,
+  PVRDMA_WC_REM_INV_REQ_ERR,
+  PVRDMA_WC_REM_ACCESS_ERR,
+  PVRDMA_WC_REM_OP_ERR,
+  PVRDMA_WC_RETRY_EXC_ERR,
+  PVRDMA_WC_RNR_RETRY_EXC_ERR,
+  PVRDMA_WC_LOC_RDD_VIOL_ERR,
+  PVRDMA_WC_REM_INV_RD_REQ_ERR,
+  PVRDMA_WC_REM_ABORT_ERR,
+  PVRDMA_WC_INV_EECN_ERR,
+  PVRDMA_WC_INV_EEC_STATE_ERR,
+  PVRDMA_WC_FATAL_ERR,
+  PVRDMA_WC_RESP_TIMEOUT_ERR,
+  PVRDMA_WC_GENERAL_ERR,
+};
+enum pvrdma_wc_opcode {
+  PVRDMA_WC_SEND,
+  PVRDMA_WC_RDMA_WRITE,
+  PVRDMA_WC_RDMA_READ,
+  PVRDMA_WC_COMP_SWAP,
+  PVRDMA_WC_FETCH_ADD,
+  PVRDMA_WC_BIND_MW,
+  PVRDMA_WC_LSO,
+  PVRDMA_WC_LOCAL_INV,
+  PVRDMA_WC_FAST_REG_MR,
+  PVRDMA_WC_MASKED_COMP_SWAP,
+  PVRDMA_WC_MASKED_FETCH_ADD,
+  PVRDMA_WC_RECV = 1 << 7,
+  PVRDMA_WC_RECV_RDMA_WITH_IMM,
+};
+enum pvrdma_wc_flags {
+  PVRDMA_WC_GRH = 1 << 0,
+  PVRDMA_WC_WITH_IMM = 1 << 1,
+  PVRDMA_WC_WITH_INVALIDATE = 1 << 2,
+  PVRDMA_WC_IP_CSUM_OK = 1 << 3,
+  PVRDMA_WC_WITH_SMAC = 1 << 4,
+  PVRDMA_WC_WITH_VLAN = 1 << 5,
+  PVRDMA_WC_WITH_NETWORK_HDR_TYPE = 1 << 6,
+  PVRDMA_WC_FLAGS_MAX = PVRDMA_WC_WITH_NETWORK_HDR_TYPE,
+};
+enum pvrdma_network_type {
+  PVRDMA_NETWORK_IB,
+  PVRDMA_NETWORK_ROCE_V1 = PVRDMA_NETWORK_IB,
+  PVRDMA_NETWORK_IPV4,
+  PVRDMA_NETWORK_IPV6
+};
+struct pvrdma_alloc_ucontext_resp {
+  __u32 qp_tab_size;
+  __u32 reserved;
+};
+struct pvrdma_alloc_pd_resp {
+  __u32 pdn;
+  __u32 reserved;
+};
+struct pvrdma_create_cq {
+  __aligned_u64 buf_addr;
+  __u32 buf_size;
+  __u32 reserved;
+};
+struct pvrdma_create_cq_resp {
+  __u32 cqn;
+  __u32 reserved;
+};
+struct pvrdma_resize_cq {
+  __aligned_u64 buf_addr;
+  __u32 buf_size;
+  __u32 reserved;
+};
+struct pvrdma_create_srq {
+  __aligned_u64 buf_addr;
+  __u32 buf_size;
+  __u32 reserved;
+};
+struct pvrdma_create_srq_resp {
+  __u32 srqn;
+  __u32 reserved;
+};
+struct pvrdma_create_qp {
+  __aligned_u64 rbuf_addr;
+  __aligned_u64 sbuf_addr;
+  __u32 rbuf_size;
+  __u32 sbuf_size;
+  __aligned_u64 qp_addr;
+};
+struct pvrdma_create_qp_resp {
+  __u32 qpn;
+  __u32 qp_handle;
+};
+struct pvrdma_ex_cmp_swap {
+  __aligned_u64 swap_val;
+  __aligned_u64 compare_val;
+  __aligned_u64 swap_mask;
+  __aligned_u64 compare_mask;
+};
+struct pvrdma_ex_fetch_add {
+  __aligned_u64 add_val;
+  __aligned_u64 field_boundary;
+};
+struct pvrdma_av {
+  __u32 port_pd;
+  __u32 sl_tclass_flowlabel;
+  __u8 dgid[16];
+  __u8 src_path_bits;
+  __u8 gid_index;
+  __u8 stat_rate;
+  __u8 hop_limit;
+  __u8 dmac[6];
+  __u8 reserved[6];
+};
+struct pvrdma_sge {
+  __aligned_u64 addr;
+  __u32 length;
+  __u32 lkey;
+};
+struct pvrdma_rq_wqe_hdr {
+  __aligned_u64 wr_id;
+  __u32 num_sge;
+  __u32 total_len;
+};
+struct pvrdma_sq_wqe_hdr {
+  __aligned_u64 wr_id;
+  __u32 num_sge;
+  __u32 total_len;
+  __u32 opcode;
+  __u32 send_flags;
+  union {
+    __be32 imm_data;
+    __u32 invalidate_rkey;
+  } ex;
+  __u32 reserved;
+  union {
+    struct {
+      __aligned_u64 remote_addr;
+      __u32 rkey;
+      __u8 reserved[4];
+    } rdma;
+    struct {
+      __aligned_u64 remote_addr;
+      __aligned_u64 compare_add;
+      __aligned_u64 swap;
+      __u32 rkey;
+      __u32 reserved;
+    } atomic;
+    struct {
+      __aligned_u64 remote_addr;
+      __u32 log_arg_sz;
+      __u32 rkey;
+      union {
+        struct pvrdma_ex_cmp_swap cmp_swap;
+        struct pvrdma_ex_fetch_add fetch_add;
+      } wr_data;
+    } masked_atomics;
+    struct {
+      __aligned_u64 iova_start;
+      __aligned_u64 pl_pdir_dma;
+      __u32 page_shift;
+      __u32 page_list_len;
+      __u32 length;
+      __u32 access_flags;
+      __u32 rkey;
+      __u32 reserved;
+    } fast_reg;
+    struct {
+      __u32 remote_qpn;
+      __u32 remote_qkey;
+      struct pvrdma_av av;
+    } ud;
+  } wr;
+};
+struct pvrdma_cqe {
+  __aligned_u64 wr_id;
+  __aligned_u64 qp;
+  __u32 opcode;
+  __u32 status;
+  __u32 byte_len;
+  __be32 imm_data;
+  __u32 src_qp;
+  __u32 wc_flags;
+  __u32 vendor_err;
+  __u16 pkey_index;
+  __u16 slid;
+  __u8 sl;
+  __u8 dlid_path_bits;
+  __u8 port_num;
+  __u8 smac[6];
+  __u8 network_hdr_type;
+  __u8 reserved2[6];
+};
+#endif
diff --git a/x86_64-linux-musl/include/regex.h b/x86_64-linux-musl/include/regex.h
new file mode 100644
index 0000000..dce2177
--- /dev/null
+++ b/x86_64-linux-musl/include/regex.h
@@ -0,0 +1,62 @@
+#ifndef _REGEX_H
+#define _REGEX_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_regoff_t
+#define __NEED_size_t
+
+#include <bits/alltypes.h>
+
+typedef struct re_pattern_buffer {
+	size_t re_nsub;
+	void *__opaque, *__padding[4];
+	size_t __nsub2;
+	char __padding2;
+} regex_t;
+
+typedef struct {
+	regoff_t rm_so;
+	regoff_t rm_eo;
+} regmatch_t;
+
+#define REG_EXTENDED    1
+#define REG_ICASE       2
+#define REG_NEWLINE     4
+#define REG_NOSUB       8
+
+#define REG_NOTBOL      1
+#define REG_NOTEOL      2
+
+#define REG_OK          0
+#define REG_NOMATCH     1
+#define REG_BADPAT      2
+#define REG_ECOLLATE    3
+#define REG_ECTYPE      4
+#define REG_EESCAPE     5
+#define REG_ESUBREG     6
+#define REG_EBRACK      7
+#define REG_EPAREN      8
+#define REG_EBRACE      9
+#define REG_BADBR       10
+#define REG_ERANGE      11
+#define REG_ESPACE      12
+#define REG_BADRPT      13
+
+#define REG_ENOSYS      -1
+
+int regcomp(regex_t *__restrict, const char *__restrict, int);
+int regexec(const regex_t *__restrict, const char *__restrict, size_t, regmatch_t *__restrict, int);
+void regfree(regex_t *);
+
+size_t regerror(int, const regex_t *__restrict, char *__restrict, size_t);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/resolv.h b/x86_64-linux-musl/include/resolv.h
new file mode 100644
index 0000000..8b23ad6
--- /dev/null
+++ b/x86_64-linux-musl/include/resolv.h
@@ -0,0 +1,142 @@
+#ifndef _RESOLV_H
+#define _RESOLV_H
+
+#include <stdint.h>
+#include <arpa/nameser.h>
+#include <netinet/in.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MAXNS			3
+#define MAXDFLSRCH		3
+#define MAXDNSRCH		6
+#define LOCALDOMAINPARTS	2
+
+#define RES_TIMEOUT		5
+#define MAXRESOLVSORT		10
+#define RES_MAXNDOTS		15
+#define RES_MAXRETRANS		30
+#define RES_MAXRETRY		5
+#define RES_DFLRETRY		2
+#define RES_MAXTIME		65535
+
+/* unused; purely for broken apps */
+typedef struct __res_state {
+	int retrans;
+	int retry;
+	unsigned long options;
+	int nscount;
+	struct sockaddr_in nsaddr_list[MAXNS];
+# define nsaddr	nsaddr_list[0]
+	unsigned short id;
+	char *dnsrch[MAXDNSRCH+1];
+	char defdname[256];
+	unsigned long pfcode;
+	unsigned ndots:4;
+	unsigned nsort:4;
+	unsigned ipv6_unavail:1;
+	unsigned unused:23;
+	struct {
+		struct in_addr addr;
+		uint32_t mask;
+	} sort_list[MAXRESOLVSORT];
+	void *qhook;
+	void *rhook;
+	int res_h_errno;
+	int _vcsock;
+	unsigned _flags;
+	union {
+		char pad[52];
+		struct {
+			uint16_t		nscount;
+			uint16_t		nsmap[MAXNS];
+			int			nssocks[MAXNS];
+			uint16_t		nscount6;
+			uint16_t		nsinit;
+			struct sockaddr_in6	*nsaddrs[MAXNS];
+			unsigned int		_initstamp[2];
+		} _ext;
+	} _u;
+} *res_state;
+
+#define	__RES	19960801
+
+#ifndef _PATH_RESCONF
+#define _PATH_RESCONF        "/etc/resolv.conf"
+#endif
+
+struct res_sym {
+	int number;
+	char *name;
+	char *humanname;
+};
+
+#define	RES_F_VC	0x00000001
+#define	RES_F_CONN	0x00000002
+#define RES_F_EDNS0ERR	0x00000004
+
+#define	RES_EXHAUSTIVE	0x00000001
+
+#define RES_INIT	0x00000001
+#define RES_DEBUG	0x00000002
+#define RES_AAONLY	0x00000004
+#define RES_USEVC	0x00000008
+#define RES_PRIMARY	0x00000010
+#define RES_IGNTC	0x00000020
+#define RES_RECURSE	0x00000040
+#define RES_DEFNAMES	0x00000080
+#define RES_STAYOPEN	0x00000100
+#define RES_DNSRCH	0x00000200
+#define	RES_INSECURE1	0x00000400
+#define	RES_INSECURE2	0x00000800
+#define	RES_NOALIASES	0x00001000
+#define	RES_USE_INET6	0x00002000
+#define RES_ROTATE	0x00004000
+#define	RES_NOCHECKNAME	0x00008000
+#define	RES_KEEPTSIG	0x00010000
+#define	RES_BLAST	0x00020000
+#define RES_USEBSTRING	0x00040000
+#define RES_NOIP6DOTINT	0x00080000
+#define RES_USE_EDNS0	0x00100000
+#define RES_SNGLKUP	0x00200000
+#define RES_SNGLKUPREOP	0x00400000
+#define RES_USE_DNSSEC	0x00800000
+
+#define RES_DEFAULT	(RES_RECURSE|RES_DEFNAMES|RES_DNSRCH|RES_NOIP6DOTINT)
+
+#define RES_PRF_STATS	0x00000001
+#define RES_PRF_UPDATE	0x00000002
+#define RES_PRF_CLASS   0x00000004
+#define RES_PRF_CMD	0x00000008
+#define RES_PRF_QUES	0x00000010
+#define RES_PRF_ANS	0x00000020
+#define RES_PRF_AUTH	0x00000040
+#define RES_PRF_ADD	0x00000080
+#define RES_PRF_HEAD1	0x00000100
+#define RES_PRF_HEAD2	0x00000200
+#define RES_PRF_TTLID	0x00000400
+#define RES_PRF_HEADX	0x00000800
+#define RES_PRF_QUERY	0x00001000
+#define RES_PRF_REPLY	0x00002000
+#define RES_PRF_INIT	0x00004000
+
+struct __res_state *__res_state(void);
+#define _res (*__res_state())
+
+int res_init(void);
+int res_query(const char *, int, int, unsigned char *, int);
+int res_querydomain(const char *, const char *, int, int, unsigned char *, int);
+int res_search(const char *, int, int, unsigned char *, int);
+int res_mkquery(int, const char *, int, int, const unsigned char *, int, const unsigned char*, unsigned char *, int);
+int res_send(const unsigned char *, int, unsigned char *, int);
+int dn_comp(const char *, unsigned char *, int, unsigned char **, unsigned char **);
+int dn_expand(const unsigned char *, const unsigned char *, const unsigned char *, char *, int);
+int dn_skipname(const unsigned char *, const unsigned char *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sched.h b/x86_64-linux-musl/include/sched.h
new file mode 100644
index 0000000..fda4b48
--- /dev/null
+++ b/x86_64-linux-musl/include/sched.h
@@ -0,0 +1,148 @@
+#ifndef _SCHED_H
+#define _SCHED_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_struct_timespec
+#define __NEED_pid_t
+#define __NEED_time_t
+
+#ifdef _GNU_SOURCE
+#define __NEED_size_t
+#endif
+
+#include <bits/alltypes.h>
+
+struct sched_param {
+	int sched_priority;
+	int __reserved1;
+#if _REDIR_TIME64
+	long __reserved2[4];
+#else
+	struct {
+		time_t __reserved1;
+		long __reserved2;
+	} __reserved2[2];
+#endif
+	int __reserved3;
+};
+
+int    sched_get_priority_max(int);
+int    sched_get_priority_min(int);
+int    sched_getparam(pid_t, struct sched_param *);
+int    sched_getscheduler(pid_t);
+int    sched_rr_get_interval(pid_t, struct timespec *);
+int    sched_setparam(pid_t, const struct sched_param *);
+int    sched_setscheduler(pid_t, int, const struct sched_param *);
+int     sched_yield(void);
+
+#define SCHED_OTHER 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
+
+#ifdef _GNU_SOURCE
+#define CSIGNAL		0x000000ff
+#define CLONE_NEWTIME	0x00000080
+#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
+int clone (int (*)(void *), void *, int, void *, ...);
+int unshare(int);
+int setns(int, int);
+
+void *memcpy(void *__restrict, const void *__restrict, size_t);
+int memcmp(const void *, const void *, size_t);
+void *memset (void *, int, size_t);
+void *calloc(size_t, size_t);
+void free(void *);
+
+typedef struct cpu_set_t { unsigned long __bits[128/sizeof(long)]; } cpu_set_t;
+int __sched_cpucount(size_t, const cpu_set_t *);
+int sched_getcpu(void);
+int sched_getaffinity(pid_t, size_t, cpu_set_t *);
+int sched_setaffinity(pid_t, size_t, const cpu_set_t *);
+
+#define __CPU_op_S(i, size, set, op) ( (i)/8U >= (size) ? 0 : \
+	(((unsigned long *)(set))[(i)/8/sizeof(long)] op (1UL<<((i)%(8*sizeof(long))))) )
+
+#define CPU_SET_S(i, size, set) __CPU_op_S(i, size, set, |=)
+#define CPU_CLR_S(i, size, set) __CPU_op_S(i, size, set, &=~)
+#define CPU_ISSET_S(i, size, set) __CPU_op_S(i, size, set, &)
+
+#define __CPU_op_func_S(func, op) \
+static __inline void __CPU_##func##_S(size_t __size, cpu_set_t *__dest, \
+	const cpu_set_t *__src1, const cpu_set_t *__src2) \
+{ \
+	size_t __i; \
+	for (__i=0; __i<__size/sizeof(long); __i++) \
+		((unsigned long *)__dest)[__i] = ((unsigned long *)__src1)[__i] \
+			op ((unsigned long *)__src2)[__i] ; \
+}
+
+__CPU_op_func_S(AND, &)
+__CPU_op_func_S(OR, |)
+__CPU_op_func_S(XOR, ^)
+
+#define CPU_AND_S(a,b,c,d) __CPU_AND_S(a,b,c,d)
+#define CPU_OR_S(a,b,c,d) __CPU_OR_S(a,b,c,d)
+#define CPU_XOR_S(a,b,c,d) __CPU_XOR_S(a,b,c,d)
+
+#define CPU_COUNT_S(size,set) __sched_cpucount(size,set)
+#define CPU_ZERO_S(size,set) memset(set,0,size)
+#define CPU_EQUAL_S(size,set1,set2) (!memcmp(set1,set2,size))
+
+#define CPU_ALLOC_SIZE(n) (sizeof(long) * ( (n)/(8*sizeof(long)) \
+	+ ((n)%(8*sizeof(long)) + 8*sizeof(long)-1)/(8*sizeof(long)) ) )
+#define CPU_ALLOC(n) ((cpu_set_t *)calloc(1,CPU_ALLOC_SIZE(n)))
+#define CPU_FREE(set) free(set)
+
+#define CPU_SETSIZE 128
+
+#define CPU_SET(i, set) CPU_SET_S(i,sizeof(cpu_set_t),set)
+#define CPU_CLR(i, set) CPU_CLR_S(i,sizeof(cpu_set_t),set)
+#define CPU_ISSET(i, set) CPU_ISSET_S(i,sizeof(cpu_set_t),set)
+#define CPU_AND(d,s1,s2) CPU_AND_S(sizeof(cpu_set_t),d,s1,s2)
+#define CPU_OR(d,s1,s2) CPU_OR_S(sizeof(cpu_set_t),d,s1,s2)
+#define CPU_XOR(d,s1,s2) CPU_XOR_S(sizeof(cpu_set_t),d,s1,s2)
+#define CPU_COUNT(set) CPU_COUNT_S(sizeof(cpu_set_t),set)
+#define CPU_ZERO(set) CPU_ZERO_S(sizeof(cpu_set_t),set)
+#define CPU_EQUAL(s1,s2) CPU_EQUAL_S(sizeof(cpu_set_t),s1,s2)
+
+#endif
+
+#if _REDIR_TIME64
+__REDIR(sched_rr_get_interval, __sched_rr_get_interval_time64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/scsi/cxlflash_ioctl.h b/x86_64-linux-musl/include/scsi/cxlflash_ioctl.h
new file mode 100644
index 0000000..9781905
--- /dev/null
+++ b/x86_64-linux-musl/include/scsi/cxlflash_ioctl.h
@@ -0,0 +1,186 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _CXLFLASH_IOCTL_H
+#define _CXLFLASH_IOCTL_H
+#include <linux/types.h>
+#define CXLFLASH_WWID_LEN 16
+#define DK_CXLFLASH_VERSION_0 0
+struct dk_cxlflash_hdr {
+  __u16 version;
+  __u16 rsvd[3];
+  __u64 flags;
+  __u64 return_flags;
+};
+#define DK_CXLFLASH_ALL_PORTS_ACTIVE 0x0000000000000001ULL
+#define DK_CXLFLASH_APP_CLOSE_ADAP_FD 0x0000000000000002ULL
+#define DK_CXLFLASH_CONTEXT_SQ_CMD_MODE 0x0000000000000004ULL
+#define DK_CXLFLASH_ATTACH_REUSE_CONTEXT 0x8000000000000000ULL
+struct dk_cxlflash_attach {
+  struct dk_cxlflash_hdr hdr;
+  __u64 num_interrupts;
+  __u64 context_id;
+  __u64 mmio_size;
+  __u64 block_size;
+  __u64 adap_fd;
+  __u64 last_lba;
+  __u64 max_xfer;
+  __u64 reserved[8];
+};
+struct dk_cxlflash_detach {
+  struct dk_cxlflash_hdr hdr;
+  __u64 context_id;
+  __u64 reserved[8];
+};
+struct dk_cxlflash_udirect {
+  struct dk_cxlflash_hdr hdr;
+  __u64 context_id;
+  __u64 rsrc_handle;
+  __u64 last_lba;
+  __u64 reserved[8];
+};
+#define DK_CXLFLASH_UVIRTUAL_NEED_WRITE_SAME 0x8000000000000000ULL
+struct dk_cxlflash_uvirtual {
+  struct dk_cxlflash_hdr hdr;
+  __u64 context_id;
+  __u64 lun_size;
+  __u64 rsrc_handle;
+  __u64 last_lba;
+  __u64 reserved[8];
+};
+struct dk_cxlflash_release {
+  struct dk_cxlflash_hdr hdr;
+  __u64 context_id;
+  __u64 rsrc_handle;
+  __u64 reserved[8];
+};
+struct dk_cxlflash_resize {
+  struct dk_cxlflash_hdr hdr;
+  __u64 context_id;
+  __u64 rsrc_handle;
+  __u64 req_size;
+  __u64 last_lba;
+  __u64 reserved[8];
+};
+struct dk_cxlflash_clone {
+  struct dk_cxlflash_hdr hdr;
+  __u64 context_id_src;
+  __u64 context_id_dst;
+  __u64 adap_fd_src;
+  __u64 reserved[8];
+};
+#define DK_CXLFLASH_VERIFY_SENSE_LEN 18
+#define DK_CXLFLASH_VERIFY_HINT_SENSE 0x8000000000000000ULL
+struct dk_cxlflash_verify {
+  struct dk_cxlflash_hdr hdr;
+  __u64 context_id;
+  __u64 rsrc_handle;
+  __u64 hint;
+  __u64 last_lba;
+  __u8 sense_data[DK_CXLFLASH_VERIFY_SENSE_LEN];
+  __u8 pad[6];
+  __u64 reserved[8];
+};
+#define DK_CXLFLASH_RECOVER_AFU_CONTEXT_RESET 0x8000000000000000ULL
+struct dk_cxlflash_recover_afu {
+  struct dk_cxlflash_hdr hdr;
+  __u64 reason;
+  __u64 context_id;
+  __u64 mmio_size;
+  __u64 adap_fd;
+  __u64 reserved[8];
+};
+#define DK_CXLFLASH_MANAGE_LUN_WWID_LEN CXLFLASH_WWID_LEN
+#define DK_CXLFLASH_MANAGE_LUN_ENABLE_SUPERPIPE 0x8000000000000000ULL
+#define DK_CXLFLASH_MANAGE_LUN_DISABLE_SUPERPIPE 0x4000000000000000ULL
+#define DK_CXLFLASH_MANAGE_LUN_ALL_PORTS_ACCESSIBLE 0x2000000000000000ULL
+struct dk_cxlflash_manage_lun {
+  struct dk_cxlflash_hdr hdr;
+  __u8 wwid[DK_CXLFLASH_MANAGE_LUN_WWID_LEN];
+  __u64 reserved[8];
+};
+union cxlflash_ioctls {
+  struct dk_cxlflash_attach attach;
+  struct dk_cxlflash_detach detach;
+  struct dk_cxlflash_udirect udirect;
+  struct dk_cxlflash_uvirtual uvirtual;
+  struct dk_cxlflash_release release;
+  struct dk_cxlflash_resize resize;
+  struct dk_cxlflash_clone clone;
+  struct dk_cxlflash_verify verify;
+  struct dk_cxlflash_recover_afu recover_afu;
+  struct dk_cxlflash_manage_lun manage_lun;
+};
+#define MAX_CXLFLASH_IOCTL_SZ (sizeof(union cxlflash_ioctls))
+#define CXL_MAGIC 0xCA
+#define CXL_IOWR(_n,_s) _IOWR(CXL_MAGIC, _n, struct _s)
+#define DK_CXLFLASH_ATTACH CXL_IOWR(0x80, dk_cxlflash_attach)
+#define DK_CXLFLASH_USER_DIRECT CXL_IOWR(0x81, dk_cxlflash_udirect)
+#define DK_CXLFLASH_RELEASE CXL_IOWR(0x82, dk_cxlflash_release)
+#define DK_CXLFLASH_DETACH CXL_IOWR(0x83, dk_cxlflash_detach)
+#define DK_CXLFLASH_VERIFY CXL_IOWR(0x84, dk_cxlflash_verify)
+#define DK_CXLFLASH_RECOVER_AFU CXL_IOWR(0x85, dk_cxlflash_recover_afu)
+#define DK_CXLFLASH_MANAGE_LUN CXL_IOWR(0x86, dk_cxlflash_manage_lun)
+#define DK_CXLFLASH_USER_VIRTUAL CXL_IOWR(0x87, dk_cxlflash_uvirtual)
+#define DK_CXLFLASH_VLUN_RESIZE CXL_IOWR(0x88, dk_cxlflash_resize)
+#define DK_CXLFLASH_VLUN_CLONE CXL_IOWR(0x89, dk_cxlflash_clone)
+#define HT_CXLFLASH_VERSION_0 0
+struct ht_cxlflash_hdr {
+  __u16 version;
+  __u16 subcmd;
+  __u16 rsvd[2];
+  __u64 flags;
+  __u64 return_flags;
+};
+#define HT_CXLFLASH_HOST_READ 0x0000000000000000ULL
+#define HT_CXLFLASH_HOST_WRITE 0x0000000000000001ULL
+#define HT_CXLFLASH_LUN_PROVISION_SUBCMD_CREATE_LUN 0x0001
+#define HT_CXLFLASH_LUN_PROVISION_SUBCMD_DELETE_LUN 0x0002
+#define HT_CXLFLASH_LUN_PROVISION_SUBCMD_QUERY_PORT 0x0003
+struct ht_cxlflash_lun_provision {
+  struct ht_cxlflash_hdr hdr;
+  __u16 port;
+  __u16 reserved16[3];
+  __u64 size;
+  __u64 lun_id;
+  __u8 wwid[CXLFLASH_WWID_LEN];
+  __u64 max_num_luns;
+  __u64 cur_num_luns;
+  __u64 max_cap_port;
+  __u64 cur_cap_port;
+  __u64 reserved[8];
+};
+#define HT_CXLFLASH_AFU_DEBUG_MAX_DATA_LEN 262144
+#define HT_CXLFLASH_AFU_DEBUG_SUBCMD_LEN 12
+struct ht_cxlflash_afu_debug {
+  struct ht_cxlflash_hdr hdr;
+  __u8 reserved8[4];
+  __u8 afu_subcmd[HT_CXLFLASH_AFU_DEBUG_SUBCMD_LEN];
+  __u64 data_ea;
+  __u32 data_len;
+  __u32 reserved32;
+  __u64 reserved[8];
+};
+union cxlflash_ht_ioctls {
+  struct ht_cxlflash_lun_provision lun_provision;
+  struct ht_cxlflash_afu_debug afu_debug;
+};
+#define MAX_HT_CXLFLASH_IOCTL_SZ (sizeof(union cxlflash_ht_ioctls))
+#define HT_CXLFLASH_LUN_PROVISION CXL_IOWR(0xBF, ht_cxlflash_lun_provision)
+#define HT_CXLFLASH_AFU_DEBUG CXL_IOWR(0xBE, ht_cxlflash_afu_debug)
+#endif
diff --git a/x86_64-linux-musl/include/scsi/fc/fc_els.h b/x86_64-linux-musl/include/scsi/fc/fc_els.h
new file mode 100644
index 0000000..04ae5b8
--- /dev/null
+++ b/x86_64-linux-musl/include/scsi/fc/fc_els.h
@@ -0,0 +1,718 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _FC_ELS_H_
+#define _FC_ELS_H_
+#include <linux/types.h>
+#include <asm/byteorder.h>
+enum fc_els_cmd {
+  ELS_LS_RJT = 0x01,
+  ELS_LS_ACC = 0x02,
+  ELS_PLOGI = 0x03,
+  ELS_FLOGI = 0x04,
+  ELS_LOGO = 0x05,
+  ELS_ABTX = 0x06,
+  ELS_RCS = 0x07,
+  ELS_RES = 0x08,
+  ELS_RSS = 0x09,
+  ELS_RSI = 0x0a,
+  ELS_ESTS = 0x0b,
+  ELS_ESTC = 0x0c,
+  ELS_ADVC = 0x0d,
+  ELS_RTV = 0x0e,
+  ELS_RLS = 0x0f,
+  ELS_ECHO = 0x10,
+  ELS_TEST = 0x11,
+  ELS_RRQ = 0x12,
+  ELS_REC = 0x13,
+  ELS_SRR = 0x14,
+  ELS_FPIN = 0x16,
+  ELS_EDC = 0x17,
+  ELS_RDP = 0x18,
+  ELS_RDF = 0x19,
+  ELS_PRLI = 0x20,
+  ELS_PRLO = 0x21,
+  ELS_SCN = 0x22,
+  ELS_TPLS = 0x23,
+  ELS_TPRLO = 0x24,
+  ELS_LCLM = 0x25,
+  ELS_GAID = 0x30,
+  ELS_FACT = 0x31,
+  ELS_FDACDT = 0x32,
+  ELS_NACT = 0x33,
+  ELS_NDACT = 0x34,
+  ELS_QOSR = 0x40,
+  ELS_RVCS = 0x41,
+  ELS_PDISC = 0x50,
+  ELS_FDISC = 0x51,
+  ELS_ADISC = 0x52,
+  ELS_RNC = 0x53,
+  ELS_FARP_REQ = 0x54,
+  ELS_FARP_REPL = 0x55,
+  ELS_RPS = 0x56,
+  ELS_RPL = 0x57,
+  ELS_RPBC = 0x58,
+  ELS_FAN = 0x60,
+  ELS_RSCN = 0x61,
+  ELS_SCR = 0x62,
+  ELS_RNFT = 0x63,
+  ELS_CSR = 0x68,
+  ELS_CSU = 0x69,
+  ELS_LINIT = 0x70,
+  ELS_LSTS = 0x72,
+  ELS_RNID = 0x78,
+  ELS_RLIR = 0x79,
+  ELS_LIRR = 0x7a,
+  ELS_SRL = 0x7b,
+  ELS_SBRP = 0x7c,
+  ELS_RPSC = 0x7d,
+  ELS_QSA = 0x7e,
+  ELS_EVFP = 0x7f,
+  ELS_LKA = 0x80,
+  ELS_AUTH_ELS = 0x90,
+};
+#define FC_ELS_CMDS_INIT {[ELS_LS_RJT] = "LS_RJT",[ELS_LS_ACC] = "LS_ACC",[ELS_PLOGI] = "PLOGI",[ELS_FLOGI] = "FLOGI",[ELS_LOGO] = "LOGO",[ELS_ABTX] = "ABTX",[ELS_RCS] = "RCS",[ELS_RES] = "RES",[ELS_RSS] = "RSS",[ELS_RSI] = "RSI",[ELS_ESTS] = "ESTS",[ELS_ESTC] = "ESTC",[ELS_ADVC] = "ADVC",[ELS_RTV] = "RTV",[ELS_RLS] = "RLS",[ELS_ECHO] = "ECHO",[ELS_TEST] = "TEST",[ELS_RRQ] = "RRQ",[ELS_REC] = "REC",[ELS_SRR] = "SRR",[ELS_FPIN] = "FPIN",[ELS_EDC] = "EDC",[ELS_RDP] = "RDP",[ELS_RDF] = "RDF",[ELS_PRLI] = "PRLI",[ELS_PRLO] = "PRLO",[ELS_SCN] = "SCN",[ELS_TPLS] = "TPLS",[ELS_TPRLO] = "TPRLO",[ELS_LCLM] = "LCLM",[ELS_GAID] = "GAID",[ELS_FACT] = "FACT",[ELS_FDACDT] = "FDACDT",[ELS_NACT] = "NACT",[ELS_NDACT] = "NDACT",[ELS_QOSR] = "QOSR",[ELS_RVCS] = "RVCS",[ELS_PDISC] = "PDISC",[ELS_FDISC] = "FDISC",[ELS_ADISC] = "ADISC",[ELS_RNC] = "RNC",[ELS_FARP_REQ] = "FARP_REQ",[ELS_FARP_REPL] = "FARP_REPL",[ELS_RPS] = "RPS",[ELS_RPL] = "RPL",[ELS_RPBC] = "RPBC",[ELS_FAN] = "FAN",[ELS_RSCN] = "RSCN",[ELS_SCR] = "SCR",[ELS_RNFT] = "RNFT",[ELS_CSR] = "CSR",[ELS_CSU] = "CSU",[ELS_LINIT] = "LINIT",[ELS_LSTS] = "LSTS",[ELS_RNID] = "RNID",[ELS_RLIR] = "RLIR",[ELS_LIRR] = "LIRR",[ELS_SRL] = "SRL",[ELS_SBRP] = "SBRP",[ELS_RPSC] = "RPSC",[ELS_QSA] = "QSA",[ELS_EVFP] = "EVFP",[ELS_LKA] = "LKA",[ELS_AUTH_ELS] = "AUTH_ELS", \
+}
+struct fc_els_ls_acc {
+  __u8 la_cmd;
+  __u8 la_resv[3];
+};
+struct fc_els_ls_rjt {
+  __u8 er_cmd;
+  __u8 er_resv[4];
+  __u8 er_reason;
+  __u8 er_explan;
+  __u8 er_vendor;
+};
+enum fc_els_rjt_reason {
+  ELS_RJT_NONE = 0,
+  ELS_RJT_INVAL = 0x01,
+  ELS_RJT_LOGIC = 0x03,
+  ELS_RJT_BUSY = 0x05,
+  ELS_RJT_PROT = 0x07,
+  ELS_RJT_UNAB = 0x09,
+  ELS_RJT_UNSUP = 0x0b,
+  ELS_RJT_INPROG = 0x0e,
+  ELS_RJT_FIP = 0x20,
+  ELS_RJT_VENDOR = 0xff,
+};
+enum fc_els_rjt_explan {
+  ELS_EXPL_NONE = 0x00,
+  ELS_EXPL_SPP_OPT_ERR = 0x01,
+  ELS_EXPL_SPP_ICTL_ERR = 0x03,
+  ELS_EXPL_AH = 0x11,
+  ELS_EXPL_AH_REQ = 0x13,
+  ELS_EXPL_SID = 0x15,
+  ELS_EXPL_OXID_RXID = 0x17,
+  ELS_EXPL_INPROG = 0x19,
+  ELS_EXPL_PLOGI_REQD = 0x1e,
+  ELS_EXPL_INSUF_RES = 0x29,
+  ELS_EXPL_UNAB_DATA = 0x2a,
+  ELS_EXPL_UNSUPR = 0x2c,
+  ELS_EXPL_INV_LEN = 0x2d,
+  ELS_EXPL_NOT_NEIGHBOR = 0x62,
+};
+enum fc_ls_tlv_dtag {
+  ELS_DTAG_LS_REQ_INFO = 0x00000001,
+  ELS_DTAG_LNK_FAULT_CAP = 0x0001000D,
+  ELS_DTAG_CG_SIGNAL_CAP = 0x0001000F,
+  ELS_DTAG_LNK_INTEGRITY = 0x00020001,
+  ELS_DTAG_DELIVERY = 0x00020002,
+  ELS_DTAG_PEER_CONGEST = 0x00020003,
+  ELS_DTAG_CONGESTION = 0x00020004,
+  ELS_DTAG_FPIN_REGISTER = 0x00030001,
+};
+#define FC_LS_TLV_DTAG_INIT { { ELS_DTAG_LS_REQ_INFO, "Link Service Request Information" }, { ELS_DTAG_LNK_FAULT_CAP, "Link Fault Capability" }, { ELS_DTAG_CG_SIGNAL_CAP, "Congestion Signaling Capability" }, { ELS_DTAG_LNK_INTEGRITY, "Link Integrity Notification" }, { ELS_DTAG_DELIVERY, "Delivery Notification Present" }, { ELS_DTAG_PEER_CONGEST, "Peer Congestion Notification" }, { ELS_DTAG_CONGESTION, "Congestion Notification" }, { ELS_DTAG_FPIN_REGISTER, "FPIN Registration" }, \
+}
+struct fc_tlv_desc {
+  __be32 desc_tag;
+  __be32 desc_len;
+  __u8 desc_value[0];
+};
+#define FC_TLV_DESC_HDR_SZ sizeof(struct fc_tlv_desc)
+#define FC_TLV_DESC_LENGTH_FROM_SZ(desc) (sizeof(desc) - FC_TLV_DESC_HDR_SZ)
+#define FC_TLV_DESC_SZ_FROM_LENGTH(tlv) (__be32_to_cpu((tlv)->desc_len) + FC_TLV_DESC_HDR_SZ)
+struct fc_els_lsri_desc {
+  __be32 desc_tag;
+  __be32 desc_len;
+  struct {
+    __u8 cmd;
+    __u8 bytes[3];
+  } rqst_w0;
+};
+struct fc_els_csp {
+  __u8 sp_hi_ver;
+  __u8 sp_lo_ver;
+  __be16 sp_bb_cred;
+  __be16 sp_features;
+  __be16 sp_bb_data;
+  union {
+    struct {
+      __be16 _sp_tot_seq;
+      __be16 _sp_rel_off;
+    } sp_plogi;
+    struct {
+      __be32 _sp_r_a_tov;
+    } sp_flogi_acc;
+  } sp_u;
+  __be32 sp_e_d_tov;
+};
+#define sp_tot_seq sp_u.sp_plogi._sp_tot_seq
+#define sp_rel_off sp_u.sp_plogi._sp_rel_off
+#define sp_r_a_tov sp_u.sp_flogi_acc._sp_r_a_tov
+#define FC_SP_BB_DATA_MASK 0xfff
+#define FC_SP_MIN_MAX_PAYLOAD FC_MIN_MAX_PAYLOAD
+#define FC_SP_MAX_MAX_PAYLOAD FC_MAX_PAYLOAD
+#define FC_SP_FT_NPIV 0x8000
+#define FC_SP_FT_CIRO 0x8000
+#define FC_SP_FT_CLAD 0x8000
+#define FC_SP_FT_RAND 0x4000
+#define FC_SP_FT_VAL 0x2000
+#define FC_SP_FT_NPIV_ACC 0x2000
+#define FC_SP_FT_FPORT 0x1000
+#define FC_SP_FT_ABB 0x0800
+#define FC_SP_FT_EDTR 0x0400
+#define FC_SP_FT_MCAST 0x0200
+#define FC_SP_FT_BCAST 0x0100
+#define FC_SP_FT_HUNT 0x0080
+#define FC_SP_FT_SIMP 0x0040
+#define FC_SP_FT_SEC 0x0020
+#define FC_SP_FT_CSYN 0x0010
+#define FC_SP_FT_RTTOV 0x0008
+#define FC_SP_FT_HALF 0x0004
+#define FC_SP_FT_SEQC 0x0002
+#define FC_SP_FT_PAYL 0x0001
+struct fc_els_cssp {
+  __be16 cp_class;
+  __be16 cp_init;
+  __be16 cp_recip;
+  __be16 cp_rdfs;
+  __be16 cp_con_seq;
+  __be16 cp_ee_cred;
+  __u8 cp_resv1;
+  __u8 cp_open_seq;
+  __u8 _cp_resv2[2];
+};
+#define FC_CPC_VALID 0x8000
+#define FC_CPC_IMIX 0x4000
+#define FC_CPC_SEQ 0x0800
+#define FC_CPC_CAMP 0x0200
+#define FC_CPC_PRI 0x0080
+#define FC_CPI_CSYN 0x0010
+#define FC_CPR_CSYN 0x0008
+struct fc_els_flogi {
+  __u8 fl_cmd;
+  __u8 _fl_resvd[3];
+  struct fc_els_csp fl_csp;
+  __be64 fl_wwpn;
+  __be64 fl_wwnn;
+  struct fc_els_cssp fl_cssp[4];
+  __u8 fl_vend[16];
+} __attribute__((__packed__));
+struct fc_els_spp {
+  __u8 spp_type;
+  __u8 spp_type_ext;
+  __u8 spp_flags;
+  __u8 _spp_resvd;
+  __be32 spp_orig_pa;
+  __be32 spp_resp_pa;
+  __be32 spp_params;
+};
+#define FC_SPP_OPA_VAL 0x80
+#define FC_SPP_RPA_VAL 0x40
+#define FC_SPP_EST_IMG_PAIR 0x20
+#define FC_SPP_RESP_MASK 0x0f
+enum fc_els_spp_resp {
+  FC_SPP_RESP_ACK = 1,
+  FC_SPP_RESP_RES = 2,
+  FC_SPP_RESP_INIT = 3,
+  FC_SPP_RESP_NO_PA = 4,
+  FC_SPP_RESP_CONF = 5,
+  FC_SPP_RESP_COND = 6,
+  FC_SPP_RESP_MULT = 7,
+  FC_SPP_RESP_INVL = 8,
+};
+struct fc_els_rrq {
+  __u8 rrq_cmd;
+  __u8 rrq_zero[3];
+  __u8 rrq_resvd;
+  __u8 rrq_s_id[3];
+  __be16 rrq_ox_id;
+  __be16 rrq_rx_id;
+};
+struct fc_els_rec {
+  __u8 rec_cmd;
+  __u8 rec_zero[3];
+  __u8 rec_resvd;
+  __u8 rec_s_id[3];
+  __be16 rec_ox_id;
+  __be16 rec_rx_id;
+};
+struct fc_els_rec_acc {
+  __u8 reca_cmd;
+  __u8 reca_zero[3];
+  __be16 reca_ox_id;
+  __be16 reca_rx_id;
+  __u8 reca_resvd1;
+  __u8 reca_ofid[3];
+  __u8 reca_resvd2;
+  __u8 reca_rfid[3];
+  __be32 reca_fc4value;
+  __be32 reca_e_stat;
+};
+struct fc_els_prli {
+  __u8 prli_cmd;
+  __u8 prli_spp_len;
+  __be16 prli_len;
+};
+struct fc_els_prlo {
+  __u8 prlo_cmd;
+  __u8 prlo_obs;
+  __be16 prlo_len;
+};
+struct fc_els_adisc {
+  __u8 adisc_cmd;
+  __u8 adisc_resv[3];
+  __u8 adisc_resv1;
+  __u8 adisc_hard_addr[3];
+  __be64 adisc_wwpn;
+  __be64 adisc_wwnn;
+  __u8 adisc_resv2;
+  __u8 adisc_port_id[3];
+} __attribute__((__packed__));
+struct fc_els_logo {
+  __u8 fl_cmd;
+  __u8 fl_zero[3];
+  __u8 fl_resvd;
+  __u8 fl_n_port_id[3];
+  __be64 fl_n_port_wwn;
+};
+struct fc_els_rtv {
+  __u8 rtv_cmd;
+  __u8 rtv_zero[3];
+};
+struct fc_els_rtv_acc {
+  __u8 rtv_cmd;
+  __u8 rtv_zero[3];
+  __be32 rtv_r_a_tov;
+  __be32 rtv_e_d_tov;
+  __be32 rtv_toq;
+};
+#define FC_ELS_RTV_EDRES (1 << 26)
+#define FC_ELS_RTV_RTTOV (1 << 19)
+struct fc_els_scr {
+  __u8 scr_cmd;
+  __u8 scr_resv[6];
+  __u8 scr_reg_func;
+};
+enum fc_els_scr_func {
+  ELS_SCRF_FAB = 1,
+  ELS_SCRF_NPORT = 2,
+  ELS_SCRF_FULL = 3,
+  ELS_SCRF_CLEAR = 255,
+};
+struct fc_els_rscn {
+  __u8 rscn_cmd;
+  __u8 rscn_page_len;
+  __be16 rscn_plen;
+};
+struct fc_els_rscn_page {
+  __u8 rscn_page_flags;
+  __u8 rscn_fid[3];
+};
+#define ELS_RSCN_EV_QUAL_BIT 2
+#define ELS_RSCN_EV_QUAL_MASK 0xf
+#define ELS_RSCN_ADDR_FMT_BIT 0
+#define ELS_RSCN_ADDR_FMT_MASK 0x3
+enum fc_els_rscn_ev_qual {
+  ELS_EV_QUAL_NONE = 0,
+  ELS_EV_QUAL_NS_OBJ = 1,
+  ELS_EV_QUAL_PORT_ATTR = 2,
+  ELS_EV_QUAL_SERV_OBJ = 3,
+  ELS_EV_QUAL_SW_CONFIG = 4,
+  ELS_EV_QUAL_REM_OBJ = 5,
+};
+enum fc_els_rscn_addr_fmt {
+  ELS_ADDR_FMT_PORT = 0,
+  ELS_ADDR_FMT_AREA = 1,
+  ELS_ADDR_FMT_DOM = 2,
+  ELS_ADDR_FMT_FAB = 3,
+};
+struct fc_els_rnid {
+  __u8 rnid_cmd;
+  __u8 rnid_resv[3];
+  __u8 rnid_fmt;
+  __u8 rnid_resv2[3];
+};
+enum fc_els_rnid_fmt {
+  ELS_RNIDF_NONE = 0,
+  ELS_RNIDF_GEN = 0xdf,
+};
+struct fc_els_rnid_resp {
+  __u8 rnid_cmd;
+  __u8 rnid_resv[3];
+  __u8 rnid_fmt;
+  __u8 rnid_cid_len;
+  __u8 rnid_resv2;
+  __u8 rnid_sid_len;
+};
+struct fc_els_rnid_cid {
+  __be64 rnid_wwpn;
+  __be64 rnid_wwnn;
+};
+struct fc_els_rnid_gen {
+  __u8 rnid_vend_id[16];
+  __be32 rnid_atype;
+  __be32 rnid_phys_port;
+  __be32 rnid_att_nodes;
+  __u8 rnid_node_mgmt;
+  __u8 rnid_ip_ver;
+  __be16 rnid_prot_port;
+  __be32 rnid_ip_addr[4];
+  __u8 rnid_resvd[2];
+  __be16 rnid_vend_spec;
+};
+enum fc_els_rnid_atype {
+  ELS_RNIDA_UNK = 0x01,
+  ELS_RNIDA_OTHER = 0x02,
+  ELS_RNIDA_HUB = 0x03,
+  ELS_RNIDA_SWITCH = 0x04,
+  ELS_RNIDA_GATEWAY = 0x05,
+  ELS_RNIDA_CONV = 0x06,
+  ELS_RNIDA_HBA = 0x07,
+  ELS_RNIDA_PROXY = 0x08,
+  ELS_RNIDA_STORAGE = 0x09,
+  ELS_RNIDA_HOST = 0x0a,
+  ELS_RNIDA_SUBSYS = 0x0b,
+  ELS_RNIDA_ACCESS = 0x0e,
+  ELS_RNIDA_NAS = 0x11,
+  ELS_RNIDA_BRIDGE = 0x12,
+  ELS_RNIDA_VIRT = 0x13,
+  ELS_RNIDA_MF = 0xff,
+  ELS_RNIDA_MF_HUB = 1UL << 31,
+  ELS_RNIDA_MF_SW = 1UL << 30,
+  ELS_RNIDA_MF_GW = 1UL << 29,
+  ELS_RNIDA_MF_ST = 1UL << 28,
+  ELS_RNIDA_MF_HOST = 1UL << 27,
+  ELS_RNIDA_MF_SUB = 1UL << 26,
+  ELS_RNIDA_MF_ACC = 1UL << 25,
+  ELS_RNIDA_MF_WDM = 1UL << 24,
+  ELS_RNIDA_MF_NAS = 1UL << 23,
+  ELS_RNIDA_MF_BR = 1UL << 22,
+  ELS_RNIDA_MF_VIRT = 1UL << 21,
+};
+enum fc_els_rnid_mgmt {
+  ELS_RNIDM_SNMP = 0,
+  ELS_RNIDM_TELNET = 1,
+  ELS_RNIDM_HTTP = 2,
+  ELS_RNIDM_HTTPS = 3,
+  ELS_RNIDM_XML = 4,
+};
+enum fc_els_rnid_ipver {
+  ELS_RNIDIP_NONE = 0,
+  ELS_RNIDIP_V4 = 1,
+  ELS_RNIDIP_V6 = 2,
+};
+struct fc_els_rpl {
+  __u8 rpl_cmd;
+  __u8 rpl_resv[5];
+  __be16 rpl_max_size;
+  __u8 rpl_resv1;
+  __u8 rpl_index[3];
+};
+struct fc_els_pnb {
+  __be32 pnb_phys_pn;
+  __u8 pnb_resv;
+  __u8 pnb_port_id[3];
+  __be64 pnb_wwpn;
+};
+struct fc_els_rpl_resp {
+  __u8 rpl_cmd;
+  __u8 rpl_resv1;
+  __be16 rpl_plen;
+  __u8 rpl_resv2;
+  __u8 rpl_llen[3];
+  __u8 rpl_resv3;
+  __u8 rpl_index[3];
+  struct fc_els_pnb rpl_pnb[1];
+};
+struct fc_els_lesb {
+  __be32 lesb_link_fail;
+  __be32 lesb_sync_loss;
+  __be32 lesb_sig_loss;
+  __be32 lesb_prim_err;
+  __be32 lesb_inv_word;
+  __be32 lesb_inv_crc;
+};
+struct fc_els_rps {
+  __u8 rps_cmd;
+  __u8 rps_resv[2];
+  __u8 rps_flag;
+  __be64 rps_port_spec;
+};
+enum fc_els_rps_flag {
+  FC_ELS_RPS_DID = 0x00,
+  FC_ELS_RPS_PPN = 0x01,
+  FC_ELS_RPS_WWPN = 0x02,
+};
+struct fc_els_rps_resp {
+  __u8 rps_cmd;
+  __u8 rps_resv[2];
+  __u8 rps_flag;
+  __u8 rps_resv2[2];
+  __be16 rps_status;
+  struct fc_els_lesb rps_lesb;
+};
+enum fc_els_rps_resp_flag {
+  FC_ELS_RPS_LPEV = 0x01,
+};
+enum fc_els_rps_resp_status {
+  FC_ELS_RPS_PTP = 1 << 5,
+  FC_ELS_RPS_LOOP = 1 << 4,
+  FC_ELS_RPS_FAB = 1 << 3,
+  FC_ELS_RPS_NO_SIG = 1 << 2,
+  FC_ELS_RPS_NO_SYNC = 1 << 1,
+  FC_ELS_RPS_RESET = 1 << 0,
+};
+struct fc_els_lirr {
+  __u8 lirr_cmd;
+  __u8 lirr_resv[3];
+  __u8 lirr_func;
+  __u8 lirr_fmt;
+  __u8 lirr_resv2[2];
+};
+enum fc_els_lirr_func {
+  ELS_LIRR_SET_COND = 0x01,
+  ELS_LIRR_SET_UNCOND = 0x02,
+  ELS_LIRR_CLEAR = 0xff
+};
+struct fc_els_srl {
+  __u8 srl_cmd;
+  __u8 srl_resv[3];
+  __u8 srl_flag;
+  __u8 srl_flag_param[3];
+};
+enum fc_els_srl_flag {
+  FC_ELS_SRL_ALL = 0x00,
+  FC_ELS_SRL_ONE = 0x01,
+  FC_ELS_SRL_EN_PER = 0x02,
+  FC_ELS_SRL_DIS_PER = 0x03,
+};
+struct fc_els_rls {
+  __u8 rls_cmd;
+  __u8 rls_resv[4];
+  __u8 rls_port_id[3];
+};
+struct fc_els_rls_resp {
+  __u8 rls_cmd;
+  __u8 rls_resv[3];
+  struct fc_els_lesb rls_lesb;
+};
+struct fc_els_rlir {
+  __u8 rlir_cmd;
+  __u8 rlir_resv[3];
+  __u8 rlir_fmt;
+  __u8 rlir_clr_len;
+  __u8 rlir_cld_len;
+  __u8 rlir_slr_len;
+};
+struct fc_els_clir {
+  __be64 clir_wwpn;
+  __be64 clir_wwnn;
+  __u8 clir_port_type;
+  __u8 clir_port_id[3];
+  __be64 clir_conn_wwpn;
+  __be64 clir_conn_wwnn;
+  __be64 clir_fab_name;
+  __be32 clir_phys_port;
+  __be32 clir_trans_id;
+  __u8 clir_resv[3];
+  __u8 clir_ts_fmt;
+  __be64 clir_timestamp;
+};
+enum fc_els_clir_ts_fmt {
+  ELS_CLIR_TS_UNKNOWN = 0,
+  ELS_CLIR_TS_SEC_FRAC = 1,
+  ELS_CLIR_TS_CSU = 2,
+};
+struct fc_els_clid {
+  __u8 clid_iq;
+  __u8 clid_ic;
+  __be16 clid_epai;
+};
+enum fc_els_clid_iq {
+  ELS_CLID_SWITCH = 0x20,
+  ELS_CLID_E_PORT = 0x10,
+  ELS_CLID_SEV_MASK = 0x0c,
+  ELS_CLID_SEV_INFO = 0x00,
+  ELS_CLID_SEV_INOP = 0x08,
+  ELS_CLID_SEV_DEG = 0x04,
+  ELS_CLID_LASER = 0x02,
+  ELS_CLID_FRU = 0x01,
+};
+enum fc_els_clid_ic {
+  ELS_CLID_IC_IMPL = 1,
+  ELS_CLID_IC_BER = 2,
+  ELS_CLID_IC_LOS = 3,
+  ELS_CLID_IC_NOS = 4,
+  ELS_CLID_IC_PST = 5,
+  ELS_CLID_IC_INVAL = 6,
+  ELS_CLID_IC_LOOP_TO = 7,
+  ELS_CLID_IC_LIP = 8,
+};
+enum fc_fpin_li_event_types {
+  FPIN_LI_UNKNOWN = 0x0,
+  FPIN_LI_LINK_FAILURE = 0x1,
+  FPIN_LI_LOSS_OF_SYNC = 0x2,
+  FPIN_LI_LOSS_OF_SIG = 0x3,
+  FPIN_LI_PRIM_SEQ_ERR = 0x4,
+  FPIN_LI_INVALID_TX_WD = 0x5,
+  FPIN_LI_INVALID_CRC = 0x6,
+  FPIN_LI_DEVICE_SPEC = 0xF,
+};
+#define FC_FPIN_LI_EVT_TYPES_INIT { { FPIN_LI_UNKNOWN, "Unknown" }, { FPIN_LI_LINK_FAILURE, "Link Failure" }, { FPIN_LI_LOSS_OF_SYNC, "Loss of Synchronization" }, { FPIN_LI_LOSS_OF_SIG, "Loss of Signal" }, { FPIN_LI_PRIM_SEQ_ERR, "Primitive Sequence Protocol Error" }, { FPIN_LI_INVALID_TX_WD, "Invalid Transmission Word" }, { FPIN_LI_INVALID_CRC, "Invalid CRC" }, { FPIN_LI_DEVICE_SPEC, "Device Specific" }, \
+}
+enum fc_fpin_deli_event_types {
+  FPIN_DELI_UNKNOWN = 0x0,
+  FPIN_DELI_TIMEOUT = 0x1,
+  FPIN_DELI_UNABLE_TO_ROUTE = 0x2,
+  FPIN_DELI_DEVICE_SPEC = 0xF,
+};
+#define FC_FPIN_DELI_EVT_TYPES_INIT { { FPIN_DELI_UNKNOWN, "Unknown" }, { FPIN_DELI_TIMEOUT, "Timeout" }, { FPIN_DELI_UNABLE_TO_ROUTE, "Unable to Route" }, { FPIN_DELI_DEVICE_SPEC, "Device Specific" }, \
+}
+enum fc_fpin_congn_event_types {
+  FPIN_CONGN_CLEAR = 0x0,
+  FPIN_CONGN_LOST_CREDIT = 0x1,
+  FPIN_CONGN_CREDIT_STALL = 0x2,
+  FPIN_CONGN_OVERSUBSCRIPTION = 0x3,
+  FPIN_CONGN_DEVICE_SPEC = 0xF,
+};
+#define FC_FPIN_CONGN_EVT_TYPES_INIT { { FPIN_CONGN_CLEAR, "Clear" }, { FPIN_CONGN_LOST_CREDIT, "Lost Credit" }, { FPIN_CONGN_CREDIT_STALL, "Credit Stall" }, { FPIN_CONGN_OVERSUBSCRIPTION, "Oversubscription" }, { FPIN_CONGN_DEVICE_SPEC, "Device Specific" }, \
+}
+enum fc_fpin_congn_severity_types {
+  FPIN_CONGN_SEVERITY_WARNING = 0xF1,
+  FPIN_CONGN_SEVERITY_ERROR = 0xF7,
+};
+struct fc_fn_li_desc {
+  __be32 desc_tag;
+  __be32 desc_len;
+  __be64 detecting_wwpn;
+  __be64 attached_wwpn;
+  __be16 event_type;
+  __be16 event_modifier;
+  __be32 event_threshold;
+  __be32 event_count;
+  __be32 pname_count;
+  __be64 pname_list[0];
+};
+struct fc_fn_deli_desc {
+  __be32 desc_tag;
+  __be32 desc_len;
+  __be64 detecting_wwpn;
+  __be64 attached_wwpn;
+  __be32 deli_reason_code;
+};
+struct fc_fn_peer_congn_desc {
+  __be32 desc_tag;
+  __be32 desc_len;
+  __be64 detecting_wwpn;
+  __be64 attached_wwpn;
+  __be16 event_type;
+  __be16 event_modifier;
+  __be32 event_period;
+  __be32 pname_count;
+  __be64 pname_list[0];
+};
+struct fc_fn_congn_desc {
+  __be32 desc_tag;
+  __be32 desc_len;
+  __be16 event_type;
+  __be16 event_modifier;
+  __be32 event_period;
+  __u8 severity;
+  __u8 resv[3];
+};
+struct fc_els_fpin {
+  __u8 fpin_cmd;
+  __u8 fpin_zero[3];
+  __be32 desc_len;
+  struct fc_tlv_desc fpin_desc[0];
+};
+struct fc_df_desc_fpin_reg {
+  __be32 desc_tag;
+  __be32 desc_len;
+  __be32 count;
+  __be32 desc_tags[0];
+};
+struct fc_els_rdf {
+  __u8 fpin_cmd;
+  __u8 fpin_zero[3];
+  __be32 desc_len;
+  struct fc_tlv_desc desc[0];
+};
+struct fc_els_rdf_resp {
+  struct fc_els_ls_acc acc_hdr;
+  __be32 desc_list_len;
+  struct fc_els_lsri_desc lsri;
+  struct fc_tlv_desc desc[0];
+};
+struct fc_diag_lnkflt_desc {
+  __be32 desc_tag;
+  __be32 desc_len;
+  __be32 degrade_activate_threshold;
+  __be32 degrade_deactivate_threshold;
+  __be32 fec_degrade_interval;
+};
+enum fc_edc_cg_signal_cap_types {
+  EDC_CG_SIG_NOTSUPPORTED = 0x00,
+  EDC_CG_SIG_WARN_ONLY = 0x01,
+  EDC_CG_SIG_WARN_ALARM = 0x02,
+};
+#define FC_EDC_CG_SIGNAL_CAP_TYPES_INIT { { EDC_CG_SIG_NOTSUPPORTED, "Signaling Not Supported" }, { EDC_CG_SIG_WARN_ONLY, "Warning Signal" }, { EDC_CG_SIG_WARN_ALARM, "Warning and Alarm Signals" }, \
+}
+enum fc_diag_cg_sig_freq_types {
+  EDC_CG_SIGFREQ_CNT_MIN = 1,
+  EDC_CG_SIGFREQ_CNT_MAX = 999,
+  EDC_CG_SIGFREQ_SEC = 0x1,
+  EDC_CG_SIGFREQ_MSEC = 0x2,
+};
+struct fc_diag_cg_sig_freq {
+  __be16 count;
+  __be16 units;
+};
+struct fc_diag_cg_sig_desc {
+  __be32 desc_tag;
+  __be32 desc_len;
+  __be32 xmt_signal_capability;
+  struct fc_diag_cg_sig_freq xmt_signal_frequency;
+  __be32 rcv_signal_capability;
+  struct fc_diag_cg_sig_freq rcv_signal_frequency;
+};
+struct fc_els_edc {
+  __u8 edc_cmd;
+  __u8 edc_zero[3];
+  __be32 desc_len;
+  struct fc_tlv_desc desc[0];
+};
+struct fc_els_edc_resp {
+  struct fc_els_ls_acc acc_hdr;
+  __be32 desc_list_len;
+  struct fc_els_lsri_desc lsri;
+  struct fc_tlv_desc desc[0];
+};
+#endif
diff --git a/x86_64-linux-musl/include/scsi/fc/fc_fs.h b/x86_64-linux-musl/include/scsi/fc/fc_fs.h
new file mode 100644
index 0000000..510d361
--- /dev/null
+++ b/x86_64-linux-musl/include/scsi/fc/fc_fs.h
@@ -0,0 +1,210 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _FC_FS_H_
+#define _FC_FS_H_
+#include <linux/types.h>
+struct fc_frame_header {
+  __u8 fh_r_ctl;
+  __u8 fh_d_id[3];
+  __u8 fh_cs_ctl;
+  __u8 fh_s_id[3];
+  __u8 fh_type;
+  __u8 fh_f_ctl[3];
+  __u8 fh_seq_id;
+  __u8 fh_df_ctl;
+  __be16 fh_seq_cnt;
+  __be16 fh_ox_id;
+  __be16 fh_rx_id;
+  __be32 fh_parm_offset;
+};
+#define FC_FRAME_HEADER_LEN 24
+#define FC_MAX_PAYLOAD 2112U
+#define FC_MIN_MAX_PAYLOAD 256U
+#define FC_MAX_FRAME (FC_MAX_PAYLOAD + FC_FRAME_HEADER_LEN)
+#define FC_MIN_MAX_FRAME (FC_MIN_MAX_PAYLOAD + FC_FRAME_HEADER_LEN)
+enum fc_rctl {
+  FC_RCTL_DD_UNCAT = 0x00,
+  FC_RCTL_DD_SOL_DATA = 0x01,
+  FC_RCTL_DD_UNSOL_CTL = 0x02,
+  FC_RCTL_DD_SOL_CTL = 0x03,
+  FC_RCTL_DD_UNSOL_DATA = 0x04,
+  FC_RCTL_DD_DATA_DESC = 0x05,
+  FC_RCTL_DD_UNSOL_CMD = 0x06,
+  FC_RCTL_DD_CMD_STATUS = 0x07,
+#define FC_RCTL_ILS_REQ FC_RCTL_DD_UNSOL_CTL
+#define FC_RCTL_ILS_REP FC_RCTL_DD_SOL_CTL
+  FC_RCTL_ELS_REQ = 0x22,
+  FC_RCTL_ELS_REP = 0x23,
+  FC_RCTL_ELS4_REQ = 0x32,
+  FC_RCTL_ELS4_REP = 0x33,
+  FC_RCTL_VFTH = 0x50,
+  FC_RCTL_IFRH = 0x51,
+  FC_RCTL_ENCH = 0x52,
+  FC_RCTL_BA_NOP = 0x80,
+  FC_RCTL_BA_ABTS = 0x81,
+  FC_RCTL_BA_RMC = 0x82,
+  FC_RCTL_BA_ACC = 0x84,
+  FC_RCTL_BA_RJT = 0x85,
+  FC_RCTL_BA_PRMT = 0x86,
+  FC_RCTL_ACK_1 = 0xc0,
+  FC_RCTL_ACK_0 = 0xc1,
+  FC_RCTL_P_RJT = 0xc2,
+  FC_RCTL_F_RJT = 0xc3,
+  FC_RCTL_P_BSY = 0xc4,
+  FC_RCTL_F_BSY = 0xc5,
+  FC_RCTL_F_BSYL = 0xc6,
+  FC_RCTL_LCR = 0xc7,
+  FC_RCTL_END = 0xc9,
+};
+#define FC_RCTL_NAMES_INIT {[FC_RCTL_DD_UNCAT] = "uncat",[FC_RCTL_DD_SOL_DATA] = "sol data",[FC_RCTL_DD_UNSOL_CTL] = "unsol ctl",[FC_RCTL_DD_SOL_CTL] = "sol ctl/reply",[FC_RCTL_DD_UNSOL_DATA] = "unsol data",[FC_RCTL_DD_DATA_DESC] = "data desc",[FC_RCTL_DD_UNSOL_CMD] = "unsol cmd",[FC_RCTL_DD_CMD_STATUS] = "cmd status",[FC_RCTL_ELS_REQ] = "ELS req",[FC_RCTL_ELS_REP] = "ELS rep",[FC_RCTL_ELS4_REQ] = "FC-4 ELS req",[FC_RCTL_ELS4_REP] = "FC-4 ELS rep",[FC_RCTL_BA_NOP] = "BLS NOP",[FC_RCTL_BA_ABTS] = "BLS abort",[FC_RCTL_BA_RMC] = "BLS remove connection",[FC_RCTL_BA_ACC] = "BLS accept",[FC_RCTL_BA_RJT] = "BLS reject",[FC_RCTL_BA_PRMT] = "BLS dedicated connection preempted",[FC_RCTL_ACK_1] = "LC ACK_1",[FC_RCTL_ACK_0] = "LC ACK_0",[FC_RCTL_P_RJT] = "LC port reject",[FC_RCTL_F_RJT] = "LC fabric reject",[FC_RCTL_P_BSY] = "LC port busy",[FC_RCTL_F_BSY] = "LC fabric busy to data frame",[FC_RCTL_F_BSYL] = "LC fabric busy to link control frame",[FC_RCTL_LCR] = "LC link credit reset",[FC_RCTL_END] = "LC end", \
+}
+enum fc_well_known_fid {
+  FC_FID_NONE = 0x000000,
+  FC_FID_BCAST = 0xffffff,
+  FC_FID_FLOGI = 0xfffffe,
+  FC_FID_FCTRL = 0xfffffd,
+  FC_FID_DIR_SERV = 0xfffffc,
+  FC_FID_TIME_SERV = 0xfffffb,
+  FC_FID_MGMT_SERV = 0xfffffa,
+  FC_FID_QOS = 0xfffff9,
+  FC_FID_ALIASES = 0xfffff8,
+  FC_FID_SEC_KEY = 0xfffff7,
+  FC_FID_CLOCK = 0xfffff6,
+  FC_FID_MCAST_SERV = 0xfffff5,
+};
+#define FC_FID_WELL_KNOWN_MAX 0xffffff
+#define FC_FID_WELL_KNOWN_BASE 0xfffff5
+#define FC_FID_DOM_MGR 0xfffc00
+#define FC_FID_DOMAIN 0
+#define FC_FID_PORT 1
+#define FC_FID_LINK 2
+enum fc_fh_type {
+  FC_TYPE_BLS = 0x00,
+  FC_TYPE_ELS = 0x01,
+  FC_TYPE_IP = 0x05,
+  FC_TYPE_FCP = 0x08,
+  FC_TYPE_CT = 0x20,
+  FC_TYPE_ILS = 0x22,
+  FC_TYPE_NVME = 0x28,
+};
+#define FC_TYPE_NAMES_INIT {[FC_TYPE_BLS] = "BLS",[FC_TYPE_ELS] = "ELS",[FC_TYPE_IP] = "IP",[FC_TYPE_FCP] = "FCP",[FC_TYPE_CT] = "CT",[FC_TYPE_ILS] = "ILS",[FC_TYPE_NVME] = "NVME", \
+}
+#define FC_XID_UNKNOWN 0xffff
+#define FC_XID_MIN 0x0
+#define FC_XID_MAX 0xfffe
+#define FC_FC_EX_CTX (1 << 23)
+#define FC_FC_SEQ_CTX (1 << 22)
+#define FC_FC_FIRST_SEQ (1 << 21)
+#define FC_FC_LAST_SEQ (1 << 20)
+#define FC_FC_END_SEQ (1 << 19)
+#define FC_FC_END_CONN (1 << 18)
+#define FC_FC_RES_B17 (1 << 17)
+#define FC_FC_SEQ_INIT (1 << 16)
+#define FC_FC_X_ID_REASS (1 << 15)
+#define FC_FC_X_ID_INVAL (1 << 14)
+#define FC_FC_ACK_1 (1 << 12)
+#define FC_FC_ACK_N (2 << 12)
+#define FC_FC_ACK_0 (3 << 12)
+#define FC_FC_RES_B11 (1 << 11)
+#define FC_FC_RES_B10 (1 << 10)
+#define FC_FC_RETX_SEQ (1 << 9)
+#define FC_FC_UNI_TX (1 << 8)
+#define FC_FC_CONT_SEQ(i) ((i) << 6)
+#define FC_FC_ABT_SEQ(i) ((i) << 4)
+#define FC_FC_REL_OFF (1 << 3)
+#define FC_FC_RES2 (1 << 2)
+#define FC_FC_FILL(i) ((i) & 3)
+struct fc_ba_acc {
+  __u8 ba_seq_id_val;
+#define FC_BA_SEQ_ID_VAL 0x80
+  __u8 ba_seq_id;
+  __u8 ba_resvd[2];
+  __be16 ba_ox_id;
+  __be16 ba_rx_id;
+  __be16 ba_low_seq_cnt;
+  __be16 ba_high_seq_cnt;
+};
+struct fc_ba_rjt {
+  __u8 br_resvd;
+  __u8 br_reason;
+  __u8 br_explan;
+  __u8 br_vendor;
+};
+enum fc_ba_rjt_reason {
+  FC_BA_RJT_NONE = 0,
+  FC_BA_RJT_INVL_CMD = 0x01,
+  FC_BA_RJT_LOG_ERR = 0x03,
+  FC_BA_RJT_LOG_BUSY = 0x05,
+  FC_BA_RJT_PROTO_ERR = 0x07,
+  FC_BA_RJT_UNABLE = 0x09,
+  FC_BA_RJT_VENDOR = 0xff,
+};
+enum fc_ba_rjt_explan {
+  FC_BA_RJT_EXP_NONE = 0x00,
+  FC_BA_RJT_INV_XID = 0x03,
+  FC_BA_RJT_ABT = 0x05,
+};
+struct fc_pf_rjt {
+  __u8 rj_action;
+  __u8 rj_reason;
+  __u8 rj_resvd;
+  __u8 rj_vendor;
+};
+enum fc_pf_rjt_reason {
+  FC_RJT_NONE = 0,
+  FC_RJT_INVL_DID = 0x01,
+  FC_RJT_INVL_SID = 0x02,
+  FC_RJT_P_UNAV_T = 0x03,
+  FC_RJT_P_UNAV = 0x04,
+  FC_RJT_CLS_UNSUP = 0x05,
+  FC_RJT_DEL_USAGE = 0x06,
+  FC_RJT_TYPE_UNSUP = 0x07,
+  FC_RJT_LINK_CTL = 0x08,
+  FC_RJT_R_CTL = 0x09,
+  FC_RJT_F_CTL = 0x0a,
+  FC_RJT_OX_ID = 0x0b,
+  FC_RJT_RX_ID = 0x0c,
+  FC_RJT_SEQ_ID = 0x0d,
+  FC_RJT_DF_CTL = 0x0e,
+  FC_RJT_SEQ_CNT = 0x0f,
+  FC_RJT_PARAM = 0x10,
+  FC_RJT_EXCH_ERR = 0x11,
+  FC_RJT_PROTO = 0x12,
+  FC_RJT_LEN = 0x13,
+  FC_RJT_UNEXP_ACK = 0x14,
+  FC_RJT_FAB_CLASS = 0x15,
+  FC_RJT_LOGI_REQ = 0x16,
+  FC_RJT_SEQ_XS = 0x17,
+  FC_RJT_EXCH_EST = 0x18,
+  FC_RJT_FAB_UNAV = 0x1a,
+  FC_RJT_VC_ID = 0x1b,
+  FC_RJT_CS_CTL = 0x1c,
+  FC_RJT_INSUF_RES = 0x1d,
+  FC_RJT_INVL_CLS = 0x1f,
+  FC_RJT_PREEMT_RJT = 0x20,
+  FC_RJT_PREEMT_DIS = 0x21,
+  FC_RJT_MCAST_ERR = 0x22,
+  FC_RJT_MCAST_ET = 0x23,
+  FC_RJT_PRLI_REQ = 0x24,
+  FC_RJT_INVL_ATT = 0x25,
+  FC_RJT_VENDOR = 0xff,
+};
+#define FC_DEF_E_D_TOV 2000UL
+#define FC_DEF_R_A_TOV 10000UL
+#endif
diff --git a/x86_64-linux-musl/include/scsi/fc/fc_gs.h b/x86_64-linux-musl/include/scsi/fc/fc_gs.h
new file mode 100644
index 0000000..bcbf7a3
--- /dev/null
+++ b/x86_64-linux-musl/include/scsi/fc/fc_gs.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 _FC_GS_H_
+#define _FC_GS_H_
+#include <linux/types.h>
+struct fc_ct_hdr {
+  __u8 ct_rev;
+  __u8 ct_in_id[3];
+  __u8 ct_fs_type;
+  __u8 ct_fs_subtype;
+  __u8 ct_options;
+  __u8 _ct_resvd1;
+  __be16 ct_cmd;
+  __be16 ct_mr_size;
+  __u8 _ct_resvd2;
+  __u8 ct_reason;
+  __u8 ct_explan;
+  __u8 ct_vendor;
+};
+#define FC_CT_HDR_LEN 16
+enum fc_ct_rev {
+  FC_CT_REV = 1
+};
+enum fc_ct_fs_type {
+  FC_FST_ALIAS = 0xf8,
+  FC_FST_MGMT = 0xfa,
+  FC_FST_TIME = 0xfb,
+  FC_FST_DIR = 0xfc,
+};
+enum fc_ct_cmd {
+  FC_FS_RJT = 0x8001,
+  FC_FS_ACC = 0x8002,
+};
+enum fc_ct_reason {
+  FC_FS_RJT_CMD = 0x01,
+  FC_FS_RJT_VER = 0x02,
+  FC_FS_RJT_LOG = 0x03,
+  FC_FS_RJT_IUSIZ = 0x04,
+  FC_FS_RJT_BSY = 0x05,
+  FC_FS_RJT_PROTO = 0x07,
+  FC_FS_RJT_UNABL = 0x09,
+  FC_FS_RJT_UNSUP = 0x0b,
+};
+enum fc_ct_explan {
+  FC_FS_EXP_NONE = 0x00,
+  FC_FS_EXP_PID = 0x01,
+  FC_FS_EXP_PNAM = 0x02,
+  FC_FS_EXP_NNAM = 0x03,
+  FC_FS_EXP_COS = 0x04,
+  FC_FS_EXP_FTNR = 0x07,
+};
+#endif
diff --git a/x86_64-linux-musl/include/scsi/fc/fc_ns.h b/x86_64-linux-musl/include/scsi/fc/fc_ns.h
new file mode 100644
index 0000000..58fee9a
--- /dev/null
+++ b/x86_64-linux-musl/include/scsi/fc/fc_ns.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 _FC_NS_H_
+#define _FC_NS_H_
+#include <linux/types.h>
+#define FC_NS_SUBTYPE 2
+enum fc_ns_req {
+  FC_NS_GA_NXT = 0x0100,
+  FC_NS_GI_A = 0x0101,
+  FC_NS_GPN_ID = 0x0112,
+  FC_NS_GNN_ID = 0x0113,
+  FC_NS_GSPN_ID = 0x0118,
+  FC_NS_GID_PN = 0x0121,
+  FC_NS_GID_NN = 0x0131,
+  FC_NS_GID_FT = 0x0171,
+  FC_NS_GPN_FT = 0x0172,
+  FC_NS_GID_PT = 0x01a1,
+  FC_NS_RPN_ID = 0x0212,
+  FC_NS_RNN_ID = 0x0213,
+  FC_NS_RFT_ID = 0x0217,
+  FC_NS_RSPN_ID = 0x0218,
+  FC_NS_RFF_ID = 0x021f,
+  FC_NS_RSNN_NN = 0x0239,
+};
+enum fc_ns_pt {
+  FC_NS_UNID_PORT = 0x00,
+  FC_NS_N_PORT = 0x01,
+  FC_NS_NL_PORT = 0x02,
+  FC_NS_FNL_PORT = 0x03,
+  FC_NS_NX_PORT = 0x7f,
+  FC_NS_F_PORT = 0x81,
+  FC_NS_FL_PORT = 0x82,
+  FC_NS_E_PORT = 0x84,
+  FC_NS_B_PORT = 0x85,
+};
+struct fc_ns_pt_obj {
+  __u8 pt_type;
+};
+struct fc_ns_fid {
+  __u8 fp_flags;
+  __u8 fp_fid[3];
+};
+#define FC_NS_FID_LAST 0x80
+#define FC_NS_TYPES 256
+#define FC_NS_BPW 32
+struct fc_ns_fts {
+  __be32 ff_type_map[FC_NS_TYPES / FC_NS_BPW];
+};
+struct fc_ns_ff {
+  __be32 fd_feat[FC_NS_TYPES * 4 / FC_NS_BPW];
+};
+struct fc_ns_gid_pt {
+  __u8 fn_pt_type;
+  __u8 fn_domain_id_scope;
+  __u8 fn_area_id_scope;
+  __u8 fn_resvd;
+};
+struct fc_ns_gid_ft {
+  __u8 fn_resvd;
+  __u8 fn_domain_id_scope;
+  __u8 fn_area_id_scope;
+  __u8 fn_fc4_type;
+};
+struct fc_gpn_ft_resp {
+  __u8 fp_flags;
+  __u8 fp_fid[3];
+  __be32 fp_resvd;
+  __be64 fp_wwpn;
+};
+struct fc_ns_gid_pn {
+  __be64 fn_wwpn;
+};
+struct fc_gid_pn_resp {
+  __u8 fp_resvd;
+  __u8 fp_fid[3];
+};
+struct fc_gspn_resp {
+  __u8 fp_name_len;
+  char fp_name[];
+};
+struct fc_ns_rft_id {
+  struct fc_ns_fid fr_fid;
+  struct fc_ns_fts fr_fts;
+};
+struct fc_ns_rn_id {
+  struct fc_ns_fid fr_fid;
+  __be64 fr_wwn;
+} __attribute__((__packed__));
+struct fc_ns_rsnn {
+  __be64 fr_wwn;
+  __u8 fr_name_len;
+  char fr_name[];
+} __attribute__((__packed__));
+struct fc_ns_rspn {
+  struct fc_ns_fid fr_fid;
+  __u8 fr_name_len;
+  char fr_name[];
+} __attribute__((__packed__));
+struct fc_ns_rff_id {
+  struct fc_ns_fid fr_fid;
+  __u8 fr_resvd[2];
+  __u8 fr_feat;
+  __u8 fr_type;
+} __attribute__((__packed__));
+#endif
diff --git a/x86_64-linux-musl/include/scsi/scsi.h b/x86_64-linux-musl/include/scsi/scsi.h
new file mode 100644
index 0000000..6d89fa9
--- /dev/null
+++ b/x86_64-linux-musl/include/scsi/scsi.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 _SCSI_SCSI_H
+#define _SCSI_SCSI_H
+#include <linux/types.h>
+#include <scsi/scsi_proto.h>
+#include <scsi/scsi_status.h>
+struct ccs_modesel_head {
+  __u8 _r1;
+  __u8 medium;
+  __u8 _r2;
+  __u8 block_desc_length;
+  __u8 density;
+  __u8 number_blocks_hi;
+  __u8 number_blocks_med;
+  __u8 number_blocks_lo;
+  __u8 _r3;
+  __u8 block_length_hi;
+  __u8 block_length_med;
+  __u8 block_length_lo;
+};
+#define EXTENDED_MODIFY_DATA_POINTER 0x00
+#define EXTENDED_SDTR 0x01
+#define EXTENDED_EXTENDED_IDENTIFY 0x02
+#define EXTENDED_WDTR 0x03
+#define EXTENDED_PPR 0x04
+#define EXTENDED_MODIFY_BIDI_DATA_PTR 0x05
+#define SCSI_IOCTL_GET_IDLUN 0x5382
+#define SCSI_IOCTL_PROBE_HOST 0x5385
+#define SCSI_IOCTL_GET_BUS_NUMBER 0x5386
+#define SCSI_IOCTL_GET_PCI 0x5387
+#endif
diff --git a/x86_64-linux-musl/include/scsi/scsi_bsg_fc.h b/x86_64-linux-musl/include/scsi/scsi_bsg_fc.h
new file mode 100644
index 0000000..8966f61
--- /dev/null
+++ b/x86_64-linux-musl/include/scsi/scsi_bsg_fc.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 SCSI_BSG_FC_H
+#define SCSI_BSG_FC_H
+#include <linux/types.h>
+#define FC_DEFAULT_BSG_TIMEOUT (10 * HZ)
+#define FC_BSG_CLS_MASK 0xF0000000
+#define FC_BSG_HST_MASK 0x80000000
+#define FC_BSG_RPT_MASK 0x40000000
+#define FC_BSG_HST_ADD_RPORT (FC_BSG_HST_MASK | 0x00000001)
+#define FC_BSG_HST_DEL_RPORT (FC_BSG_HST_MASK | 0x00000002)
+#define FC_BSG_HST_ELS_NOLOGIN (FC_BSG_HST_MASK | 0x00000003)
+#define FC_BSG_HST_CT (FC_BSG_HST_MASK | 0x00000004)
+#define FC_BSG_HST_VENDOR (FC_BSG_HST_MASK | 0x000000FF)
+#define FC_BSG_RPT_ELS (FC_BSG_RPT_MASK | 0x00000001)
+#define FC_BSG_RPT_CT (FC_BSG_RPT_MASK | 0x00000002)
+struct fc_bsg_host_add_rport {
+  __u8 reserved;
+  __u8 port_id[3];
+};
+struct fc_bsg_host_del_rport {
+  __u8 reserved;
+  __u8 port_id[3];
+};
+struct fc_bsg_host_els {
+  __u8 command_code;
+  __u8 port_id[3];
+};
+#define FC_CTELS_STATUS_OK 0x00000000
+#define FC_CTELS_STATUS_REJECT 0x00000001
+#define FC_CTELS_STATUS_P_RJT 0x00000002
+#define FC_CTELS_STATUS_F_RJT 0x00000003
+#define FC_CTELS_STATUS_P_BSY 0x00000004
+#define FC_CTELS_STATUS_F_BSY 0x00000006
+struct fc_bsg_ctels_reply {
+  __u32 status;
+  struct {
+    __u8 action;
+    __u8 reason_code;
+    __u8 reason_explanation;
+    __u8 vendor_unique;
+  } rjt_data;
+};
+struct fc_bsg_host_ct {
+  __u8 reserved;
+  __u8 port_id[3];
+  __u32 preamble_word0;
+  __u32 preamble_word1;
+  __u32 preamble_word2;
+};
+struct fc_bsg_host_vendor {
+  __u64 vendor_id;
+  __u32 vendor_cmd[0];
+};
+struct fc_bsg_host_vendor_reply {
+  __u32 vendor_rsp[0];
+};
+struct fc_bsg_rport_els {
+  __u8 els_code;
+};
+struct fc_bsg_rport_ct {
+  __u32 preamble_word0;
+  __u32 preamble_word1;
+  __u32 preamble_word2;
+};
+struct fc_bsg_request {
+  __u32 msgcode;
+  union {
+    struct fc_bsg_host_add_rport h_addrport;
+    struct fc_bsg_host_del_rport h_delrport;
+    struct fc_bsg_host_els h_els;
+    struct fc_bsg_host_ct h_ct;
+    struct fc_bsg_host_vendor h_vendor;
+    struct fc_bsg_rport_els r_els;
+    struct fc_bsg_rport_ct r_ct;
+  } rqst_data;
+} __attribute__((packed));
+struct fc_bsg_reply {
+  __u32 result;
+  __u32 reply_payload_rcv_len;
+  union {
+    struct fc_bsg_host_vendor_reply vendor_reply;
+    struct fc_bsg_ctels_reply ctels_reply;
+  } reply_data;
+};
+#endif
diff --git a/x86_64-linux-musl/include/scsi/scsi_bsg_ufs.h b/x86_64-linux-musl/include/scsi/scsi_bsg_ufs.h
new file mode 100644
index 0000000..ae5c757
--- /dev/null
+++ b/x86_64-linux-musl/include/scsi/scsi_bsg_ufs.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 SCSI_BSG_UFS_H
+#define SCSI_BSG_UFS_H
+#include <linux/types.h>
+#define UFS_CDB_SIZE 16
+#define UPIU_TRANSACTION_UIC_CMD 0x1F
+#define UIC_CMD_SIZE (sizeof(__u32) * 4)
+struct utp_upiu_header {
+  __be32 dword_0;
+  __be32 dword_1;
+  __be32 dword_2;
+};
+struct utp_upiu_query {
+  __u8 opcode;
+  __u8 idn;
+  __u8 index;
+  __u8 selector;
+  __be16 reserved_osf;
+  __be16 length;
+  __be32 value;
+  __be32 reserved[2];
+};
+struct utp_upiu_cmd {
+  __be32 exp_data_transfer_len;
+  __u8 cdb[UFS_CDB_SIZE];
+};
+struct utp_upiu_req {
+  struct utp_upiu_header header;
+  union {
+    struct utp_upiu_cmd sc;
+    struct utp_upiu_query qr;
+    struct utp_upiu_query uc;
+  };
+};
+struct ufs_bsg_request {
+  __u32 msgcode;
+  struct utp_upiu_req upiu_req;
+};
+struct ufs_bsg_reply {
+  __u32 result;
+  __u32 reply_payload_rcv_len;
+  struct utp_upiu_req upiu_rsp;
+};
+#endif
diff --git a/x86_64-linux-musl/include/scsi/scsi_ioctl.h b/x86_64-linux-musl/include/scsi/scsi_ioctl.h
new file mode 100644
index 0000000..c871362
--- /dev/null
+++ b/x86_64-linux-musl/include/scsi/scsi_ioctl.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 _SCSI_IOCTL_H
+#define _SCSI_IOCTL_H
+#define SCSI_IOCTL_SEND_COMMAND 1
+#define SCSI_IOCTL_TEST_UNIT_READY 2
+#define SCSI_IOCTL_BENCHMARK_COMMAND 3
+#define SCSI_IOCTL_SYNC 4
+#define SCSI_IOCTL_START_UNIT 5
+#define SCSI_IOCTL_STOP_UNIT 6
+#define SCSI_IOCTL_DOORLOCK 0x5380
+#define SCSI_IOCTL_DOORUNLOCK 0x5381
+#define SCSI_REMOVAL_PREVENT 1
+#define SCSI_REMOVAL_ALLOW 0
+#endif
diff --git a/x86_64-linux-musl/include/scsi/scsi_netlink.h b/x86_64-linux-musl/include/scsi/scsi_netlink.h
new file mode 100644
index 0000000..2e1b6cf
--- /dev/null
+++ b/x86_64-linux-musl/include/scsi/scsi_netlink.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 SCSI_NETLINK_H
+#define SCSI_NETLINK_H
+#include <linux/netlink.h>
+#include <linux/types.h>
+#define SCSI_TRANSPORT_MSG NLMSG_MIN_TYPE + 1
+#define SCSI_NL_GRP_FC_EVENTS (1 << 2)
+#define SCSI_NL_GRP_CNT 3
+struct scsi_nl_hdr {
+  __u8 version;
+  __u8 transport;
+  __u16 magic;
+  __u16 msgtype;
+  __u16 msglen;
+} __attribute__((aligned(sizeof(__u64))));
+#define SCSI_NL_VERSION 1
+#define SCSI_NL_MAGIC 0xA1B2
+#define SCSI_NL_TRANSPORT 0
+#define SCSI_NL_TRANSPORT_FC 1
+#define SCSI_NL_MAX_TRANSPORTS 2
+#define SCSI_NL_SHOST_VENDOR 0x0001
+#define SCSI_NL_MSGALIGN(len) (((len) + 7) & ~7)
+struct scsi_nl_host_vendor_msg {
+  struct scsi_nl_hdr snlh;
+  __u64 vendor_id;
+  __u16 host_no;
+  __u16 vmsg_datalen;
+} __attribute__((aligned(sizeof(__u64))));
+#define SCSI_NL_VID_TYPE_SHIFT 56
+#define SCSI_NL_VID_TYPE_MASK ((__u64) 0xFF << SCSI_NL_VID_TYPE_SHIFT)
+#define SCSI_NL_VID_TYPE_PCI ((__u64) 0x01 << SCSI_NL_VID_TYPE_SHIFT)
+#define SCSI_NL_VID_ID_MASK (~SCSI_NL_VID_TYPE_MASK)
+#define INIT_SCSI_NL_HDR(hdr,t,mtype,mlen) { (hdr)->version = SCSI_NL_VERSION; (hdr)->transport = t; (hdr)->magic = SCSI_NL_MAGIC; (hdr)->msgtype = mtype; (hdr)->msglen = mlen; }
+#endif
diff --git a/x86_64-linux-musl/include/scsi/scsi_netlink_fc.h b/x86_64-linux-musl/include/scsi/scsi_netlink_fc.h
new file mode 100644
index 0000000..ff92877
--- /dev/null
+++ b/x86_64-linux-musl/include/scsi/scsi_netlink_fc.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 SCSI_NETLINK_FC_H
+#define SCSI_NETLINK_FC_H
+#include <linux/types.h>
+#include <scsi/scsi_netlink.h>
+#define FC_NL_ASYNC_EVENT 0x0100
+#define FC_NL_MSGALIGN(len) (((len) + 7) & ~7)
+struct fc_nl_event {
+  struct scsi_nl_hdr snlh;
+  __u64 seconds;
+  __u64 vendor_id;
+  __u16 host_no;
+  __u16 event_datalen;
+  __u32 event_num;
+  __u32 event_code;
+  __u32 event_data;
+} __attribute__((aligned(sizeof(__u64))));
+#endif
diff --git a/x86_64-linux-musl/include/scsi/scsi_proto.h b/x86_64-linux-musl/include/scsi/scsi_proto.h
new file mode 100644
index 0000000..eea87a0
--- /dev/null
+++ b/x86_64-linux-musl/include/scsi/scsi_proto.h
@@ -0,0 +1,207 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _SCSI_PROTO_H_
+#define _SCSI_PROTO_H_
+#include <linux/types.h>
+#define TEST_UNIT_READY 0x00
+#define REZERO_UNIT 0x01
+#define REQUEST_SENSE 0x03
+#define FORMAT_UNIT 0x04
+#define READ_BLOCK_LIMITS 0x05
+#define REASSIGN_BLOCKS 0x07
+#define INITIALIZE_ELEMENT_STATUS 0x07
+#define READ_6 0x08
+#define WRITE_6 0x0a
+#define SEEK_6 0x0b
+#define READ_REVERSE 0x0f
+#define WRITE_FILEMARKS 0x10
+#define SPACE 0x11
+#define INQUIRY 0x12
+#define RECOVER_BUFFERED_DATA 0x14
+#define MODE_SELECT 0x15
+#define RESERVE 0x16
+#define RELEASE 0x17
+#define COPY 0x18
+#define ERASE 0x19
+#define MODE_SENSE 0x1a
+#define START_STOP 0x1b
+#define RECEIVE_DIAGNOSTIC 0x1c
+#define SEND_DIAGNOSTIC 0x1d
+#define ALLOW_MEDIUM_REMOVAL 0x1e
+#define READ_FORMAT_CAPACITIES 0x23
+#define SET_WINDOW 0x24
+#define READ_CAPACITY 0x25
+#define READ_10 0x28
+#define WRITE_10 0x2a
+#define SEEK_10 0x2b
+#define POSITION_TO_ELEMENT 0x2b
+#define WRITE_VERIFY 0x2e
+#define VERIFY 0x2f
+#define SEARCH_HIGH 0x30
+#define SEARCH_EQUAL 0x31
+#define SEARCH_LOW 0x32
+#define SET_LIMITS 0x33
+#define PRE_FETCH 0x34
+#define READ_POSITION 0x34
+#define SYNCHRONIZE_CACHE 0x35
+#define LOCK_UNLOCK_CACHE 0x36
+#define READ_DEFECT_DATA 0x37
+#define MEDIUM_SCAN 0x38
+#define COMPARE 0x39
+#define COPY_VERIFY 0x3a
+#define WRITE_BUFFER 0x3b
+#define READ_BUFFER 0x3c
+#define UPDATE_BLOCK 0x3d
+#define READ_LONG 0x3e
+#define WRITE_LONG 0x3f
+#define CHANGE_DEFINITION 0x40
+#define WRITE_SAME 0x41
+#define UNMAP 0x42
+#define READ_TOC 0x43
+#define READ_HEADER 0x44
+#define GET_EVENT_STATUS_NOTIFICATION 0x4a
+#define LOG_SELECT 0x4c
+#define LOG_SENSE 0x4d
+#define XDWRITEREAD_10 0x53
+#define MODE_SELECT_10 0x55
+#define RESERVE_10 0x56
+#define RELEASE_10 0x57
+#define MODE_SENSE_10 0x5a
+#define PERSISTENT_RESERVE_IN 0x5e
+#define PERSISTENT_RESERVE_OUT 0x5f
+#define VARIABLE_LENGTH_CMD 0x7f
+#define REPORT_LUNS 0xa0
+#define SECURITY_PROTOCOL_IN 0xa2
+#define MAINTENANCE_IN 0xa3
+#define MAINTENANCE_OUT 0xa4
+#define MOVE_MEDIUM 0xa5
+#define EXCHANGE_MEDIUM 0xa6
+#define READ_12 0xa8
+#define SERVICE_ACTION_OUT_12 0xa9
+#define WRITE_12 0xaa
+#define READ_MEDIA_SERIAL_NUMBER 0xab
+#define SERVICE_ACTION_IN_12 0xab
+#define WRITE_VERIFY_12 0xae
+#define VERIFY_12 0xaf
+#define SEARCH_HIGH_12 0xb0
+#define SEARCH_EQUAL_12 0xb1
+#define SEARCH_LOW_12 0xb2
+#define SECURITY_PROTOCOL_OUT 0xb5
+#define READ_ELEMENT_STATUS 0xb8
+#define SEND_VOLUME_TAG 0xb6
+#define WRITE_LONG_2 0xea
+#define EXTENDED_COPY 0x83
+#define RECEIVE_COPY_RESULTS 0x84
+#define ACCESS_CONTROL_IN 0x86
+#define ACCESS_CONTROL_OUT 0x87
+#define READ_16 0x88
+#define COMPARE_AND_WRITE 0x89
+#define WRITE_16 0x8a
+#define READ_ATTRIBUTE 0x8c
+#define WRITE_ATTRIBUTE 0x8d
+#define WRITE_VERIFY_16 0x8e
+#define VERIFY_16 0x8f
+#define SYNCHRONIZE_CACHE_16 0x91
+#define WRITE_SAME_16 0x93
+#define ZBC_OUT 0x94
+#define ZBC_IN 0x95
+#define SERVICE_ACTION_BIDIRECTIONAL 0x9d
+#define SERVICE_ACTION_IN_16 0x9e
+#define SERVICE_ACTION_OUT_16 0x9f
+#define STATUS_MASK 0xfe
+#define NO_SENSE 0x00
+#define RECOVERED_ERROR 0x01
+#define NOT_READY 0x02
+#define MEDIUM_ERROR 0x03
+#define HARDWARE_ERROR 0x04
+#define ILLEGAL_REQUEST 0x05
+#define UNIT_ATTENTION 0x06
+#define DATA_PROTECT 0x07
+#define BLANK_CHECK 0x08
+#define VENDOR_SPECIFIC 0x09
+#define COPY_ABORTED 0x0a
+#define ABORTED_COMMAND 0x0b
+#define VOLUME_OVERFLOW 0x0d
+#define MISCOMPARE 0x0e
+#define TYPE_DISK 0x00
+#define TYPE_TAPE 0x01
+#define TYPE_PRINTER 0x02
+#define TYPE_PROCESSOR 0x03
+#define TYPE_WORM 0x04
+#define TYPE_ROM 0x05
+#define TYPE_SCANNER 0x06
+#define TYPE_MOD 0x07
+#define TYPE_MEDIUM_CHANGER 0x08
+#define TYPE_COMM 0x09
+#define TYPE_RAID 0x0c
+#define TYPE_ENCLOSURE 0x0d
+#define TYPE_RBC 0x0e
+#define TYPE_OSD 0x11
+#define TYPE_ZBC 0x14
+#define TYPE_WLUN 0x1e
+#define TYPE_NO_LUN 0x7f
+#define SCSI_ACCESS_STATE_OPTIMAL 0x00
+#define SCSI_ACCESS_STATE_ACTIVE 0x01
+#define SCSI_ACCESS_STATE_STANDBY 0x02
+#define SCSI_ACCESS_STATE_UNAVAILABLE 0x03
+#define SCSI_ACCESS_STATE_LBA 0x04
+#define SCSI_ACCESS_STATE_OFFLINE 0x0e
+#define SCSI_ACCESS_STATE_TRANSITIONING 0x0f
+#define SCSI_ACCESS_STATE_MASK 0x0f
+#define SCSI_ACCESS_STATE_PREFERRED 0x80
+enum zbc_zone_reporting_options {
+  ZBC_ZONE_REPORTING_OPTION_ALL = 0x00,
+  ZBC_ZONE_REPORTING_OPTION_EMPTY = 0x01,
+  ZBC_ZONE_REPORTING_OPTION_IMPLICIT_OPEN = 0x02,
+  ZBC_ZONE_REPORTING_OPTION_EXPLICIT_OPEN = 0x03,
+  ZBC_ZONE_REPORTING_OPTION_CLOSED = 0x04,
+  ZBC_ZONE_REPORTING_OPTION_FULL = 0x05,
+  ZBC_ZONE_REPORTING_OPTION_READONLY = 0x06,
+  ZBC_ZONE_REPORTING_OPTION_OFFLINE = 0x07,
+  ZBC_ZONE_REPORTING_OPTION_NEED_RESET_WP = 0x10,
+  ZBC_ZONE_REPORTING_OPTION_NON_SEQWRITE = 0x11,
+  ZBC_ZONE_REPORTING_OPTION_NON_WP = 0x3f,
+};
+#define ZBC_REPORT_ZONE_PARTIAL 0x80
+enum zbc_zone_type {
+  ZBC_ZONE_TYPE_CONV = 0x1,
+  ZBC_ZONE_TYPE_SEQWRITE_REQ = 0x2,
+  ZBC_ZONE_TYPE_SEQWRITE_PREF = 0x3,
+};
+enum zbc_zone_cond {
+  ZBC_ZONE_COND_NO_WP = 0x0,
+  ZBC_ZONE_COND_EMPTY = 0x1,
+  ZBC_ZONE_COND_IMP_OPEN = 0x2,
+  ZBC_ZONE_COND_EXP_OPEN = 0x3,
+  ZBC_ZONE_COND_CLOSED = 0x4,
+  ZBC_ZONE_COND_READONLY = 0xd,
+  ZBC_ZONE_COND_FULL = 0xe,
+  ZBC_ZONE_COND_OFFLINE = 0xf,
+};
+enum scsi_version_descriptor {
+  SCSI_VERSION_DESCRIPTOR_FCP4 = 0x0a40,
+  SCSI_VERSION_DESCRIPTOR_ISCSI = 0x0960,
+  SCSI_VERSION_DESCRIPTOR_SAM5 = 0x00a0,
+  SCSI_VERSION_DESCRIPTOR_SAS3 = 0x0c60,
+  SCSI_VERSION_DESCRIPTOR_SBC3 = 0x04c0,
+  SCSI_VERSION_DESCRIPTOR_SBP3 = 0x0980,
+  SCSI_VERSION_DESCRIPTOR_SPC4 = 0x0460,
+  SCSI_VERSION_DESCRIPTOR_SRP = 0x0940
+};
+#endif
diff --git a/x86_64-linux-musl/include/scsi/scsi_status.h b/x86_64-linux-musl/include/scsi/scsi_status.h
new file mode 100644
index 0000000..6a7fc10
--- /dev/null
+++ b/x86_64-linux-musl/include/scsi/scsi_status.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 _SCSI_SCSI_STATUS_H
+#define _SCSI_SCSI_STATUS_H
+#include <linux/types.h>
+#include <scsi/scsi_proto.h>
+#endif
diff --git a/x86_64-linux-musl/include/scsi/sg.h b/x86_64-linux-musl/include/scsi/sg.h
new file mode 100644
index 0000000..a7a1944
--- /dev/null
+++ b/x86_64-linux-musl/include/scsi/sg.h
@@ -0,0 +1,161 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _SCSI_GENERIC_H
+#define _SCSI_GENERIC_H
+#include <linux/compiler.h>
+typedef struct sg_iovec {
+  void __user * iov_base;
+  size_t iov_len;
+} sg_iovec_t;
+typedef struct sg_io_hdr {
+  int interface_id;
+  int dxfer_direction;
+  unsigned char cmd_len;
+  unsigned char mx_sb_len;
+  unsigned short iovec_count;
+  unsigned int dxfer_len;
+  void __user * dxferp;
+  unsigned char __user * cmdp;
+  void __user * sbp;
+  unsigned int timeout;
+  unsigned int flags;
+  int pack_id;
+  void __user * usr_ptr;
+  unsigned char status;
+  unsigned char masked_status;
+  unsigned char msg_status;
+  unsigned char sb_len_wr;
+  unsigned short host_status;
+  unsigned short driver_status;
+  int resid;
+  unsigned int duration;
+  unsigned int info;
+} sg_io_hdr_t;
+#define SG_INTERFACE_ID_ORIG 'S'
+#define SG_DXFER_NONE (- 1)
+#define SG_DXFER_TO_DEV (- 2)
+#define SG_DXFER_FROM_DEV (- 3)
+#define SG_DXFER_TO_FROM_DEV (- 4)
+#define SG_DXFER_UNKNOWN (- 5)
+#define SG_FLAG_DIRECT_IO 1
+#define SG_FLAG_UNUSED_LUN_INHIBIT 2
+#define SG_FLAG_MMAP_IO 4
+#define SG_FLAG_NO_DXFER 0x10000
+#define SG_FLAG_Q_AT_TAIL 0x10
+#define SG_FLAG_Q_AT_HEAD 0x20
+#define SG_INFO_OK_MASK 0x1
+#define SG_INFO_OK 0x0
+#define SG_INFO_CHECK 0x1
+#define SG_INFO_DIRECT_IO_MASK 0x6
+#define SG_INFO_INDIRECT_IO 0x0
+#define SG_INFO_DIRECT_IO 0x2
+#define SG_INFO_MIXED_IO 0x4
+#define DRIVER_SENSE 0x08
+#define driver_byte(result) (((result) >> 24) & 0xff)
+#define GOOD 0x00
+#define CHECK_CONDITION 0x01
+#define CONDITION_GOOD 0x02
+#define BUSY 0x04
+#define INTERMEDIATE_GOOD 0x08
+#define INTERMEDIATE_C_GOOD 0x0a
+#define RESERVATION_CONFLICT 0x0c
+#define COMMAND_TERMINATED 0x11
+#define QUEUE_FULL 0x14
+#define ACA_ACTIVE 0x18
+#define TASK_ABORTED 0x20
+#define status_byte(result) (((result) >> 1) & 0x7f)
+typedef struct sg_scsi_id {
+  int host_no;
+  int channel;
+  int scsi_id;
+  int lun;
+  int scsi_type;
+  short h_cmd_per_lun;
+  short d_queue_depth;
+  int unused[2];
+} sg_scsi_id_t;
+typedef struct sg_req_info {
+  char req_state;
+  char orphan;
+  char sg_io_owned;
+  char problem;
+  int pack_id;
+  void __user * usr_ptr;
+  unsigned int duration;
+  int unused;
+} sg_req_info_t;
+#define SG_EMULATED_HOST 0x2203
+#define SG_SET_TRANSFORM 0x2204
+#define SG_GET_TRANSFORM 0x2205
+#define SG_SET_RESERVED_SIZE 0x2275
+#define SG_GET_RESERVED_SIZE 0x2272
+#define SG_GET_SCSI_ID 0x2276
+#define SG_SET_FORCE_LOW_DMA 0x2279
+#define SG_GET_LOW_DMA 0x227a
+#define SG_SET_FORCE_PACK_ID 0x227b
+#define SG_GET_PACK_ID 0x227c
+#define SG_GET_NUM_WAITING 0x227d
+#define SG_GET_SG_TABLESIZE 0x227F
+#define SG_GET_VERSION_NUM 0x2282
+#define SG_SCSI_RESET 0x2284
+#define SG_SCSI_RESET_NOTHING 0
+#define SG_SCSI_RESET_DEVICE 1
+#define SG_SCSI_RESET_BUS 2
+#define SG_SCSI_RESET_HOST 3
+#define SG_SCSI_RESET_TARGET 4
+#define SG_SCSI_RESET_NO_ESCALATE 0x100
+#define SG_IO 0x2285
+#define SG_GET_REQUEST_TABLE 0x2286
+#define SG_SET_KEEP_ORPHAN 0x2287
+#define SG_GET_KEEP_ORPHAN 0x2288
+#define SG_GET_ACCESS_COUNT 0x2289
+#define SG_SCATTER_SZ (8 * 4096)
+#define SG_DEFAULT_RETRIES 0
+#define SG_DEF_FORCE_PACK_ID 0
+#define SG_DEF_KEEP_ORPHAN 0
+#define SG_DEF_RESERVED_SIZE SG_SCATTER_SZ
+#define SG_MAX_QUEUE 16
+#define SG_BIG_BUFF SG_DEF_RESERVED_SIZE
+typedef struct sg_io_hdr Sg_io_hdr;
+typedef struct sg_io_vec Sg_io_vec;
+typedef struct sg_scsi_id Sg_scsi_id;
+typedef struct sg_req_info Sg_req_info;
+#define SG_MAX_SENSE 16
+struct sg_header {
+  int pack_len;
+  int reply_len;
+  int pack_id;
+  int result;
+  unsigned int twelve_byte : 1;
+  unsigned int target_status : 5;
+  unsigned int host_status : 8;
+  unsigned int driver_status : 8;
+  unsigned int other_flags : 10;
+  unsigned char sense_buffer[SG_MAX_SENSE];
+};
+#define SG_SET_TIMEOUT 0x2201
+#define SG_GET_TIMEOUT 0x2202
+#define SG_GET_COMMAND_Q 0x2270
+#define SG_SET_COMMAND_Q 0x2271
+#define SG_SET_DEBUG 0x227e
+#define SG_NEXT_CMD_LEN 0x2283
+#define SG_DEFAULT_TIMEOUT (60 * HZ)
+#define SG_DEF_COMMAND_Q 0
+#define SG_DEF_UNDERRUN_FLAG 0
+#endif
diff --git a/x86_64-linux-musl/include/search.h b/x86_64-linux-musl/include/search.h
new file mode 100644
index 0000000..02e407e
--- /dev/null
+++ b/x86_64-linux-musl/include/search.h
@@ -0,0 +1,63 @@
+#ifndef _SEARCH_H
+#define _SEARCH_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_size_t
+#include <bits/alltypes.h>
+
+typedef enum { FIND, ENTER } ACTION;
+typedef enum { preorder, postorder, endorder, leaf } VISIT;
+
+typedef struct entry {
+	char *key;
+	void *data;
+} ENTRY;
+
+int hcreate(size_t);
+void hdestroy(void);
+ENTRY *hsearch(ENTRY, ACTION);
+
+#ifdef _GNU_SOURCE
+struct hsearch_data {
+	struct __tab *__tab;
+	unsigned int __unused1;
+	unsigned int __unused2;
+};
+
+int hcreate_r(size_t, struct hsearch_data *);
+void hdestroy_r(struct hsearch_data *);
+int hsearch_r(ENTRY, ACTION, ENTRY **, struct hsearch_data *);
+#endif
+
+void insque(void *, void *);
+void remque(void *);
+
+void *lsearch(const void *, void *, size_t *, size_t,
+	int (*)(const void *, const void *));
+void *lfind(const void *, const void *, size_t *, size_t,
+	int (*)(const void *, const void *));
+
+void *tdelete(const void *__restrict, void **__restrict, int(*)(const void *, const void *));
+void *tfind(const void *, void *const *, int(*)(const void *, const void *));
+void *tsearch(const void *, void **, int (*)(const void *, const void *));
+void twalk(const void *, void (*)(const void *, VISIT, int));
+
+#ifdef _GNU_SOURCE
+struct qelem {
+	struct qelem *q_forw, *q_back;
+	char q_data[1];
+};
+
+void tdestroy(void *, void (*)(void *));
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/semaphore.h b/x86_64-linux-musl/include/semaphore.h
new file mode 100644
index 0000000..3690f49
--- /dev/null
+++ b/x86_64-linux-musl/include/semaphore.h
@@ -0,0 +1,39 @@
+#ifndef _SEMAPHORE_H
+#define _SEMAPHORE_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_time_t
+#define __NEED_struct_timespec
+#include <bits/alltypes.h>
+
+#include <fcntl.h>
+
+#define SEM_FAILED ((sem_t *)0)
+
+typedef struct {
+	volatile int __val[4*sizeof(long)/sizeof(int)];
+} sem_t;
+
+int    sem_close(sem_t *);
+int    sem_destroy(sem_t *);
+int    sem_getvalue(sem_t *__restrict, int *__restrict);
+int    sem_init(sem_t *, int, unsigned);
+sem_t *sem_open(const char *, int, ...);
+int    sem_post(sem_t *);
+int    sem_timedwait(sem_t *__restrict, const struct timespec *__restrict);
+int    sem_trywait(sem_t *);
+int    sem_unlink(const char *);
+int    sem_wait(sem_t *);
+
+#if _REDIR_TIME64
+__REDIR(sem_timedwait, __sem_timedwait_time64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/setjmp.h b/x86_64-linux-musl/include/setjmp.h
new file mode 100644
index 0000000..1976af2
--- /dev/null
+++ b/x86_64-linux-musl/include/setjmp.h
@@ -0,0 +1,49 @@
+#ifndef	_SETJMP_H
+#define	_SETJMP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#include <bits/setjmp.h>
+
+typedef struct __jmp_buf_tag {
+	__jmp_buf __jb;
+	unsigned long __fl;
+	unsigned long __ss[128/sizeof(long)];
+} jmp_buf[1];
+
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)
+#define __setjmp_attr __attribute__((__returns_twice__))
+#else
+#define __setjmp_attr
+#endif
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+typedef jmp_buf sigjmp_buf;
+int sigsetjmp (sigjmp_buf, int) __setjmp_attr;
+_Noreturn void siglongjmp (sigjmp_buf, int);
+#endif
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+int _setjmp (jmp_buf) __setjmp_attr;
+_Noreturn void _longjmp (jmp_buf, int);
+#endif
+
+int setjmp (jmp_buf) __setjmp_attr;
+_Noreturn void longjmp (jmp_buf, int);
+
+#define setjmp setjmp
+
+#undef __setjmp_attr
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/shadow.h b/x86_64-linux-musl/include/shadow.h
new file mode 100644
index 0000000..2b1be41
--- /dev/null
+++ b/x86_64-linux-musl/include/shadow.h
@@ -0,0 +1,44 @@
+#ifndef _SHADOW_H
+#define _SHADOW_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define	__NEED_FILE
+#define __NEED_size_t
+
+#include <bits/alltypes.h>
+
+#define	SHADOW "/etc/shadow"
+
+struct spwd {
+	char *sp_namp;
+	char *sp_pwdp;
+	long sp_lstchg;
+	long sp_min;
+	long sp_max;
+	long sp_warn;
+	long sp_inact;
+	long sp_expire;
+	unsigned long sp_flag;
+};
+
+void setspent(void);
+void endspent(void);
+struct spwd *getspent(void);
+struct spwd *fgetspent(FILE *);
+struct spwd *sgetspent(const char *);
+int putspent(const struct spwd *, FILE *);
+
+struct spwd *getspnam(const char *);
+int getspnam_r(const char *, struct spwd *, char *, size_t, struct spwd **);
+
+int lckpwdf(void);
+int ulckpwdf(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/signal.h b/x86_64-linux-musl/include/signal.h
new file mode 100644
index 0000000..3ad38c8
--- /dev/null
+++ b/x86_64-linux-musl/include/signal.h
@@ -0,0 +1,299 @@
+#ifndef _SIGNAL_H
+#define _SIGNAL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+
+#ifdef _GNU_SOURCE
+#define __ucontext ucontext
+#endif
+
+#define __NEED_size_t
+#define __NEED_pid_t
+#define __NEED_uid_t
+#define __NEED_struct_timespec
+#define __NEED_pthread_t
+#define __NEED_pthread_attr_t
+#define __NEED_time_t
+#define __NEED_clock_t
+#define __NEED_sigset_t
+
+#include <bits/alltypes.h>
+
+#define SIG_BLOCK     0
+#define SIG_UNBLOCK   1
+#define SIG_SETMASK   2
+
+#define SI_ASYNCNL (-60)
+#define SI_TKILL (-6)
+#define SI_SIGIO (-5)
+#define SI_ASYNCIO (-4)
+#define SI_MESGQ (-3)
+#define SI_TIMER (-2)
+#define SI_QUEUE (-1)
+#define SI_USER 0
+#define SI_KERNEL 128
+
+typedef struct sigaltstack stack_t;
+
+#endif
+
+#include <bits/signal.h>
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+
+#define SIG_HOLD ((void (*)(int)) 2)
+
+#define FPE_INTDIV 1
+#define FPE_INTOVF 2
+#define FPE_FLTDIV 3
+#define FPE_FLTOVF 4
+#define FPE_FLTUND 5
+#define FPE_FLTRES 6
+#define FPE_FLTINV 7
+#define FPE_FLTSUB 8
+
+#define ILL_ILLOPC 1
+#define ILL_ILLOPN 2
+#define ILL_ILLADR 3
+#define ILL_ILLTRP 4
+#define ILL_PRVOPC 5
+#define ILL_PRVREG 6
+#define ILL_COPROC 7
+#define ILL_BADSTK 8
+
+#define SEGV_MAPERR 1
+#define SEGV_ACCERR 2
+#define SEGV_BNDERR 3
+#define SEGV_PKUERR 4
+#define SEGV_MTEAERR 8
+#define SEGV_MTESERR 9
+
+#define BUS_ADRALN 1
+#define BUS_ADRERR 2
+#define BUS_OBJERR 3
+#define BUS_MCEERR_AR 4
+#define BUS_MCEERR_AO 5
+
+#define CLD_EXITED 1
+#define CLD_KILLED 2
+#define CLD_DUMPED 3
+#define CLD_TRAPPED 4
+#define CLD_STOPPED 5
+#define CLD_CONTINUED 6
+
+union sigval {
+	int sival_int;
+	void *sival_ptr;
+};
+
+typedef struct {
+#ifdef __SI_SWAP_ERRNO_CODE
+	int si_signo, si_code, si_errno;
+#else
+	int si_signo, si_errno, si_code;
+#endif
+	union {
+		char __pad[128 - 2*sizeof(int) - sizeof(long)];
+		struct {
+			union {
+				struct {
+					pid_t si_pid;
+					uid_t si_uid;
+				} __piduid;
+				struct {
+					int si_timerid;
+					int si_overrun;
+				} __timer;
+			} __first;
+			union {
+				union sigval si_value;
+				struct {
+					int si_status;
+					clock_t si_utime, si_stime;
+				} __sigchld;
+			} __second;
+		} __si_common;
+		struct {
+			void *si_addr;
+			short si_addr_lsb;
+			union {
+				struct {
+					void *si_lower;
+					void *si_upper;
+				} __addr_bnd;
+				unsigned si_pkey;
+			} __first;
+		} __sigfault;
+		struct {
+			long si_band;
+			int si_fd;
+		} __sigpoll;
+		struct {
+			void *si_call_addr;
+			int si_syscall;
+			unsigned si_arch;
+		} __sigsys;
+	} __si_fields;
+} siginfo_t;
+#define si_pid     __si_fields.__si_common.__first.__piduid.si_pid
+#define si_uid     __si_fields.__si_common.__first.__piduid.si_uid
+#define si_status  __si_fields.__si_common.__second.__sigchld.si_status
+#define si_utime   __si_fields.__si_common.__second.__sigchld.si_utime
+#define si_stime   __si_fields.__si_common.__second.__sigchld.si_stime
+#define si_value   __si_fields.__si_common.__second.si_value
+#define si_addr    __si_fields.__sigfault.si_addr
+#define si_addr_lsb __si_fields.__sigfault.si_addr_lsb
+#define si_lower   __si_fields.__sigfault.__first.__addr_bnd.si_lower
+#define si_upper   __si_fields.__sigfault.__first.__addr_bnd.si_upper
+#define si_pkey    __si_fields.__sigfault.__first.si_pkey
+#define si_band    __si_fields.__sigpoll.si_band
+#define si_fd      __si_fields.__sigpoll.si_fd
+#define si_timerid __si_fields.__si_common.__first.__timer.si_timerid
+#define si_overrun __si_fields.__si_common.__first.__timer.si_overrun
+#define si_ptr     si_value.sival_ptr
+#define si_int     si_value.sival_int
+#define si_call_addr __si_fields.__sigsys.si_call_addr
+#define si_syscall __si_fields.__sigsys.si_syscall
+#define si_arch    __si_fields.__sigsys.si_arch
+
+struct sigaction {
+	union {
+		void (*sa_handler)(int);
+		void (*sa_sigaction)(int, siginfo_t *, void *);
+	} __sa_handler;
+	sigset_t sa_mask;
+	int sa_flags;
+	void (*sa_restorer)(void);
+};
+#define sa_handler   __sa_handler.sa_handler
+#define sa_sigaction __sa_handler.sa_sigaction
+
+struct sigevent {
+	union sigval sigev_value;
+	int sigev_signo;
+	int sigev_notify;
+	union {
+		char __pad[64 - 2*sizeof(int) - sizeof(union sigval)];
+		pid_t sigev_notify_thread_id;
+		struct {
+			void (*sigev_notify_function)(union sigval);
+			pthread_attr_t *sigev_notify_attributes;
+		} __sev_thread;
+	} __sev_fields;
+};
+
+#define sigev_notify_thread_id __sev_fields.sigev_notify_thread_id
+#define sigev_notify_function __sev_fields.__sev_thread.sigev_notify_function
+#define sigev_notify_attributes __sev_fields.__sev_thread.sigev_notify_attributes
+
+#define SIGEV_SIGNAL 0
+#define SIGEV_NONE 1
+#define SIGEV_THREAD 2
+#define SIGEV_THREAD_ID 4
+
+int __libc_current_sigrtmin(void);
+int __libc_current_sigrtmax(void);
+
+#define SIGRTMIN  (__libc_current_sigrtmin())
+#define SIGRTMAX  (__libc_current_sigrtmax())
+
+int kill(pid_t, int);
+
+int sigemptyset(sigset_t *);
+int sigfillset(sigset_t *);
+int sigaddset(sigset_t *, int);
+int sigdelset(sigset_t *, int);
+int sigismember(const sigset_t *, int);
+
+int sigprocmask(int, const sigset_t *__restrict, sigset_t *__restrict);
+int sigsuspend(const sigset_t *);
+int sigaction(int, const struct sigaction *__restrict, struct sigaction *__restrict);
+int sigpending(sigset_t *);
+int sigwait(const sigset_t *__restrict, int *__restrict);
+int sigwaitinfo(const sigset_t *__restrict, siginfo_t *__restrict);
+int sigtimedwait(const sigset_t *__restrict, siginfo_t *__restrict, const struct timespec *__restrict);
+int sigqueue(pid_t, int, union sigval);
+
+int pthread_sigmask(int, const sigset_t *__restrict, sigset_t *__restrict);
+int pthread_kill(pthread_t, int);
+int pthread_sigqueue(pthread_t, int, union sigval);
+
+void psiginfo(const siginfo_t *, const char *);
+void psignal(int, const char *);
+
+#endif
+
+#if defined(_XOPEN_SOURCE) || defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
+int killpg(pid_t, int);
+int sigaltstack(const stack_t *__restrict, stack_t *__restrict);
+int sighold(int);
+int sigignore(int);
+int siginterrupt(int, int);
+int sigpause(int);
+int sigrelse(int);
+void (*sigset(int, void (*)(int)))(int);
+#define TRAP_BRKPT 1
+#define TRAP_TRACE 2
+#define TRAP_BRANCH 3
+#define TRAP_HWBKPT 4
+#define TRAP_UNK 5
+#define POLL_IN 1
+#define POLL_OUT 2
+#define POLL_MSG 3
+#define POLL_ERR 4
+#define POLL_PRI 5
+#define POLL_HUP 6
+#define SS_ONSTACK    1
+#define SS_DISABLE    2
+#define SS_AUTODISARM (1U << 31)
+#define SS_FLAG_BITS SS_AUTODISARM
+#endif
+
+#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
+#define NSIG _NSIG
+typedef void (*sig_t)(int);
+#endif
+
+#ifdef _GNU_SOURCE
+typedef void (*sighandler_t)(int);
+void (*bsd_signal(int, void (*)(int)))(int);
+int sigisemptyset(const sigset_t *);
+int sigorset (sigset_t *, const sigset_t *, const sigset_t *);
+int sigandset(sigset_t *, const sigset_t *, const sigset_t *);
+
+#define SA_NOMASK SA_NODEFER
+#define SA_ONESHOT SA_RESETHAND
+#endif
+
+#define SIG_ERR  ((void (*)(int))-1)
+#define SIG_DFL  ((void (*)(int)) 0)
+#define SIG_IGN  ((void (*)(int)) 1)
+
+typedef int sig_atomic_t;
+
+void (*signal(int, void (*)(int)))(int);
+int raise(int);
+
+#if _REDIR_TIME64
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+__REDIR(sigtimedwait, __sigtimedwait_time64);
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sound/asequencer.h b/x86_64-linux-musl/include/sound/asequencer.h
new file mode 100644
index 0000000..ac72736
--- /dev/null
+++ b/x86_64-linux-musl/include/sound/asequencer.h
@@ -0,0 +1,405 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__SOUND_ASEQUENCER_H
+#define _UAPI__SOUND_ASEQUENCER_H
+#include <sound/asound.h>
+#define SNDRV_SEQ_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 2)
+#define SNDRV_SEQ_EVENT_SYSTEM 0
+#define SNDRV_SEQ_EVENT_RESULT 1
+#define SNDRV_SEQ_EVENT_NOTE 5
+#define SNDRV_SEQ_EVENT_NOTEON 6
+#define SNDRV_SEQ_EVENT_NOTEOFF 7
+#define SNDRV_SEQ_EVENT_KEYPRESS 8
+#define SNDRV_SEQ_EVENT_CONTROLLER 10
+#define SNDRV_SEQ_EVENT_PGMCHANGE 11
+#define SNDRV_SEQ_EVENT_CHANPRESS 12
+#define SNDRV_SEQ_EVENT_PITCHBEND 13
+#define SNDRV_SEQ_EVENT_CONTROL14 14
+#define SNDRV_SEQ_EVENT_NONREGPARAM 15
+#define SNDRV_SEQ_EVENT_REGPARAM 16
+#define SNDRV_SEQ_EVENT_SONGPOS 20
+#define SNDRV_SEQ_EVENT_SONGSEL 21
+#define SNDRV_SEQ_EVENT_QFRAME 22
+#define SNDRV_SEQ_EVENT_TIMESIGN 23
+#define SNDRV_SEQ_EVENT_KEYSIGN 24
+#define SNDRV_SEQ_EVENT_START 30
+#define SNDRV_SEQ_EVENT_CONTINUE 31
+#define SNDRV_SEQ_EVENT_STOP 32
+#define SNDRV_SEQ_EVENT_SETPOS_TICK 33
+#define SNDRV_SEQ_EVENT_SETPOS_TIME 34
+#define SNDRV_SEQ_EVENT_TEMPO 35
+#define SNDRV_SEQ_EVENT_CLOCK 36
+#define SNDRV_SEQ_EVENT_TICK 37
+#define SNDRV_SEQ_EVENT_QUEUE_SKEW 38
+#define SNDRV_SEQ_EVENT_TUNE_REQUEST 40
+#define SNDRV_SEQ_EVENT_RESET 41
+#define SNDRV_SEQ_EVENT_SENSING 42
+#define SNDRV_SEQ_EVENT_ECHO 50
+#define SNDRV_SEQ_EVENT_OSS 51
+#define SNDRV_SEQ_EVENT_CLIENT_START 60
+#define SNDRV_SEQ_EVENT_CLIENT_EXIT 61
+#define SNDRV_SEQ_EVENT_CLIENT_CHANGE 62
+#define SNDRV_SEQ_EVENT_PORT_START 63
+#define SNDRV_SEQ_EVENT_PORT_EXIT 64
+#define SNDRV_SEQ_EVENT_PORT_CHANGE 65
+#define SNDRV_SEQ_EVENT_PORT_SUBSCRIBED 66
+#define SNDRV_SEQ_EVENT_PORT_UNSUBSCRIBED 67
+#define SNDRV_SEQ_EVENT_USR0 90
+#define SNDRV_SEQ_EVENT_USR1 91
+#define SNDRV_SEQ_EVENT_USR2 92
+#define SNDRV_SEQ_EVENT_USR3 93
+#define SNDRV_SEQ_EVENT_USR4 94
+#define SNDRV_SEQ_EVENT_USR5 95
+#define SNDRV_SEQ_EVENT_USR6 96
+#define SNDRV_SEQ_EVENT_USR7 97
+#define SNDRV_SEQ_EVENT_USR8 98
+#define SNDRV_SEQ_EVENT_USR9 99
+#define SNDRV_SEQ_EVENT_SYSEX 130
+#define SNDRV_SEQ_EVENT_BOUNCE 131
+#define SNDRV_SEQ_EVENT_USR_VAR0 135
+#define SNDRV_SEQ_EVENT_USR_VAR1 136
+#define SNDRV_SEQ_EVENT_USR_VAR2 137
+#define SNDRV_SEQ_EVENT_USR_VAR3 138
+#define SNDRV_SEQ_EVENT_USR_VAR4 139
+#define SNDRV_SEQ_EVENT_KERNEL_ERROR 150
+#define SNDRV_SEQ_EVENT_KERNEL_QUOTE 151
+#define SNDRV_SEQ_EVENT_NONE 255
+typedef unsigned char snd_seq_event_type_t;
+struct snd_seq_addr {
+  unsigned char client;
+  unsigned char port;
+};
+struct snd_seq_connect {
+  struct snd_seq_addr sender;
+  struct snd_seq_addr dest;
+};
+#define SNDRV_SEQ_ADDRESS_UNKNOWN 253
+#define SNDRV_SEQ_ADDRESS_SUBSCRIBERS 254
+#define SNDRV_SEQ_ADDRESS_BROADCAST 255
+#define SNDRV_SEQ_QUEUE_DIRECT 253
+#define SNDRV_SEQ_TIME_STAMP_TICK (0 << 0)
+#define SNDRV_SEQ_TIME_STAMP_REAL (1 << 0)
+#define SNDRV_SEQ_TIME_STAMP_MASK (1 << 0)
+#define SNDRV_SEQ_TIME_MODE_ABS (0 << 1)
+#define SNDRV_SEQ_TIME_MODE_REL (1 << 1)
+#define SNDRV_SEQ_TIME_MODE_MASK (1 << 1)
+#define SNDRV_SEQ_EVENT_LENGTH_FIXED (0 << 2)
+#define SNDRV_SEQ_EVENT_LENGTH_VARIABLE (1 << 2)
+#define SNDRV_SEQ_EVENT_LENGTH_VARUSR (2 << 2)
+#define SNDRV_SEQ_EVENT_LENGTH_MASK (3 << 2)
+#define SNDRV_SEQ_PRIORITY_NORMAL (0 << 4)
+#define SNDRV_SEQ_PRIORITY_HIGH (1 << 4)
+#define SNDRV_SEQ_PRIORITY_MASK (1 << 4)
+struct snd_seq_ev_note {
+  unsigned char channel;
+  unsigned char note;
+  unsigned char velocity;
+  unsigned char off_velocity;
+  unsigned int duration;
+};
+struct snd_seq_ev_ctrl {
+  unsigned char channel;
+  unsigned char unused1, unused2, unused3;
+  unsigned int param;
+  signed int value;
+};
+struct snd_seq_ev_raw8 {
+  unsigned char d[12];
+};
+struct snd_seq_ev_raw32 {
+  unsigned int d[3];
+};
+struct snd_seq_ev_ext {
+  unsigned int len;
+  void * ptr;
+} __attribute__((packed));
+struct snd_seq_result {
+  int event;
+  int result;
+};
+struct snd_seq_real_time {
+  unsigned int tv_sec;
+  unsigned int tv_nsec;
+};
+typedef unsigned int snd_seq_tick_time_t;
+union snd_seq_timestamp {
+  snd_seq_tick_time_t tick;
+  struct snd_seq_real_time time;
+};
+struct snd_seq_queue_skew {
+  unsigned int value;
+  unsigned int base;
+};
+struct snd_seq_ev_queue_control {
+  unsigned char queue;
+  unsigned char pad[3];
+  union {
+    signed int value;
+    union snd_seq_timestamp time;
+    unsigned int position;
+    struct snd_seq_queue_skew skew;
+    unsigned int d32[2];
+    unsigned char d8[8];
+  } param;
+};
+struct snd_seq_ev_quote {
+  struct snd_seq_addr origin;
+  unsigned short value;
+  struct snd_seq_event * event;
+} __attribute__((packed));
+struct snd_seq_event {
+  snd_seq_event_type_t type;
+  unsigned char flags;
+  char tag;
+  unsigned char queue;
+  union snd_seq_timestamp time;
+  struct snd_seq_addr source;
+  struct snd_seq_addr dest;
+  union {
+    struct snd_seq_ev_note note;
+    struct snd_seq_ev_ctrl control;
+    struct snd_seq_ev_raw8 raw8;
+    struct snd_seq_ev_raw32 raw32;
+    struct snd_seq_ev_ext ext;
+    struct snd_seq_ev_queue_control queue;
+    union snd_seq_timestamp time;
+    struct snd_seq_addr addr;
+    struct snd_seq_connect connect;
+    struct snd_seq_result result;
+    struct snd_seq_ev_quote quote;
+  } data;
+};
+struct snd_seq_event_bounce {
+  int err;
+  struct snd_seq_event event;
+};
+struct snd_seq_system_info {
+  int queues;
+  int clients;
+  int ports;
+  int channels;
+  int cur_clients;
+  int cur_queues;
+  char reserved[24];
+};
+struct snd_seq_running_info {
+  unsigned char client;
+  unsigned char big_endian;
+  unsigned char cpu_mode;
+  unsigned char pad;
+  unsigned char reserved[12];
+};
+#define SNDRV_SEQ_CLIENT_SYSTEM 0
+#define SNDRV_SEQ_CLIENT_DUMMY 14
+#define SNDRV_SEQ_CLIENT_OSS 15
+typedef int __bitwise snd_seq_client_type_t;
+#define NO_CLIENT ((__force snd_seq_client_type_t) 0)
+#define USER_CLIENT ((__force snd_seq_client_type_t) 1)
+#define KERNEL_CLIENT ((__force snd_seq_client_type_t) 2)
+#define SNDRV_SEQ_FILTER_BROADCAST (1 << 0)
+#define SNDRV_SEQ_FILTER_MULTICAST (1 << 1)
+#define SNDRV_SEQ_FILTER_BOUNCE (1 << 2)
+#define SNDRV_SEQ_FILTER_USE_EVENT (1 << 31)
+struct snd_seq_client_info {
+  int client;
+  snd_seq_client_type_t type;
+  char name[64];
+  unsigned int filter;
+  unsigned char multicast_filter[8];
+  unsigned char event_filter[32];
+  int num_ports;
+  int event_lost;
+  int card;
+  int pid;
+  char reserved[56];
+};
+struct snd_seq_client_pool {
+  int client;
+  int output_pool;
+  int input_pool;
+  int output_room;
+  int output_free;
+  int input_free;
+  char reserved[64];
+};
+#define SNDRV_SEQ_REMOVE_INPUT (1 << 0)
+#define SNDRV_SEQ_REMOVE_OUTPUT (1 << 1)
+#define SNDRV_SEQ_REMOVE_DEST (1 << 2)
+#define SNDRV_SEQ_REMOVE_DEST_CHANNEL (1 << 3)
+#define SNDRV_SEQ_REMOVE_TIME_BEFORE (1 << 4)
+#define SNDRV_SEQ_REMOVE_TIME_AFTER (1 << 5)
+#define SNDRV_SEQ_REMOVE_TIME_TICK (1 << 6)
+#define SNDRV_SEQ_REMOVE_EVENT_TYPE (1 << 7)
+#define SNDRV_SEQ_REMOVE_IGNORE_OFF (1 << 8)
+#define SNDRV_SEQ_REMOVE_TAG_MATCH (1 << 9)
+struct snd_seq_remove_events {
+  unsigned int remove_mode;
+  union snd_seq_timestamp time;
+  unsigned char queue;
+  struct snd_seq_addr dest;
+  unsigned char channel;
+  int type;
+  char tag;
+  int reserved[10];
+};
+#define SNDRV_SEQ_PORT_SYSTEM_TIMER 0
+#define SNDRV_SEQ_PORT_SYSTEM_ANNOUNCE 1
+#define SNDRV_SEQ_PORT_CAP_READ (1 << 0)
+#define SNDRV_SEQ_PORT_CAP_WRITE (1 << 1)
+#define SNDRV_SEQ_PORT_CAP_SYNC_READ (1 << 2)
+#define SNDRV_SEQ_PORT_CAP_SYNC_WRITE (1 << 3)
+#define SNDRV_SEQ_PORT_CAP_DUPLEX (1 << 4)
+#define SNDRV_SEQ_PORT_CAP_SUBS_READ (1 << 5)
+#define SNDRV_SEQ_PORT_CAP_SUBS_WRITE (1 << 6)
+#define SNDRV_SEQ_PORT_CAP_NO_EXPORT (1 << 7)
+#define SNDRV_SEQ_PORT_TYPE_SPECIFIC (1 << 0)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_GENERIC (1 << 1)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_GM (1 << 2)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_GS (1 << 3)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_XG (1 << 4)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_MT32 (1 << 5)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_GM2 (1 << 6)
+#define SNDRV_SEQ_PORT_TYPE_SYNTH (1 << 10)
+#define SNDRV_SEQ_PORT_TYPE_DIRECT_SAMPLE (1 << 11)
+#define SNDRV_SEQ_PORT_TYPE_SAMPLE (1 << 12)
+#define SNDRV_SEQ_PORT_TYPE_HARDWARE (1 << 16)
+#define SNDRV_SEQ_PORT_TYPE_SOFTWARE (1 << 17)
+#define SNDRV_SEQ_PORT_TYPE_SYNTHESIZER (1 << 18)
+#define SNDRV_SEQ_PORT_TYPE_PORT (1 << 19)
+#define SNDRV_SEQ_PORT_TYPE_APPLICATION (1 << 20)
+#define SNDRV_SEQ_PORT_FLG_GIVEN_PORT (1 << 0)
+#define SNDRV_SEQ_PORT_FLG_TIMESTAMP (1 << 1)
+#define SNDRV_SEQ_PORT_FLG_TIME_REAL (1 << 2)
+struct snd_seq_port_info {
+  struct snd_seq_addr addr;
+  char name[64];
+  unsigned int capability;
+  unsigned int type;
+  int midi_channels;
+  int midi_voices;
+  int synth_voices;
+  int read_use;
+  int write_use;
+  void * kernel;
+  unsigned int flags;
+  unsigned char time_queue;
+  char reserved[59];
+};
+#define SNDRV_SEQ_QUEUE_FLG_SYNC (1 << 0)
+struct snd_seq_queue_info {
+  int queue;
+  int owner;
+  unsigned locked : 1;
+  char name[64];
+  unsigned int flags;
+  char reserved[60];
+};
+struct snd_seq_queue_status {
+  int queue;
+  int events;
+  snd_seq_tick_time_t tick;
+  struct snd_seq_real_time time;
+  int running;
+  int flags;
+  char reserved[64];
+};
+struct snd_seq_queue_tempo {
+  int queue;
+  unsigned int tempo;
+  int ppq;
+  unsigned int skew_value;
+  unsigned int skew_base;
+  char reserved[24];
+};
+#define SNDRV_SEQ_TIMER_ALSA 0
+#define SNDRV_SEQ_TIMER_MIDI_CLOCK 1
+#define SNDRV_SEQ_TIMER_MIDI_TICK 2
+struct snd_seq_queue_timer {
+  int queue;
+  int type;
+  union {
+    struct {
+      struct snd_timer_id id;
+      unsigned int resolution;
+    } alsa;
+  } u;
+  char reserved[64];
+};
+struct snd_seq_queue_client {
+  int queue;
+  int client;
+  int used;
+  char reserved[64];
+};
+#define SNDRV_SEQ_PORT_SUBS_EXCLUSIVE (1 << 0)
+#define SNDRV_SEQ_PORT_SUBS_TIMESTAMP (1 << 1)
+#define SNDRV_SEQ_PORT_SUBS_TIME_REAL (1 << 2)
+struct snd_seq_port_subscribe {
+  struct snd_seq_addr sender;
+  struct snd_seq_addr dest;
+  unsigned int voices;
+  unsigned int flags;
+  unsigned char queue;
+  unsigned char pad[3];
+  char reserved[64];
+};
+#define SNDRV_SEQ_QUERY_SUBS_READ 0
+#define SNDRV_SEQ_QUERY_SUBS_WRITE 1
+struct snd_seq_query_subs {
+  struct snd_seq_addr root;
+  int type;
+  int index;
+  int num_subs;
+  struct snd_seq_addr addr;
+  unsigned char queue;
+  unsigned int flags;
+  char reserved[64];
+};
+#define SNDRV_SEQ_IOCTL_PVERSION _IOR('S', 0x00, int)
+#define SNDRV_SEQ_IOCTL_CLIENT_ID _IOR('S', 0x01, int)
+#define SNDRV_SEQ_IOCTL_SYSTEM_INFO _IOWR('S', 0x02, struct snd_seq_system_info)
+#define SNDRV_SEQ_IOCTL_RUNNING_MODE _IOWR('S', 0x03, struct snd_seq_running_info)
+#define SNDRV_SEQ_IOCTL_GET_CLIENT_INFO _IOWR('S', 0x10, struct snd_seq_client_info)
+#define SNDRV_SEQ_IOCTL_SET_CLIENT_INFO _IOW('S', 0x11, struct snd_seq_client_info)
+#define SNDRV_SEQ_IOCTL_CREATE_PORT _IOWR('S', 0x20, struct snd_seq_port_info)
+#define SNDRV_SEQ_IOCTL_DELETE_PORT _IOW('S', 0x21, struct snd_seq_port_info)
+#define SNDRV_SEQ_IOCTL_GET_PORT_INFO _IOWR('S', 0x22, struct snd_seq_port_info)
+#define SNDRV_SEQ_IOCTL_SET_PORT_INFO _IOW('S', 0x23, struct snd_seq_port_info)
+#define SNDRV_SEQ_IOCTL_SUBSCRIBE_PORT _IOW('S', 0x30, struct snd_seq_port_subscribe)
+#define SNDRV_SEQ_IOCTL_UNSUBSCRIBE_PORT _IOW('S', 0x31, struct snd_seq_port_subscribe)
+#define SNDRV_SEQ_IOCTL_CREATE_QUEUE _IOWR('S', 0x32, struct snd_seq_queue_info)
+#define SNDRV_SEQ_IOCTL_DELETE_QUEUE _IOW('S', 0x33, struct snd_seq_queue_info)
+#define SNDRV_SEQ_IOCTL_GET_QUEUE_INFO _IOWR('S', 0x34, struct snd_seq_queue_info)
+#define SNDRV_SEQ_IOCTL_SET_QUEUE_INFO _IOWR('S', 0x35, struct snd_seq_queue_info)
+#define SNDRV_SEQ_IOCTL_GET_NAMED_QUEUE _IOWR('S', 0x36, struct snd_seq_queue_info)
+#define SNDRV_SEQ_IOCTL_GET_QUEUE_STATUS _IOWR('S', 0x40, struct snd_seq_queue_status)
+#define SNDRV_SEQ_IOCTL_GET_QUEUE_TEMPO _IOWR('S', 0x41, struct snd_seq_queue_tempo)
+#define SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO _IOW('S', 0x42, struct snd_seq_queue_tempo)
+#define SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER _IOWR('S', 0x45, struct snd_seq_queue_timer)
+#define SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER _IOW('S', 0x46, struct snd_seq_queue_timer)
+#define SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT _IOWR('S', 0x49, struct snd_seq_queue_client)
+#define SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT _IOW('S', 0x4a, struct snd_seq_queue_client)
+#define SNDRV_SEQ_IOCTL_GET_CLIENT_POOL _IOWR('S', 0x4b, struct snd_seq_client_pool)
+#define SNDRV_SEQ_IOCTL_SET_CLIENT_POOL _IOW('S', 0x4c, struct snd_seq_client_pool)
+#define SNDRV_SEQ_IOCTL_REMOVE_EVENTS _IOW('S', 0x4e, struct snd_seq_remove_events)
+#define SNDRV_SEQ_IOCTL_QUERY_SUBS _IOWR('S', 0x4f, struct snd_seq_query_subs)
+#define SNDRV_SEQ_IOCTL_GET_SUBSCRIPTION _IOWR('S', 0x50, struct snd_seq_port_subscribe)
+#define SNDRV_SEQ_IOCTL_QUERY_NEXT_CLIENT _IOWR('S', 0x51, struct snd_seq_client_info)
+#define SNDRV_SEQ_IOCTL_QUERY_NEXT_PORT _IOWR('S', 0x52, struct snd_seq_port_info)
+#endif
diff --git a/x86_64-linux-musl/include/sound/asoc.h b/x86_64-linux-musl/include/sound/asoc.h
new file mode 100644
index 0000000..eeb12b0
--- /dev/null
+++ b/x86_64-linux-musl/include/sound/asoc.h
@@ -0,0 +1,395 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/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_UAPI_SND_ASOC_H
+#define __LINUX_UAPI_SND_ASOC_H
+#include <linux/types.h>
+#include <sound/asound.h>
+#define SND_SOC_TPLG_MAX_CHAN 8
+#define SND_SOC_TPLG_MAX_FORMATS 16
+#define SND_SOC_TPLG_STREAM_CONFIG_MAX 8
+#define SND_SOC_TPLG_HW_CONFIG_MAX 8
+#define SND_SOC_TPLG_CTL_VOLSW 1
+#define SND_SOC_TPLG_CTL_VOLSW_SX 2
+#define SND_SOC_TPLG_CTL_VOLSW_XR_SX 3
+#define SND_SOC_TPLG_CTL_ENUM 4
+#define SND_SOC_TPLG_CTL_BYTES 5
+#define SND_SOC_TPLG_CTL_ENUM_VALUE 6
+#define SND_SOC_TPLG_CTL_RANGE 7
+#define SND_SOC_TPLG_CTL_STROBE 8
+#define SND_SOC_TPLG_DAPM_CTL_VOLSW 64
+#define SND_SOC_TPLG_DAPM_CTL_ENUM_DOUBLE 65
+#define SND_SOC_TPLG_DAPM_CTL_ENUM_VIRT 66
+#define SND_SOC_TPLG_DAPM_CTL_ENUM_VALUE 67
+#define SND_SOC_TPLG_DAPM_CTL_PIN 68
+#define SND_SOC_TPLG_DAPM_INPUT 0
+#define SND_SOC_TPLG_DAPM_OUTPUT 1
+#define SND_SOC_TPLG_DAPM_MUX 2
+#define SND_SOC_TPLG_DAPM_MIXER 3
+#define SND_SOC_TPLG_DAPM_PGA 4
+#define SND_SOC_TPLG_DAPM_OUT_DRV 5
+#define SND_SOC_TPLG_DAPM_ADC 6
+#define SND_SOC_TPLG_DAPM_DAC 7
+#define SND_SOC_TPLG_DAPM_SWITCH 8
+#define SND_SOC_TPLG_DAPM_PRE 9
+#define SND_SOC_TPLG_DAPM_POST 10
+#define SND_SOC_TPLG_DAPM_AIF_IN 11
+#define SND_SOC_TPLG_DAPM_AIF_OUT 12
+#define SND_SOC_TPLG_DAPM_DAI_IN 13
+#define SND_SOC_TPLG_DAPM_DAI_OUT 14
+#define SND_SOC_TPLG_DAPM_DAI_LINK 15
+#define SND_SOC_TPLG_DAPM_BUFFER 16
+#define SND_SOC_TPLG_DAPM_SCHEDULER 17
+#define SND_SOC_TPLG_DAPM_EFFECT 18
+#define SND_SOC_TPLG_DAPM_SIGGEN 19
+#define SND_SOC_TPLG_DAPM_SRC 20
+#define SND_SOC_TPLG_DAPM_ASRC 21
+#define SND_SOC_TPLG_DAPM_ENCODER 22
+#define SND_SOC_TPLG_DAPM_DECODER 23
+#define SND_SOC_TPLG_DAPM_LAST SND_SOC_TPLG_DAPM_DECODER
+#define SND_SOC_TPLG_MAGIC 0x41536F43
+#define SND_SOC_TPLG_NUM_TEXTS 16
+#define SND_SOC_TPLG_ABI_VERSION 0x5
+#define SND_SOC_TPLG_ABI_VERSION_MIN 0x4
+#define SND_SOC_TPLG_TLV_SIZE 32
+#define SND_SOC_TPLG_TYPE_MIXER 1
+#define SND_SOC_TPLG_TYPE_BYTES 2
+#define SND_SOC_TPLG_TYPE_ENUM 3
+#define SND_SOC_TPLG_TYPE_DAPM_GRAPH 4
+#define SND_SOC_TPLG_TYPE_DAPM_WIDGET 5
+#define SND_SOC_TPLG_TYPE_DAI_LINK 6
+#define SND_SOC_TPLG_TYPE_PCM 7
+#define SND_SOC_TPLG_TYPE_MANIFEST 8
+#define SND_SOC_TPLG_TYPE_CODEC_LINK 9
+#define SND_SOC_TPLG_TYPE_BACKEND_LINK 10
+#define SND_SOC_TPLG_TYPE_PDATA 11
+#define SND_SOC_TPLG_TYPE_DAI 12
+#define SND_SOC_TPLG_TYPE_MAX SND_SOC_TPLG_TYPE_DAI
+#define SND_SOC_TPLG_TYPE_VENDOR_FW 1000
+#define SND_SOC_TPLG_TYPE_VENDOR_CONFIG 1001
+#define SND_SOC_TPLG_TYPE_VENDOR_COEFF 1002
+#define SND_SOC_TPLG_TYPEVENDOR_CODEC 1003
+#define SND_SOC_TPLG_STREAM_PLAYBACK 0
+#define SND_SOC_TPLG_STREAM_CAPTURE 1
+#define SND_SOC_TPLG_TUPLE_TYPE_UUID 0
+#define SND_SOC_TPLG_TUPLE_TYPE_STRING 1
+#define SND_SOC_TPLG_TUPLE_TYPE_BOOL 2
+#define SND_SOC_TPLG_TUPLE_TYPE_BYTE 3
+#define SND_SOC_TPLG_TUPLE_TYPE_WORD 4
+#define SND_SOC_TPLG_TUPLE_TYPE_SHORT 5
+#define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_RATES (1 << 0)
+#define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_CHANNELS (1 << 1)
+#define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_SAMPLEBITS (1 << 2)
+#define SND_SOC_TPLG_DAI_CLK_GATE_UNDEFINED 0
+#define SND_SOC_TPLG_DAI_CLK_GATE_GATED 1
+#define SND_SOC_TPLG_DAI_CLK_GATE_CONT 2
+#define SND_SOC_TPLG_MCLK_CO 0
+#define SND_SOC_TPLG_MCLK_CI 1
+#define SND_SOC_DAI_FORMAT_I2S 1
+#define SND_SOC_DAI_FORMAT_RIGHT_J 2
+#define SND_SOC_DAI_FORMAT_LEFT_J 3
+#define SND_SOC_DAI_FORMAT_DSP_A 4
+#define SND_SOC_DAI_FORMAT_DSP_B 5
+#define SND_SOC_DAI_FORMAT_AC97 6
+#define SND_SOC_DAI_FORMAT_PDM 7
+#define SND_SOC_DAI_FORMAT_MSB SND_SOC_DAI_FORMAT_LEFT_J
+#define SND_SOC_DAI_FORMAT_LSB SND_SOC_DAI_FORMAT_RIGHT_J
+#define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_RATES (1 << 0)
+#define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_CHANNELS (1 << 1)
+#define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_SAMPLEBITS (1 << 2)
+#define SND_SOC_TPLG_LNK_FLGBIT_VOICE_WAKEUP (1 << 3)
+#define SND_SOC_TPLG_BCLK_CP 0
+#define SND_SOC_TPLG_BCLK_CC 1
+#define SND_SOC_TPLG_BCLK_CM SND_SOC_TPLG_BCLK_CP
+#define SND_SOC_TPLG_BCLK_CS SND_SOC_TPLG_BCLK_CC
+#define SND_SOC_TPLG_FSYNC_CP 0
+#define SND_SOC_TPLG_FSYNC_CC 1
+#define SND_SOC_TPLG_FSYNC_CM SND_SOC_TPLG_FSYNC_CP
+#define SND_SOC_TPLG_FSYNC_CS SND_SOC_TPLG_FSYNC_CC
+struct snd_soc_tplg_hdr {
+  __le32 magic;
+  __le32 abi;
+  __le32 version;
+  __le32 type;
+  __le32 size;
+  __le32 vendor_type;
+  __le32 payload_size;
+  __le32 index;
+  __le32 count;
+} __attribute__((packed));
+struct snd_soc_tplg_vendor_uuid_elem {
+  __le32 token;
+  char uuid[16];
+} __attribute__((packed));
+struct snd_soc_tplg_vendor_value_elem {
+  __le32 token;
+  __le32 value;
+} __attribute__((packed));
+struct snd_soc_tplg_vendor_string_elem {
+  __le32 token;
+  char string[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+} __attribute__((packed));
+struct snd_soc_tplg_vendor_array {
+  __le32 size;
+  __le32 type;
+  __le32 num_elems;
+  union {
+    struct snd_soc_tplg_vendor_uuid_elem uuid[0];
+    struct snd_soc_tplg_vendor_value_elem value[0];
+    struct snd_soc_tplg_vendor_string_elem string[0];
+  };
+} __attribute__((packed));
+struct snd_soc_tplg_private {
+  __le32 size;
+  union {
+    __DECLARE_FLEX_ARRAY(char, data);
+    __DECLARE_FLEX_ARRAY(struct snd_soc_tplg_vendor_array, array);
+  };
+} __attribute__((packed));
+struct snd_soc_tplg_tlv_dbscale {
+  __le32 min;
+  __le32 step;
+  __le32 mute;
+} __attribute__((packed));
+struct snd_soc_tplg_ctl_tlv {
+  __le32 size;
+  __le32 type;
+  union {
+    __le32 data[SND_SOC_TPLG_TLV_SIZE];
+    struct snd_soc_tplg_tlv_dbscale scale;
+  };
+} __attribute__((packed));
+struct snd_soc_tplg_channel {
+  __le32 size;
+  __le32 reg;
+  __le32 shift;
+  __le32 id;
+} __attribute__((packed));
+struct snd_soc_tplg_io_ops {
+  __le32 get;
+  __le32 put;
+  __le32 info;
+} __attribute__((packed));
+struct snd_soc_tplg_ctl_hdr {
+  __le32 size;
+  __le32 type;
+  char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  __le32 access;
+  struct snd_soc_tplg_io_ops ops;
+  struct snd_soc_tplg_ctl_tlv tlv;
+} __attribute__((packed));
+struct snd_soc_tplg_stream_caps {
+  __le32 size;
+  char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  __le64 formats;
+  __le32 rates;
+  __le32 rate_min;
+  __le32 rate_max;
+  __le32 channels_min;
+  __le32 channels_max;
+  __le32 periods_min;
+  __le32 periods_max;
+  __le32 period_size_min;
+  __le32 period_size_max;
+  __le32 buffer_size_min;
+  __le32 buffer_size_max;
+  __le32 sig_bits;
+} __attribute__((packed));
+struct snd_soc_tplg_stream {
+  __le32 size;
+  char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  __le64 format;
+  __le32 rate;
+  __le32 period_bytes;
+  __le32 buffer_bytes;
+  __le32 channels;
+} __attribute__((packed));
+struct snd_soc_tplg_hw_config {
+  __le32 size;
+  __le32 id;
+  __le32 fmt;
+  __u8 clock_gated;
+  __u8 invert_bclk;
+  __u8 invert_fsync;
+  __u8 bclk_provider;
+  __u8 fsync_provider;
+  __u8 mclk_direction;
+  __le16 reserved;
+  __le32 mclk_rate;
+  __le32 bclk_rate;
+  __le32 fsync_rate;
+  __le32 tdm_slots;
+  __le32 tdm_slot_width;
+  __le32 tx_slots;
+  __le32 rx_slots;
+  __le32 tx_channels;
+  __le32 tx_chanmap[SND_SOC_TPLG_MAX_CHAN];
+  __le32 rx_channels;
+  __le32 rx_chanmap[SND_SOC_TPLG_MAX_CHAN];
+} __attribute__((packed));
+struct snd_soc_tplg_manifest {
+  __le32 size;
+  __le32 control_elems;
+  __le32 widget_elems;
+  __le32 graph_elems;
+  __le32 pcm_elems;
+  __le32 dai_link_elems;
+  __le32 dai_elems;
+  __le32 reserved[20];
+  struct snd_soc_tplg_private priv;
+} __attribute__((packed));
+struct snd_soc_tplg_mixer_control {
+  struct snd_soc_tplg_ctl_hdr hdr;
+  __le32 size;
+  __le32 min;
+  __le32 max;
+  __le32 platform_max;
+  __le32 invert;
+  __le32 num_channels;
+  struct snd_soc_tplg_channel channel[SND_SOC_TPLG_MAX_CHAN];
+  struct snd_soc_tplg_private priv;
+} __attribute__((packed));
+struct snd_soc_tplg_enum_control {
+  struct snd_soc_tplg_ctl_hdr hdr;
+  __le32 size;
+  __le32 num_channels;
+  struct snd_soc_tplg_channel channel[SND_SOC_TPLG_MAX_CHAN];
+  __le32 items;
+  __le32 mask;
+  __le32 count;
+  char texts[SND_SOC_TPLG_NUM_TEXTS][SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  __le32 values[SND_SOC_TPLG_NUM_TEXTS * SNDRV_CTL_ELEM_ID_NAME_MAXLEN / 4];
+  struct snd_soc_tplg_private priv;
+} __attribute__((packed));
+struct snd_soc_tplg_bytes_control {
+  struct snd_soc_tplg_ctl_hdr hdr;
+  __le32 size;
+  __le32 max;
+  __le32 mask;
+  __le32 base;
+  __le32 num_regs;
+  struct snd_soc_tplg_io_ops ext_ops;
+  struct snd_soc_tplg_private priv;
+} __attribute__((packed));
+struct snd_soc_tplg_dapm_graph_elem {
+  char sink[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  char control[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  char source[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+} __attribute__((packed));
+struct snd_soc_tplg_dapm_widget {
+  __le32 size;
+  __le32 id;
+  char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  char sname[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  __le32 reg;
+  __le32 shift;
+  __le32 mask;
+  __le32 subseq;
+  __le32 invert;
+  __le32 ignore_suspend;
+  __le16 event_flags;
+  __le16 event_type;
+  __le32 num_kcontrols;
+  struct snd_soc_tplg_private priv;
+} __attribute__((packed));
+struct snd_soc_tplg_pcm {
+  __le32 size;
+  char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  __le32 pcm_id;
+  __le32 dai_id;
+  __le32 playback;
+  __le32 capture;
+  __le32 compress;
+  struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
+  __le32 num_streams;
+  struct snd_soc_tplg_stream_caps caps[2];
+  __le32 flag_mask;
+  __le32 flags;
+  struct snd_soc_tplg_private priv;
+} __attribute__((packed));
+struct snd_soc_tplg_link_config {
+  __le32 size;
+  __le32 id;
+  char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  char stream_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
+  __le32 num_streams;
+  struct snd_soc_tplg_hw_config hw_config[SND_SOC_TPLG_HW_CONFIG_MAX];
+  __le32 num_hw_configs;
+  __le32 default_hw_config_id;
+  __le32 flag_mask;
+  __le32 flags;
+  struct snd_soc_tplg_private priv;
+} __attribute__((packed));
+struct snd_soc_tplg_dai {
+  __le32 size;
+  char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  __le32 dai_id;
+  __le32 playback;
+  __le32 capture;
+  struct snd_soc_tplg_stream_caps caps[2];
+  __le32 flag_mask;
+  __le32 flags;
+  struct snd_soc_tplg_private priv;
+} __attribute__((packed));
+struct snd_soc_tplg_manifest_v4 {
+  __le32 size;
+  __le32 control_elems;
+  __le32 widget_elems;
+  __le32 graph_elems;
+  __le32 pcm_elems;
+  __le32 dai_link_elems;
+  struct snd_soc_tplg_private priv;
+} __packed;
+struct snd_soc_tplg_stream_caps_v4 {
+  __le32 size;
+  char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  __le64 formats;
+  __le32 rates;
+  __le32 rate_min;
+  __le32 rate_max;
+  __le32 channels_min;
+  __le32 channels_max;
+  __le32 periods_min;
+  __le32 periods_max;
+  __le32 period_size_min;
+  __le32 period_size_max;
+  __le32 buffer_size_min;
+  __le32 buffer_size_max;
+} __packed;
+struct snd_soc_tplg_pcm_v4 {
+  __le32 size;
+  char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  __le32 pcm_id;
+  __le32 dai_id;
+  __le32 playback;
+  __le32 capture;
+  __le32 compress;
+  struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
+  __le32 num_streams;
+  struct snd_soc_tplg_stream_caps_v4 caps[2];
+} __packed;
+struct snd_soc_tplg_link_config_v4 {
+  __le32 size;
+  __le32 id;
+  struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
+  __le32 num_streams;
+} __packed;
+#endif
diff --git a/x86_64-linux-musl/include/sound/asound.h b/x86_64-linux-musl/include/sound/asound.h
new file mode 100644
index 0000000..441f1d4
--- /dev/null
+++ b/x86_64-linux-musl/include/sound/asound.h
@@ -0,0 +1,943 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__SOUND_ASOUND_H
+#define _UAPI__SOUND_ASOUND_H
+#ifdef __linux__
+#include <linux/types.h>
+#include <asm/byteorder.h>
+#else
+#include <endian.h>
+#include <sys/ioctl.h>
+#endif
+#include <stdlib.h>
+#include <time.h>
+#define SNDRV_PROTOCOL_VERSION(major,minor,subminor) (((major) << 16) | ((minor) << 8) | (subminor))
+#define SNDRV_PROTOCOL_MAJOR(version) (((version) >> 16) & 0xffff)
+#define SNDRV_PROTOCOL_MINOR(version) (((version) >> 8) & 0xff)
+#define SNDRV_PROTOCOL_MICRO(version) ((version) & 0xff)
+#define SNDRV_PROTOCOL_INCOMPATIBLE(kversion,uversion) (SNDRV_PROTOCOL_MAJOR(kversion) != SNDRV_PROTOCOL_MAJOR(uversion) || (SNDRV_PROTOCOL_MAJOR(kversion) == SNDRV_PROTOCOL_MAJOR(uversion) && SNDRV_PROTOCOL_MINOR(kversion) != SNDRV_PROTOCOL_MINOR(uversion)))
+struct snd_aes_iec958 {
+  unsigned char status[24];
+  unsigned char subcode[147];
+  unsigned char pad;
+  unsigned char dig_subframe[4];
+};
+struct snd_cea_861_aud_if {
+  unsigned char db1_ct_cc;
+  unsigned char db2_sf_ss;
+  unsigned char db3;
+  unsigned char db4_ca;
+  unsigned char db5_dminh_lsv;
+};
+#define SNDRV_HWDEP_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 1)
+enum {
+  SNDRV_HWDEP_IFACE_OPL2 = 0,
+  SNDRV_HWDEP_IFACE_OPL3,
+  SNDRV_HWDEP_IFACE_OPL4,
+  SNDRV_HWDEP_IFACE_SB16CSP,
+  SNDRV_HWDEP_IFACE_EMU10K1,
+  SNDRV_HWDEP_IFACE_YSS225,
+  SNDRV_HWDEP_IFACE_ICS2115,
+  SNDRV_HWDEP_IFACE_SSCAPE,
+  SNDRV_HWDEP_IFACE_VX,
+  SNDRV_HWDEP_IFACE_MIXART,
+  SNDRV_HWDEP_IFACE_USX2Y,
+  SNDRV_HWDEP_IFACE_EMUX_WAVETABLE,
+  SNDRV_HWDEP_IFACE_BLUETOOTH,
+  SNDRV_HWDEP_IFACE_USX2Y_PCM,
+  SNDRV_HWDEP_IFACE_PCXHR,
+  SNDRV_HWDEP_IFACE_SB_RC,
+  SNDRV_HWDEP_IFACE_HDA,
+  SNDRV_HWDEP_IFACE_USB_STREAM,
+  SNDRV_HWDEP_IFACE_FW_DICE,
+  SNDRV_HWDEP_IFACE_FW_FIREWORKS,
+  SNDRV_HWDEP_IFACE_FW_BEBOB,
+  SNDRV_HWDEP_IFACE_FW_OXFW,
+  SNDRV_HWDEP_IFACE_FW_DIGI00X,
+  SNDRV_HWDEP_IFACE_FW_TASCAM,
+  SNDRV_HWDEP_IFACE_LINE6,
+  SNDRV_HWDEP_IFACE_FW_MOTU,
+  SNDRV_HWDEP_IFACE_FW_FIREFACE,
+  SNDRV_HWDEP_IFACE_LAST = SNDRV_HWDEP_IFACE_FW_FIREFACE
+};
+struct snd_hwdep_info {
+  unsigned int device;
+  int card;
+  unsigned char id[64];
+  unsigned char name[80];
+  int iface;
+  unsigned char reserved[64];
+};
+struct snd_hwdep_dsp_status {
+  unsigned int version;
+  unsigned char id[32];
+  unsigned int num_dsps;
+  unsigned int dsp_loaded;
+  unsigned int chip_ready;
+  unsigned char reserved[16];
+};
+struct snd_hwdep_dsp_image {
+  unsigned int index;
+  unsigned char name[64];
+  unsigned char __user * image;
+  size_t length;
+  unsigned long driver_data;
+};
+#define SNDRV_HWDEP_IOCTL_PVERSION _IOR('H', 0x00, int)
+#define SNDRV_HWDEP_IOCTL_INFO _IOR('H', 0x01, struct snd_hwdep_info)
+#define SNDRV_HWDEP_IOCTL_DSP_STATUS _IOR('H', 0x02, struct snd_hwdep_dsp_status)
+#define SNDRV_HWDEP_IOCTL_DSP_LOAD _IOW('H', 0x03, struct snd_hwdep_dsp_image)
+#define SNDRV_PCM_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 15)
+typedef unsigned long snd_pcm_uframes_t;
+typedef signed long snd_pcm_sframes_t;
+enum {
+  SNDRV_PCM_CLASS_GENERIC = 0,
+  SNDRV_PCM_CLASS_MULTI,
+  SNDRV_PCM_CLASS_MODEM,
+  SNDRV_PCM_CLASS_DIGITIZER,
+  SNDRV_PCM_CLASS_LAST = SNDRV_PCM_CLASS_DIGITIZER,
+};
+enum {
+  SNDRV_PCM_SUBCLASS_GENERIC_MIX = 0,
+  SNDRV_PCM_SUBCLASS_MULTI_MIX,
+  SNDRV_PCM_SUBCLASS_LAST = SNDRV_PCM_SUBCLASS_MULTI_MIX,
+};
+enum {
+  SNDRV_PCM_STREAM_PLAYBACK = 0,
+  SNDRV_PCM_STREAM_CAPTURE,
+  SNDRV_PCM_STREAM_LAST = SNDRV_PCM_STREAM_CAPTURE,
+};
+typedef int __bitwise snd_pcm_access_t;
+#define SNDRV_PCM_ACCESS_MMAP_INTERLEAVED ((__force snd_pcm_access_t) 0)
+#define SNDRV_PCM_ACCESS_MMAP_NONINTERLEAVED ((__force snd_pcm_access_t) 1)
+#define SNDRV_PCM_ACCESS_MMAP_COMPLEX ((__force snd_pcm_access_t) 2)
+#define SNDRV_PCM_ACCESS_RW_INTERLEAVED ((__force snd_pcm_access_t) 3)
+#define SNDRV_PCM_ACCESS_RW_NONINTERLEAVED ((__force snd_pcm_access_t) 4)
+#define SNDRV_PCM_ACCESS_LAST SNDRV_PCM_ACCESS_RW_NONINTERLEAVED
+typedef int __bitwise snd_pcm_format_t;
+#define SNDRV_PCM_FORMAT_S8 ((__force snd_pcm_format_t) 0)
+#define SNDRV_PCM_FORMAT_U8 ((__force snd_pcm_format_t) 1)
+#define SNDRV_PCM_FORMAT_S16_LE ((__force snd_pcm_format_t) 2)
+#define SNDRV_PCM_FORMAT_S16_BE ((__force snd_pcm_format_t) 3)
+#define SNDRV_PCM_FORMAT_U16_LE ((__force snd_pcm_format_t) 4)
+#define SNDRV_PCM_FORMAT_U16_BE ((__force snd_pcm_format_t) 5)
+#define SNDRV_PCM_FORMAT_S24_LE ((__force snd_pcm_format_t) 6)
+#define SNDRV_PCM_FORMAT_S24_BE ((__force snd_pcm_format_t) 7)
+#define SNDRV_PCM_FORMAT_U24_LE ((__force snd_pcm_format_t) 8)
+#define SNDRV_PCM_FORMAT_U24_BE ((__force snd_pcm_format_t) 9)
+#define SNDRV_PCM_FORMAT_S32_LE ((__force snd_pcm_format_t) 10)
+#define SNDRV_PCM_FORMAT_S32_BE ((__force snd_pcm_format_t) 11)
+#define SNDRV_PCM_FORMAT_U32_LE ((__force snd_pcm_format_t) 12)
+#define SNDRV_PCM_FORMAT_U32_BE ((__force snd_pcm_format_t) 13)
+#define SNDRV_PCM_FORMAT_FLOAT_LE ((__force snd_pcm_format_t) 14)
+#define SNDRV_PCM_FORMAT_FLOAT_BE ((__force snd_pcm_format_t) 15)
+#define SNDRV_PCM_FORMAT_FLOAT64_LE ((__force snd_pcm_format_t) 16)
+#define SNDRV_PCM_FORMAT_FLOAT64_BE ((__force snd_pcm_format_t) 17)
+#define SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE ((__force snd_pcm_format_t) 18)
+#define SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE ((__force snd_pcm_format_t) 19)
+#define SNDRV_PCM_FORMAT_MU_LAW ((__force snd_pcm_format_t) 20)
+#define SNDRV_PCM_FORMAT_A_LAW ((__force snd_pcm_format_t) 21)
+#define SNDRV_PCM_FORMAT_IMA_ADPCM ((__force snd_pcm_format_t) 22)
+#define SNDRV_PCM_FORMAT_MPEG ((__force snd_pcm_format_t) 23)
+#define SNDRV_PCM_FORMAT_GSM ((__force snd_pcm_format_t) 24)
+#define SNDRV_PCM_FORMAT_S20_LE ((__force snd_pcm_format_t) 25)
+#define SNDRV_PCM_FORMAT_S20_BE ((__force snd_pcm_format_t) 26)
+#define SNDRV_PCM_FORMAT_U20_LE ((__force snd_pcm_format_t) 27)
+#define SNDRV_PCM_FORMAT_U20_BE ((__force snd_pcm_format_t) 28)
+#define SNDRV_PCM_FORMAT_SPECIAL ((__force snd_pcm_format_t) 31)
+#define SNDRV_PCM_FORMAT_S24_3LE ((__force snd_pcm_format_t) 32)
+#define SNDRV_PCM_FORMAT_S24_3BE ((__force snd_pcm_format_t) 33)
+#define SNDRV_PCM_FORMAT_U24_3LE ((__force snd_pcm_format_t) 34)
+#define SNDRV_PCM_FORMAT_U24_3BE ((__force snd_pcm_format_t) 35)
+#define SNDRV_PCM_FORMAT_S20_3LE ((__force snd_pcm_format_t) 36)
+#define SNDRV_PCM_FORMAT_S20_3BE ((__force snd_pcm_format_t) 37)
+#define SNDRV_PCM_FORMAT_U20_3LE ((__force snd_pcm_format_t) 38)
+#define SNDRV_PCM_FORMAT_U20_3BE ((__force snd_pcm_format_t) 39)
+#define SNDRV_PCM_FORMAT_S18_3LE ((__force snd_pcm_format_t) 40)
+#define SNDRV_PCM_FORMAT_S18_3BE ((__force snd_pcm_format_t) 41)
+#define SNDRV_PCM_FORMAT_U18_3LE ((__force snd_pcm_format_t) 42)
+#define SNDRV_PCM_FORMAT_U18_3BE ((__force snd_pcm_format_t) 43)
+#define SNDRV_PCM_FORMAT_G723_24 ((__force snd_pcm_format_t) 44)
+#define SNDRV_PCM_FORMAT_G723_24_1B ((__force snd_pcm_format_t) 45)
+#define SNDRV_PCM_FORMAT_G723_40 ((__force snd_pcm_format_t) 46)
+#define SNDRV_PCM_FORMAT_G723_40_1B ((__force snd_pcm_format_t) 47)
+#define SNDRV_PCM_FORMAT_DSD_U8 ((__force snd_pcm_format_t) 48)
+#define SNDRV_PCM_FORMAT_DSD_U16_LE ((__force snd_pcm_format_t) 49)
+#define SNDRV_PCM_FORMAT_DSD_U32_LE ((__force snd_pcm_format_t) 50)
+#define SNDRV_PCM_FORMAT_DSD_U16_BE ((__force snd_pcm_format_t) 51)
+#define SNDRV_PCM_FORMAT_DSD_U32_BE ((__force snd_pcm_format_t) 52)
+#define SNDRV_PCM_FORMAT_LAST SNDRV_PCM_FORMAT_DSD_U32_BE
+#define SNDRV_PCM_FORMAT_FIRST SNDRV_PCM_FORMAT_S8
+#ifdef SNDRV_LITTLE_ENDIAN
+#define SNDRV_PCM_FORMAT_S16 SNDRV_PCM_FORMAT_S16_LE
+#define SNDRV_PCM_FORMAT_U16 SNDRV_PCM_FORMAT_U16_LE
+#define SNDRV_PCM_FORMAT_S24 SNDRV_PCM_FORMAT_S24_LE
+#define SNDRV_PCM_FORMAT_U24 SNDRV_PCM_FORMAT_U24_LE
+#define SNDRV_PCM_FORMAT_S32 SNDRV_PCM_FORMAT_S32_LE
+#define SNDRV_PCM_FORMAT_U32 SNDRV_PCM_FORMAT_U32_LE
+#define SNDRV_PCM_FORMAT_FLOAT SNDRV_PCM_FORMAT_FLOAT_LE
+#define SNDRV_PCM_FORMAT_FLOAT64 SNDRV_PCM_FORMAT_FLOAT64_LE
+#define SNDRV_PCM_FORMAT_IEC958_SUBFRAME SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE
+#define SNDRV_PCM_FORMAT_S20 SNDRV_PCM_FORMAT_S20_LE
+#define SNDRV_PCM_FORMAT_U20 SNDRV_PCM_FORMAT_U20_LE
+#endif
+#ifdef SNDRV_BIG_ENDIAN
+#define SNDRV_PCM_FORMAT_S16 SNDRV_PCM_FORMAT_S16_BE
+#define SNDRV_PCM_FORMAT_U16 SNDRV_PCM_FORMAT_U16_BE
+#define SNDRV_PCM_FORMAT_S24 SNDRV_PCM_FORMAT_S24_BE
+#define SNDRV_PCM_FORMAT_U24 SNDRV_PCM_FORMAT_U24_BE
+#define SNDRV_PCM_FORMAT_S32 SNDRV_PCM_FORMAT_S32_BE
+#define SNDRV_PCM_FORMAT_U32 SNDRV_PCM_FORMAT_U32_BE
+#define SNDRV_PCM_FORMAT_FLOAT SNDRV_PCM_FORMAT_FLOAT_BE
+#define SNDRV_PCM_FORMAT_FLOAT64 SNDRV_PCM_FORMAT_FLOAT64_BE
+#define SNDRV_PCM_FORMAT_IEC958_SUBFRAME SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE
+#define SNDRV_PCM_FORMAT_S20 SNDRV_PCM_FORMAT_S20_BE
+#define SNDRV_PCM_FORMAT_U20 SNDRV_PCM_FORMAT_U20_BE
+#endif
+typedef int __bitwise snd_pcm_subformat_t;
+#define SNDRV_PCM_SUBFORMAT_STD ((__force snd_pcm_subformat_t) 0)
+#define SNDRV_PCM_SUBFORMAT_LAST SNDRV_PCM_SUBFORMAT_STD
+#define SNDRV_PCM_INFO_MMAP 0x00000001
+#define SNDRV_PCM_INFO_MMAP_VALID 0x00000002
+#define SNDRV_PCM_INFO_DOUBLE 0x00000004
+#define SNDRV_PCM_INFO_BATCH 0x00000010
+#define SNDRV_PCM_INFO_SYNC_APPLPTR 0x00000020
+#define SNDRV_PCM_INFO_INTERLEAVED 0x00000100
+#define SNDRV_PCM_INFO_NONINTERLEAVED 0x00000200
+#define SNDRV_PCM_INFO_COMPLEX 0x00000400
+#define SNDRV_PCM_INFO_BLOCK_TRANSFER 0x00010000
+#define SNDRV_PCM_INFO_OVERRANGE 0x00020000
+#define SNDRV_PCM_INFO_RESUME 0x00040000
+#define SNDRV_PCM_INFO_PAUSE 0x00080000
+#define SNDRV_PCM_INFO_HALF_DUPLEX 0x00100000
+#define SNDRV_PCM_INFO_JOINT_DUPLEX 0x00200000
+#define SNDRV_PCM_INFO_SYNC_START 0x00400000
+#define SNDRV_PCM_INFO_NO_PERIOD_WAKEUP 0x00800000
+#define SNDRV_PCM_INFO_HAS_WALL_CLOCK 0x01000000
+#define SNDRV_PCM_INFO_HAS_LINK_ATIME 0x01000000
+#define SNDRV_PCM_INFO_HAS_LINK_ABSOLUTE_ATIME 0x02000000
+#define SNDRV_PCM_INFO_HAS_LINK_ESTIMATED_ATIME 0x04000000
+#define SNDRV_PCM_INFO_HAS_LINK_SYNCHRONIZED_ATIME 0x08000000
+#define SNDRV_PCM_INFO_EXPLICIT_SYNC 0x10000000
+#define SNDRV_PCM_INFO_DRAIN_TRIGGER 0x40000000
+#define SNDRV_PCM_INFO_FIFO_IN_FRAMES 0x80000000
+#if __BITS_PER_LONG == 32 && defined(__USE_TIME_BITS64)
+#define __SND_STRUCT_TIME64
+#endif
+typedef int __bitwise snd_pcm_state_t;
+#define SNDRV_PCM_STATE_OPEN ((__force snd_pcm_state_t) 0)
+#define SNDRV_PCM_STATE_SETUP ((__force snd_pcm_state_t) 1)
+#define SNDRV_PCM_STATE_PREPARED ((__force snd_pcm_state_t) 2)
+#define SNDRV_PCM_STATE_RUNNING ((__force snd_pcm_state_t) 3)
+#define SNDRV_PCM_STATE_XRUN ((__force snd_pcm_state_t) 4)
+#define SNDRV_PCM_STATE_DRAINING ((__force snd_pcm_state_t) 5)
+#define SNDRV_PCM_STATE_PAUSED ((__force snd_pcm_state_t) 6)
+#define SNDRV_PCM_STATE_SUSPENDED ((__force snd_pcm_state_t) 7)
+#define SNDRV_PCM_STATE_DISCONNECTED ((__force snd_pcm_state_t) 8)
+#define SNDRV_PCM_STATE_LAST SNDRV_PCM_STATE_DISCONNECTED
+enum {
+  SNDRV_PCM_MMAP_OFFSET_DATA = 0x00000000,
+  SNDRV_PCM_MMAP_OFFSET_STATUS_OLD = 0x80000000,
+  SNDRV_PCM_MMAP_OFFSET_CONTROL_OLD = 0x81000000,
+  SNDRV_PCM_MMAP_OFFSET_STATUS_NEW = 0x82000000,
+  SNDRV_PCM_MMAP_OFFSET_CONTROL_NEW = 0x83000000,
+#ifdef __SND_STRUCT_TIME64
+  SNDRV_PCM_MMAP_OFFSET_STATUS = SNDRV_PCM_MMAP_OFFSET_STATUS_NEW,
+  SNDRV_PCM_MMAP_OFFSET_CONTROL = SNDRV_PCM_MMAP_OFFSET_CONTROL_NEW,
+#else
+  SNDRV_PCM_MMAP_OFFSET_STATUS = SNDRV_PCM_MMAP_OFFSET_STATUS_OLD,
+  SNDRV_PCM_MMAP_OFFSET_CONTROL = SNDRV_PCM_MMAP_OFFSET_CONTROL_OLD,
+#endif
+};
+union snd_pcm_sync_id {
+  unsigned char id[16];
+  unsigned short id16[8];
+  unsigned int id32[4];
+};
+struct snd_pcm_info {
+  unsigned int device;
+  unsigned int subdevice;
+  int stream;
+  int card;
+  unsigned char id[64];
+  unsigned char name[80];
+  unsigned char subname[32];
+  int dev_class;
+  int dev_subclass;
+  unsigned int subdevices_count;
+  unsigned int subdevices_avail;
+  union snd_pcm_sync_id sync;
+  unsigned char reserved[64];
+};
+typedef int snd_pcm_hw_param_t;
+#define SNDRV_PCM_HW_PARAM_ACCESS 0
+#define SNDRV_PCM_HW_PARAM_FORMAT 1
+#define SNDRV_PCM_HW_PARAM_SUBFORMAT 2
+#define SNDRV_PCM_HW_PARAM_FIRST_MASK SNDRV_PCM_HW_PARAM_ACCESS
+#define SNDRV_PCM_HW_PARAM_LAST_MASK SNDRV_PCM_HW_PARAM_SUBFORMAT
+#define SNDRV_PCM_HW_PARAM_SAMPLE_BITS 8
+#define SNDRV_PCM_HW_PARAM_FRAME_BITS 9
+#define SNDRV_PCM_HW_PARAM_CHANNELS 10
+#define SNDRV_PCM_HW_PARAM_RATE 11
+#define SNDRV_PCM_HW_PARAM_PERIOD_TIME 12
+#define SNDRV_PCM_HW_PARAM_PERIOD_SIZE 13
+#define SNDRV_PCM_HW_PARAM_PERIOD_BYTES 14
+#define SNDRV_PCM_HW_PARAM_PERIODS 15
+#define SNDRV_PCM_HW_PARAM_BUFFER_TIME 16
+#define SNDRV_PCM_HW_PARAM_BUFFER_SIZE 17
+#define SNDRV_PCM_HW_PARAM_BUFFER_BYTES 18
+#define SNDRV_PCM_HW_PARAM_TICK_TIME 19
+#define SNDRV_PCM_HW_PARAM_FIRST_INTERVAL SNDRV_PCM_HW_PARAM_SAMPLE_BITS
+#define SNDRV_PCM_HW_PARAM_LAST_INTERVAL SNDRV_PCM_HW_PARAM_TICK_TIME
+#define SNDRV_PCM_HW_PARAMS_NORESAMPLE (1 << 0)
+#define SNDRV_PCM_HW_PARAMS_EXPORT_BUFFER (1 << 1)
+#define SNDRV_PCM_HW_PARAMS_NO_PERIOD_WAKEUP (1 << 2)
+struct snd_interval {
+  unsigned int min, max;
+  unsigned int openmin : 1, openmax : 1, integer : 1, empty : 1;
+};
+#define SNDRV_MASK_MAX 256
+struct snd_mask {
+  __u32 bits[(SNDRV_MASK_MAX + 31) / 32];
+};
+struct snd_pcm_hw_params {
+  unsigned int flags;
+  struct snd_mask masks[SNDRV_PCM_HW_PARAM_LAST_MASK - SNDRV_PCM_HW_PARAM_FIRST_MASK + 1];
+  struct snd_mask mres[5];
+  struct snd_interval intervals[SNDRV_PCM_HW_PARAM_LAST_INTERVAL - SNDRV_PCM_HW_PARAM_FIRST_INTERVAL + 1];
+  struct snd_interval ires[9];
+  unsigned int rmask;
+  unsigned int cmask;
+  unsigned int info;
+  unsigned int msbits;
+  unsigned int rate_num;
+  unsigned int rate_den;
+  snd_pcm_uframes_t fifo_size;
+  unsigned char reserved[64];
+};
+enum {
+  SNDRV_PCM_TSTAMP_NONE = 0,
+  SNDRV_PCM_TSTAMP_ENABLE,
+  SNDRV_PCM_TSTAMP_LAST = SNDRV_PCM_TSTAMP_ENABLE,
+};
+struct snd_pcm_sw_params {
+  int tstamp_mode;
+  unsigned int period_step;
+  unsigned int sleep_min;
+  snd_pcm_uframes_t avail_min;
+  snd_pcm_uframes_t xfer_align;
+  snd_pcm_uframes_t start_threshold;
+  snd_pcm_uframes_t stop_threshold;
+  snd_pcm_uframes_t silence_threshold;
+  snd_pcm_uframes_t silence_size;
+  snd_pcm_uframes_t boundary;
+  unsigned int proto;
+  unsigned int tstamp_type;
+  unsigned char reserved[56];
+};
+struct snd_pcm_channel_info {
+  unsigned int channel;
+  __kernel_off_t offset;
+  unsigned int first;
+  unsigned int step;
+};
+enum {
+  SNDRV_PCM_AUDIO_TSTAMP_TYPE_COMPAT = 0,
+  SNDRV_PCM_AUDIO_TSTAMP_TYPE_DEFAULT = 1,
+  SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK = 2,
+  SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_ABSOLUTE = 3,
+  SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_ESTIMATED = 4,
+  SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_SYNCHRONIZED = 5,
+  SNDRV_PCM_AUDIO_TSTAMP_TYPE_LAST = SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_SYNCHRONIZED
+};
+typedef struct {
+  unsigned char pad[sizeof(time_t) - sizeof(int)];
+} __time_pad;
+struct snd_pcm_status {
+  snd_pcm_state_t state;
+  __time_pad pad1;
+  struct timespec trigger_tstamp;
+  struct timespec tstamp;
+  snd_pcm_uframes_t appl_ptr;
+  snd_pcm_uframes_t hw_ptr;
+  snd_pcm_sframes_t delay;
+  snd_pcm_uframes_t avail;
+  snd_pcm_uframes_t avail_max;
+  snd_pcm_uframes_t overrange;
+  snd_pcm_state_t suspended_state;
+  __u32 audio_tstamp_data;
+  struct timespec audio_tstamp;
+  struct timespec driver_tstamp;
+  __u32 audio_tstamp_accuracy;
+  unsigned char reserved[52 - 2 * sizeof(struct timespec)];
+};
+#ifdef __SND_STRUCT_TIME64
+#define __snd_pcm_mmap_status64 snd_pcm_mmap_status
+#define __snd_pcm_mmap_control64 snd_pcm_mmap_control
+#define __snd_pcm_sync_ptr64 snd_pcm_sync_ptr
+#define __snd_timespec64 timespec
+struct __snd_timespec {
+  __s32 tv_sec;
+  __s32 tv_nsec;
+};
+#else
+#define __snd_pcm_mmap_status snd_pcm_mmap_status
+#define __snd_pcm_mmap_control snd_pcm_mmap_control
+#define __snd_pcm_sync_ptr snd_pcm_sync_ptr
+#define __snd_timespec timespec
+struct __snd_timespec64 {
+  __s64 tv_sec;
+  __s64 tv_nsec;
+};
+#endif
+struct __snd_pcm_mmap_status {
+  snd_pcm_state_t state;
+  int pad1;
+  snd_pcm_uframes_t hw_ptr;
+  struct __snd_timespec tstamp;
+  snd_pcm_state_t suspended_state;
+  struct __snd_timespec audio_tstamp;
+};
+struct __snd_pcm_mmap_control {
+  snd_pcm_uframes_t appl_ptr;
+  snd_pcm_uframes_t avail_min;
+};
+#define SNDRV_PCM_SYNC_PTR_HWSYNC (1 << 0)
+#define SNDRV_PCM_SYNC_PTR_APPL (1 << 1)
+#define SNDRV_PCM_SYNC_PTR_AVAIL_MIN (1 << 2)
+struct __snd_pcm_sync_ptr {
+  unsigned int flags;
+  union {
+    struct __snd_pcm_mmap_status status;
+    unsigned char reserved[64];
+  } s;
+  union {
+    struct __snd_pcm_mmap_control control;
+    unsigned char reserved[64];
+  } c;
+};
+#if defined(__BYTE_ORDER) ? __BYTE_ORDER == __BIG_ENDIAN : defined(__BIG_ENDIAN)
+typedef char __pad_before_uframe[sizeof(__u64) - sizeof(snd_pcm_uframes_t)];
+typedef char __pad_after_uframe[0];
+#endif
+#if defined(__BYTE_ORDER) ? __BYTE_ORDER == __LITTLE_ENDIAN : defined(__LITTLE_ENDIAN)
+typedef char __pad_before_uframe[0];
+typedef char __pad_after_uframe[sizeof(__u64) - sizeof(snd_pcm_uframes_t)];
+#endif
+struct __snd_pcm_mmap_status64 {
+  snd_pcm_state_t state;
+  __u32 pad1;
+  __pad_before_uframe __pad1;
+  snd_pcm_uframes_t hw_ptr;
+  __pad_after_uframe __pad2;
+  struct __snd_timespec64 tstamp;
+  snd_pcm_state_t suspended_state;
+  __u32 pad3;
+  struct __snd_timespec64 audio_tstamp;
+};
+struct __snd_pcm_mmap_control64 {
+  __pad_before_uframe __pad1;
+  snd_pcm_uframes_t appl_ptr;
+  __pad_before_uframe __pad2;
+  __pad_before_uframe __pad3;
+  snd_pcm_uframes_t avail_min;
+  __pad_after_uframe __pad4;
+};
+struct __snd_pcm_sync_ptr64 {
+  __u32 flags;
+  __u32 pad1;
+  union {
+    struct __snd_pcm_mmap_status64 status;
+    unsigned char reserved[64];
+  } s;
+  union {
+    struct __snd_pcm_mmap_control64 control;
+    unsigned char reserved[64];
+  } c;
+};
+struct snd_xferi {
+  snd_pcm_sframes_t result;
+  void __user * buf;
+  snd_pcm_uframes_t frames;
+};
+struct snd_xfern {
+  snd_pcm_sframes_t result;
+  void __user * __user * bufs;
+  snd_pcm_uframes_t frames;
+};
+enum {
+  SNDRV_PCM_TSTAMP_TYPE_GETTIMEOFDAY = 0,
+  SNDRV_PCM_TSTAMP_TYPE_MONOTONIC,
+  SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW,
+  SNDRV_PCM_TSTAMP_TYPE_LAST = SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW,
+};
+enum {
+  SNDRV_CHMAP_UNKNOWN = 0,
+  SNDRV_CHMAP_NA,
+  SNDRV_CHMAP_MONO,
+  SNDRV_CHMAP_FL,
+  SNDRV_CHMAP_FR,
+  SNDRV_CHMAP_RL,
+  SNDRV_CHMAP_RR,
+  SNDRV_CHMAP_FC,
+  SNDRV_CHMAP_LFE,
+  SNDRV_CHMAP_SL,
+  SNDRV_CHMAP_SR,
+  SNDRV_CHMAP_RC,
+  SNDRV_CHMAP_FLC,
+  SNDRV_CHMAP_FRC,
+  SNDRV_CHMAP_RLC,
+  SNDRV_CHMAP_RRC,
+  SNDRV_CHMAP_FLW,
+  SNDRV_CHMAP_FRW,
+  SNDRV_CHMAP_FLH,
+  SNDRV_CHMAP_FCH,
+  SNDRV_CHMAP_FRH,
+  SNDRV_CHMAP_TC,
+  SNDRV_CHMAP_TFL,
+  SNDRV_CHMAP_TFR,
+  SNDRV_CHMAP_TFC,
+  SNDRV_CHMAP_TRL,
+  SNDRV_CHMAP_TRR,
+  SNDRV_CHMAP_TRC,
+  SNDRV_CHMAP_TFLC,
+  SNDRV_CHMAP_TFRC,
+  SNDRV_CHMAP_TSL,
+  SNDRV_CHMAP_TSR,
+  SNDRV_CHMAP_LLFE,
+  SNDRV_CHMAP_RLFE,
+  SNDRV_CHMAP_BC,
+  SNDRV_CHMAP_BLC,
+  SNDRV_CHMAP_BRC,
+  SNDRV_CHMAP_LAST = SNDRV_CHMAP_BRC,
+};
+#define SNDRV_CHMAP_POSITION_MASK 0xffff
+#define SNDRV_CHMAP_PHASE_INVERSE (0x01 << 16)
+#define SNDRV_CHMAP_DRIVER_SPEC (0x02 << 16)
+#define SNDRV_PCM_IOCTL_PVERSION _IOR('A', 0x00, int)
+#define SNDRV_PCM_IOCTL_INFO _IOR('A', 0x01, struct snd_pcm_info)
+#define SNDRV_PCM_IOCTL_TSTAMP _IOW('A', 0x02, int)
+#define SNDRV_PCM_IOCTL_TTSTAMP _IOW('A', 0x03, int)
+#define SNDRV_PCM_IOCTL_USER_PVERSION _IOW('A', 0x04, int)
+#define SNDRV_PCM_IOCTL_HW_REFINE _IOWR('A', 0x10, struct snd_pcm_hw_params)
+#define SNDRV_PCM_IOCTL_HW_PARAMS _IOWR('A', 0x11, struct snd_pcm_hw_params)
+#define SNDRV_PCM_IOCTL_HW_FREE _IO('A', 0x12)
+#define SNDRV_PCM_IOCTL_SW_PARAMS _IOWR('A', 0x13, struct snd_pcm_sw_params)
+#define SNDRV_PCM_IOCTL_STATUS _IOR('A', 0x20, struct snd_pcm_status)
+#define SNDRV_PCM_IOCTL_DELAY _IOR('A', 0x21, snd_pcm_sframes_t)
+#define SNDRV_PCM_IOCTL_HWSYNC _IO('A', 0x22)
+#define __SNDRV_PCM_IOCTL_SYNC_PTR _IOWR('A', 0x23, struct __snd_pcm_sync_ptr)
+#define __SNDRV_PCM_IOCTL_SYNC_PTR64 _IOWR('A', 0x23, struct __snd_pcm_sync_ptr64)
+#define SNDRV_PCM_IOCTL_SYNC_PTR _IOWR('A', 0x23, struct snd_pcm_sync_ptr)
+#define SNDRV_PCM_IOCTL_STATUS_EXT _IOWR('A', 0x24, struct snd_pcm_status)
+#define SNDRV_PCM_IOCTL_CHANNEL_INFO _IOR('A', 0x32, struct snd_pcm_channel_info)
+#define SNDRV_PCM_IOCTL_PREPARE _IO('A', 0x40)
+#define SNDRV_PCM_IOCTL_RESET _IO('A', 0x41)
+#define SNDRV_PCM_IOCTL_START _IO('A', 0x42)
+#define SNDRV_PCM_IOCTL_DROP _IO('A', 0x43)
+#define SNDRV_PCM_IOCTL_DRAIN _IO('A', 0x44)
+#define SNDRV_PCM_IOCTL_PAUSE _IOW('A', 0x45, int)
+#define SNDRV_PCM_IOCTL_REWIND _IOW('A', 0x46, snd_pcm_uframes_t)
+#define SNDRV_PCM_IOCTL_RESUME _IO('A', 0x47)
+#define SNDRV_PCM_IOCTL_XRUN _IO('A', 0x48)
+#define SNDRV_PCM_IOCTL_FORWARD _IOW('A', 0x49, snd_pcm_uframes_t)
+#define SNDRV_PCM_IOCTL_WRITEI_FRAMES _IOW('A', 0x50, struct snd_xferi)
+#define SNDRV_PCM_IOCTL_READI_FRAMES _IOR('A', 0x51, struct snd_xferi)
+#define SNDRV_PCM_IOCTL_WRITEN_FRAMES _IOW('A', 0x52, struct snd_xfern)
+#define SNDRV_PCM_IOCTL_READN_FRAMES _IOR('A', 0x53, struct snd_xfern)
+#define SNDRV_PCM_IOCTL_LINK _IOW('A', 0x60, int)
+#define SNDRV_PCM_IOCTL_UNLINK _IO('A', 0x61)
+#define SNDRV_RAWMIDI_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 2)
+enum {
+  SNDRV_RAWMIDI_STREAM_OUTPUT = 0,
+  SNDRV_RAWMIDI_STREAM_INPUT,
+  SNDRV_RAWMIDI_STREAM_LAST = SNDRV_RAWMIDI_STREAM_INPUT,
+};
+#define SNDRV_RAWMIDI_INFO_OUTPUT 0x00000001
+#define SNDRV_RAWMIDI_INFO_INPUT 0x00000002
+#define SNDRV_RAWMIDI_INFO_DUPLEX 0x00000004
+struct snd_rawmidi_info {
+  unsigned int device;
+  unsigned int subdevice;
+  int stream;
+  int card;
+  unsigned int flags;
+  unsigned char id[64];
+  unsigned char name[80];
+  unsigned char subname[32];
+  unsigned int subdevices_count;
+  unsigned int subdevices_avail;
+  unsigned char reserved[64];
+};
+#define SNDRV_RAWMIDI_MODE_FRAMING_MASK (7 << 0)
+#define SNDRV_RAWMIDI_MODE_FRAMING_SHIFT 0
+#define SNDRV_RAWMIDI_MODE_FRAMING_NONE (0 << 0)
+#define SNDRV_RAWMIDI_MODE_FRAMING_TSTAMP (1 << 0)
+#define SNDRV_RAWMIDI_MODE_CLOCK_MASK (7 << 3)
+#define SNDRV_RAWMIDI_MODE_CLOCK_SHIFT 3
+#define SNDRV_RAWMIDI_MODE_CLOCK_NONE (0 << 3)
+#define SNDRV_RAWMIDI_MODE_CLOCK_REALTIME (1 << 3)
+#define SNDRV_RAWMIDI_MODE_CLOCK_MONOTONIC (2 << 3)
+#define SNDRV_RAWMIDI_MODE_CLOCK_MONOTONIC_RAW (3 << 3)
+#define SNDRV_RAWMIDI_FRAMING_DATA_LENGTH 16
+struct snd_rawmidi_framing_tstamp {
+  __u8 frame_type;
+  __u8 length;
+  __u8 reserved[2];
+  __u32 tv_nsec;
+  __u64 tv_sec;
+  __u8 data[SNDRV_RAWMIDI_FRAMING_DATA_LENGTH];
+} __packed;
+struct snd_rawmidi_params {
+  int stream;
+  size_t buffer_size;
+  size_t avail_min;
+  unsigned int no_active_sensing : 1;
+  unsigned int mode;
+  unsigned char reserved[12];
+};
+struct snd_rawmidi_status {
+  int stream;
+  __time_pad pad1;
+  struct timespec tstamp;
+  size_t avail;
+  size_t xruns;
+  unsigned char reserved[16];
+};
+#define SNDRV_RAWMIDI_IOCTL_PVERSION _IOR('W', 0x00, int)
+#define SNDRV_RAWMIDI_IOCTL_INFO _IOR('W', 0x01, struct snd_rawmidi_info)
+#define SNDRV_RAWMIDI_IOCTL_USER_PVERSION _IOW('W', 0x02, int)
+#define SNDRV_RAWMIDI_IOCTL_PARAMS _IOWR('W', 0x10, struct snd_rawmidi_params)
+#define SNDRV_RAWMIDI_IOCTL_STATUS _IOWR('W', 0x20, struct snd_rawmidi_status)
+#define SNDRV_RAWMIDI_IOCTL_DROP _IOW('W', 0x30, int)
+#define SNDRV_RAWMIDI_IOCTL_DRAIN _IOW('W', 0x31, int)
+#define SNDRV_TIMER_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 7)
+enum {
+  SNDRV_TIMER_CLASS_NONE = - 1,
+  SNDRV_TIMER_CLASS_SLAVE = 0,
+  SNDRV_TIMER_CLASS_GLOBAL,
+  SNDRV_TIMER_CLASS_CARD,
+  SNDRV_TIMER_CLASS_PCM,
+  SNDRV_TIMER_CLASS_LAST = SNDRV_TIMER_CLASS_PCM,
+};
+enum {
+  SNDRV_TIMER_SCLASS_NONE = 0,
+  SNDRV_TIMER_SCLASS_APPLICATION,
+  SNDRV_TIMER_SCLASS_SEQUENCER,
+  SNDRV_TIMER_SCLASS_OSS_SEQUENCER,
+  SNDRV_TIMER_SCLASS_LAST = SNDRV_TIMER_SCLASS_OSS_SEQUENCER,
+};
+#define SNDRV_TIMER_GLOBAL_SYSTEM 0
+#define SNDRV_TIMER_GLOBAL_RTC 1
+#define SNDRV_TIMER_GLOBAL_HPET 2
+#define SNDRV_TIMER_GLOBAL_HRTIMER 3
+#define SNDRV_TIMER_FLG_SLAVE (1 << 0)
+struct snd_timer_id {
+  int dev_class;
+  int dev_sclass;
+  int card;
+  int device;
+  int subdevice;
+};
+struct snd_timer_ginfo {
+  struct snd_timer_id tid;
+  unsigned int flags;
+  int card;
+  unsigned char id[64];
+  unsigned char name[80];
+  unsigned long reserved0;
+  unsigned long resolution;
+  unsigned long resolution_min;
+  unsigned long resolution_max;
+  unsigned int clients;
+  unsigned char reserved[32];
+};
+struct snd_timer_gparams {
+  struct snd_timer_id tid;
+  unsigned long period_num;
+  unsigned long period_den;
+  unsigned char reserved[32];
+};
+struct snd_timer_gstatus {
+  struct snd_timer_id tid;
+  unsigned long resolution;
+  unsigned long resolution_num;
+  unsigned long resolution_den;
+  unsigned char reserved[32];
+};
+struct snd_timer_select {
+  struct snd_timer_id id;
+  unsigned char reserved[32];
+};
+struct snd_timer_info {
+  unsigned int flags;
+  int card;
+  unsigned char id[64];
+  unsigned char name[80];
+  unsigned long reserved0;
+  unsigned long resolution;
+  unsigned char reserved[64];
+};
+#define SNDRV_TIMER_PSFLG_AUTO (1 << 0)
+#define SNDRV_TIMER_PSFLG_EXCLUSIVE (1 << 1)
+#define SNDRV_TIMER_PSFLG_EARLY_EVENT (1 << 2)
+struct snd_timer_params {
+  unsigned int flags;
+  unsigned int ticks;
+  unsigned int queue_size;
+  unsigned int reserved0;
+  unsigned int filter;
+  unsigned char reserved[60];
+};
+struct snd_timer_status {
+  struct timespec tstamp;
+  unsigned int resolution;
+  unsigned int lost;
+  unsigned int overrun;
+  unsigned int queue;
+  unsigned char reserved[64];
+};
+#define SNDRV_TIMER_IOCTL_PVERSION _IOR('T', 0x00, int)
+#define SNDRV_TIMER_IOCTL_NEXT_DEVICE _IOWR('T', 0x01, struct snd_timer_id)
+#define SNDRV_TIMER_IOCTL_TREAD_OLD _IOW('T', 0x02, int)
+#define SNDRV_TIMER_IOCTL_GINFO _IOWR('T', 0x03, struct snd_timer_ginfo)
+#define SNDRV_TIMER_IOCTL_GPARAMS _IOW('T', 0x04, struct snd_timer_gparams)
+#define SNDRV_TIMER_IOCTL_GSTATUS _IOWR('T', 0x05, struct snd_timer_gstatus)
+#define SNDRV_TIMER_IOCTL_SELECT _IOW('T', 0x10, struct snd_timer_select)
+#define SNDRV_TIMER_IOCTL_INFO _IOR('T', 0x11, struct snd_timer_info)
+#define SNDRV_TIMER_IOCTL_PARAMS _IOW('T', 0x12, struct snd_timer_params)
+#define SNDRV_TIMER_IOCTL_STATUS _IOR('T', 0x14, struct snd_timer_status)
+#define SNDRV_TIMER_IOCTL_START _IO('T', 0xa0)
+#define SNDRV_TIMER_IOCTL_STOP _IO('T', 0xa1)
+#define SNDRV_TIMER_IOCTL_CONTINUE _IO('T', 0xa2)
+#define SNDRV_TIMER_IOCTL_PAUSE _IO('T', 0xa3)
+#define SNDRV_TIMER_IOCTL_TREAD64 _IOW('T', 0xa4, int)
+#if __BITS_PER_LONG == 64
+#define SNDRV_TIMER_IOCTL_TREAD SNDRV_TIMER_IOCTL_TREAD_OLD
+#else
+#define SNDRV_TIMER_IOCTL_TREAD ((sizeof(__kernel_long_t) >= sizeof(time_t)) ? SNDRV_TIMER_IOCTL_TREAD_OLD : SNDRV_TIMER_IOCTL_TREAD64)
+#endif
+struct snd_timer_read {
+  unsigned int resolution;
+  unsigned int ticks;
+};
+enum {
+  SNDRV_TIMER_EVENT_RESOLUTION = 0,
+  SNDRV_TIMER_EVENT_TICK,
+  SNDRV_TIMER_EVENT_START,
+  SNDRV_TIMER_EVENT_STOP,
+  SNDRV_TIMER_EVENT_CONTINUE,
+  SNDRV_TIMER_EVENT_PAUSE,
+  SNDRV_TIMER_EVENT_EARLY,
+  SNDRV_TIMER_EVENT_SUSPEND,
+  SNDRV_TIMER_EVENT_RESUME,
+  SNDRV_TIMER_EVENT_MSTART = SNDRV_TIMER_EVENT_START + 10,
+  SNDRV_TIMER_EVENT_MSTOP = SNDRV_TIMER_EVENT_STOP + 10,
+  SNDRV_TIMER_EVENT_MCONTINUE = SNDRV_TIMER_EVENT_CONTINUE + 10,
+  SNDRV_TIMER_EVENT_MPAUSE = SNDRV_TIMER_EVENT_PAUSE + 10,
+  SNDRV_TIMER_EVENT_MSUSPEND = SNDRV_TIMER_EVENT_SUSPEND + 10,
+  SNDRV_TIMER_EVENT_MRESUME = SNDRV_TIMER_EVENT_RESUME + 10,
+};
+struct snd_timer_tread {
+  int event;
+  __time_pad pad1;
+  struct timespec tstamp;
+  unsigned int val;
+  __time_pad pad2;
+};
+#define SNDRV_CTL_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 8)
+struct snd_ctl_card_info {
+  int card;
+  int pad;
+  unsigned char id[16];
+  unsigned char driver[16];
+  unsigned char name[32];
+  unsigned char longname[80];
+  unsigned char reserved_[16];
+  unsigned char mixername[80];
+  unsigned char components[128];
+};
+typedef int __bitwise snd_ctl_elem_type_t;
+#define SNDRV_CTL_ELEM_TYPE_NONE ((__force snd_ctl_elem_type_t) 0)
+#define SNDRV_CTL_ELEM_TYPE_BOOLEAN ((__force snd_ctl_elem_type_t) 1)
+#define SNDRV_CTL_ELEM_TYPE_INTEGER ((__force snd_ctl_elem_type_t) 2)
+#define SNDRV_CTL_ELEM_TYPE_ENUMERATED ((__force snd_ctl_elem_type_t) 3)
+#define SNDRV_CTL_ELEM_TYPE_BYTES ((__force snd_ctl_elem_type_t) 4)
+#define SNDRV_CTL_ELEM_TYPE_IEC958 ((__force snd_ctl_elem_type_t) 5)
+#define SNDRV_CTL_ELEM_TYPE_INTEGER64 ((__force snd_ctl_elem_type_t) 6)
+#define SNDRV_CTL_ELEM_TYPE_LAST SNDRV_CTL_ELEM_TYPE_INTEGER64
+typedef int __bitwise snd_ctl_elem_iface_t;
+#define SNDRV_CTL_ELEM_IFACE_CARD ((__force snd_ctl_elem_iface_t) 0)
+#define SNDRV_CTL_ELEM_IFACE_HWDEP ((__force snd_ctl_elem_iface_t) 1)
+#define SNDRV_CTL_ELEM_IFACE_MIXER ((__force snd_ctl_elem_iface_t) 2)
+#define SNDRV_CTL_ELEM_IFACE_PCM ((__force snd_ctl_elem_iface_t) 3)
+#define SNDRV_CTL_ELEM_IFACE_RAWMIDI ((__force snd_ctl_elem_iface_t) 4)
+#define SNDRV_CTL_ELEM_IFACE_TIMER ((__force snd_ctl_elem_iface_t) 5)
+#define SNDRV_CTL_ELEM_IFACE_SEQUENCER ((__force snd_ctl_elem_iface_t) 6)
+#define SNDRV_CTL_ELEM_IFACE_LAST SNDRV_CTL_ELEM_IFACE_SEQUENCER
+#define SNDRV_CTL_ELEM_ACCESS_READ (1 << 0)
+#define SNDRV_CTL_ELEM_ACCESS_WRITE (1 << 1)
+#define SNDRV_CTL_ELEM_ACCESS_READWRITE (SNDRV_CTL_ELEM_ACCESS_READ | SNDRV_CTL_ELEM_ACCESS_WRITE)
+#define SNDRV_CTL_ELEM_ACCESS_VOLATILE (1 << 2)
+#define SNDRV_CTL_ELEM_ACCESS_TLV_READ (1 << 4)
+#define SNDRV_CTL_ELEM_ACCESS_TLV_WRITE (1 << 5)
+#define SNDRV_CTL_ELEM_ACCESS_TLV_READWRITE (SNDRV_CTL_ELEM_ACCESS_TLV_READ | SNDRV_CTL_ELEM_ACCESS_TLV_WRITE)
+#define SNDRV_CTL_ELEM_ACCESS_TLV_COMMAND (1 << 6)
+#define SNDRV_CTL_ELEM_ACCESS_INACTIVE (1 << 8)
+#define SNDRV_CTL_ELEM_ACCESS_LOCK (1 << 9)
+#define SNDRV_CTL_ELEM_ACCESS_OWNER (1 << 10)
+#define SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK (1 << 28)
+#define SNDRV_CTL_ELEM_ACCESS_USER (1 << 29)
+#define SNDRV_CTL_POWER_D0 0x0000
+#define SNDRV_CTL_POWER_D1 0x0100
+#define SNDRV_CTL_POWER_D2 0x0200
+#define SNDRV_CTL_POWER_D3 0x0300
+#define SNDRV_CTL_POWER_D3hot (SNDRV_CTL_POWER_D3 | 0x0000)
+#define SNDRV_CTL_POWER_D3cold (SNDRV_CTL_POWER_D3 | 0x0001)
+#define SNDRV_CTL_ELEM_ID_NAME_MAXLEN 44
+struct snd_ctl_elem_id {
+  unsigned int numid;
+  snd_ctl_elem_iface_t iface;
+  unsigned int device;
+  unsigned int subdevice;
+  unsigned char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+  unsigned int index;
+};
+struct snd_ctl_elem_list {
+  unsigned int offset;
+  unsigned int space;
+  unsigned int used;
+  unsigned int count;
+  struct snd_ctl_elem_id __user * pids;
+  unsigned char reserved[50];
+};
+struct snd_ctl_elem_info {
+  struct snd_ctl_elem_id id;
+  snd_ctl_elem_type_t type;
+  unsigned int access;
+  unsigned int count;
+  __kernel_pid_t owner;
+  union {
+    struct {
+      long min;
+      long max;
+      long step;
+    } integer;
+    struct {
+      long long min;
+      long long max;
+      long long step;
+    } integer64;
+    struct {
+      unsigned int items;
+      unsigned int item;
+      char name[64];
+      __u64 names_ptr;
+      unsigned int names_length;
+    } enumerated;
+    unsigned char reserved[128];
+  } value;
+  unsigned char reserved[64];
+};
+struct snd_ctl_elem_value {
+  struct snd_ctl_elem_id id;
+  unsigned int indirect : 1;
+  union {
+    union {
+      long value[128];
+      long * value_ptr;
+    } integer;
+    union {
+      long long value[64];
+      long long * value_ptr;
+    } integer64;
+    union {
+      unsigned int item[128];
+      unsigned int * item_ptr;
+    } enumerated;
+    union {
+      unsigned char data[512];
+      unsigned char * data_ptr;
+    } bytes;
+    struct snd_aes_iec958 iec958;
+  } value;
+  unsigned char reserved[128];
+};
+struct snd_ctl_tlv {
+  unsigned int numid;
+  unsigned int length;
+  unsigned int tlv[0];
+};
+#define SNDRV_CTL_IOCTL_PVERSION _IOR('U', 0x00, int)
+#define SNDRV_CTL_IOCTL_CARD_INFO _IOR('U', 0x01, struct snd_ctl_card_info)
+#define SNDRV_CTL_IOCTL_ELEM_LIST _IOWR('U', 0x10, struct snd_ctl_elem_list)
+#define SNDRV_CTL_IOCTL_ELEM_INFO _IOWR('U', 0x11, struct snd_ctl_elem_info)
+#define SNDRV_CTL_IOCTL_ELEM_READ _IOWR('U', 0x12, struct snd_ctl_elem_value)
+#define SNDRV_CTL_IOCTL_ELEM_WRITE _IOWR('U', 0x13, struct snd_ctl_elem_value)
+#define SNDRV_CTL_IOCTL_ELEM_LOCK _IOW('U', 0x14, struct snd_ctl_elem_id)
+#define SNDRV_CTL_IOCTL_ELEM_UNLOCK _IOW('U', 0x15, struct snd_ctl_elem_id)
+#define SNDRV_CTL_IOCTL_SUBSCRIBE_EVENTS _IOWR('U', 0x16, int)
+#define SNDRV_CTL_IOCTL_ELEM_ADD _IOWR('U', 0x17, struct snd_ctl_elem_info)
+#define SNDRV_CTL_IOCTL_ELEM_REPLACE _IOWR('U', 0x18, struct snd_ctl_elem_info)
+#define SNDRV_CTL_IOCTL_ELEM_REMOVE _IOWR('U', 0x19, struct snd_ctl_elem_id)
+#define SNDRV_CTL_IOCTL_TLV_READ _IOWR('U', 0x1a, struct snd_ctl_tlv)
+#define SNDRV_CTL_IOCTL_TLV_WRITE _IOWR('U', 0x1b, struct snd_ctl_tlv)
+#define SNDRV_CTL_IOCTL_TLV_COMMAND _IOWR('U', 0x1c, struct snd_ctl_tlv)
+#define SNDRV_CTL_IOCTL_HWDEP_NEXT_DEVICE _IOWR('U', 0x20, int)
+#define SNDRV_CTL_IOCTL_HWDEP_INFO _IOR('U', 0x21, struct snd_hwdep_info)
+#define SNDRV_CTL_IOCTL_PCM_NEXT_DEVICE _IOR('U', 0x30, int)
+#define SNDRV_CTL_IOCTL_PCM_INFO _IOWR('U', 0x31, struct snd_pcm_info)
+#define SNDRV_CTL_IOCTL_PCM_PREFER_SUBDEVICE _IOW('U', 0x32, int)
+#define SNDRV_CTL_IOCTL_RAWMIDI_NEXT_DEVICE _IOWR('U', 0x40, int)
+#define SNDRV_CTL_IOCTL_RAWMIDI_INFO _IOWR('U', 0x41, struct snd_rawmidi_info)
+#define SNDRV_CTL_IOCTL_RAWMIDI_PREFER_SUBDEVICE _IOW('U', 0x42, int)
+#define SNDRV_CTL_IOCTL_POWER _IOWR('U', 0xd0, int)
+#define SNDRV_CTL_IOCTL_POWER_STATE _IOR('U', 0xd1, int)
+enum sndrv_ctl_event_type {
+  SNDRV_CTL_EVENT_ELEM = 0,
+  SNDRV_CTL_EVENT_LAST = SNDRV_CTL_EVENT_ELEM,
+};
+#define SNDRV_CTL_EVENT_MASK_VALUE (1 << 0)
+#define SNDRV_CTL_EVENT_MASK_INFO (1 << 1)
+#define SNDRV_CTL_EVENT_MASK_ADD (1 << 2)
+#define SNDRV_CTL_EVENT_MASK_TLV (1 << 3)
+#define SNDRV_CTL_EVENT_MASK_REMOVE (~0U)
+struct snd_ctl_event {
+  int type;
+  union {
+    struct {
+      unsigned int mask;
+      struct snd_ctl_elem_id id;
+    } elem;
+    unsigned char data8[60];
+  } data;
+};
+#define SNDRV_CTL_NAME_NONE ""
+#define SNDRV_CTL_NAME_PLAYBACK "Playback "
+#define SNDRV_CTL_NAME_CAPTURE "Capture "
+#define SNDRV_CTL_NAME_IEC958_NONE ""
+#define SNDRV_CTL_NAME_IEC958_SWITCH "Switch"
+#define SNDRV_CTL_NAME_IEC958_VOLUME "Volume"
+#define SNDRV_CTL_NAME_IEC958_DEFAULT "Default"
+#define SNDRV_CTL_NAME_IEC958_MASK "Mask"
+#define SNDRV_CTL_NAME_IEC958_CON_MASK "Con Mask"
+#define SNDRV_CTL_NAME_IEC958_PRO_MASK "Pro Mask"
+#define SNDRV_CTL_NAME_IEC958_PCM_STREAM "PCM Stream"
+#define SNDRV_CTL_NAME_IEC958(expl,direction,what) "IEC958 " expl SNDRV_CTL_NAME_ ##direction SNDRV_CTL_NAME_IEC958_ ##what
+#endif
diff --git a/x86_64-linux-musl/include/sound/asound_fm.h b/x86_64-linux-musl/include/sound/asound_fm.h
new file mode 100644
index 0000000..03909ae
--- /dev/null
+++ b/x86_64-linux-musl/include/sound/asound_fm.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 __SOUND_ASOUND_FM_H
+#define __SOUND_ASOUND_FM_H
+#define SNDRV_DM_FM_MODE_OPL2 0x00
+#define SNDRV_DM_FM_MODE_OPL3 0x01
+struct snd_dm_fm_info {
+  unsigned char fm_mode;
+  unsigned char rhythm;
+};
+struct snd_dm_fm_voice {
+  unsigned char op;
+  unsigned char voice;
+  unsigned char am;
+  unsigned char vibrato;
+  unsigned char do_sustain;
+  unsigned char kbd_scale;
+  unsigned char harmonic;
+  unsigned char scale_level;
+  unsigned char volume;
+  unsigned char attack;
+  unsigned char decay;
+  unsigned char sustain;
+  unsigned char release;
+  unsigned char feedback;
+  unsigned char connection;
+  unsigned char left;
+  unsigned char right;
+  unsigned char waveform;
+};
+struct snd_dm_fm_note {
+  unsigned char voice;
+  unsigned char octave;
+  unsigned int fnum;
+  unsigned char key_on;
+};
+struct snd_dm_fm_params {
+  unsigned char am_depth;
+  unsigned char vib_depth;
+  unsigned char kbd_split;
+  unsigned char rhythm;
+  unsigned char bass;
+  unsigned char snare;
+  unsigned char tomtom;
+  unsigned char cymbal;
+  unsigned char hihat;
+};
+#define SNDRV_DM_FM_IOCTL_INFO _IOR('H', 0x20, struct snd_dm_fm_info)
+#define SNDRV_DM_FM_IOCTL_RESET _IO('H', 0x21)
+#define SNDRV_DM_FM_IOCTL_PLAY_NOTE _IOW('H', 0x22, struct snd_dm_fm_note)
+#define SNDRV_DM_FM_IOCTL_SET_VOICE _IOW('H', 0x23, struct snd_dm_fm_voice)
+#define SNDRV_DM_FM_IOCTL_SET_PARAMS _IOW('H', 0x24, struct snd_dm_fm_params)
+#define SNDRV_DM_FM_IOCTL_SET_MODE _IOW('H', 0x25, int)
+#define SNDRV_DM_FM_IOCTL_SET_CONNECTION _IOW('H', 0x26, int)
+#define SNDRV_DM_FM_IOCTL_CLEAR_PATCHES _IO('H', 0x40)
+#define SNDRV_DM_FM_OSS_IOCTL_RESET 0x20
+#define SNDRV_DM_FM_OSS_IOCTL_PLAY_NOTE 0x21
+#define SNDRV_DM_FM_OSS_IOCTL_SET_VOICE 0x22
+#define SNDRV_DM_FM_OSS_IOCTL_SET_PARAMS 0x23
+#define SNDRV_DM_FM_OSS_IOCTL_SET_MODE 0x24
+#define SNDRV_DM_FM_OSS_IOCTL_SET_OPL 0x25
+#define FM_KEY_SBI "SBI\032"
+#define FM_KEY_2OP "2OP\032"
+#define FM_KEY_4OP "4OP\032"
+struct sbi_patch {
+  unsigned char prog;
+  unsigned char bank;
+  char key[4];
+  char name[25];
+  char extension[7];
+  unsigned char data[32];
+};
+#endif
diff --git a/x86_64-linux-musl/include/sound/compress_offload.h b/x86_64-linux-musl/include/sound/compress_offload.h
new file mode 100644
index 0000000..60688bc
--- /dev/null
+++ b/x86_64-linux-musl/include/sound/compress_offload.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 __COMPRESS_OFFLOAD_H
+#define __COMPRESS_OFFLOAD_H
+#include <linux/types.h>
+#include <sound/asound.h>
+#include <sound/compress_params.h>
+#define SNDRV_COMPRESS_VERSION SNDRV_PROTOCOL_VERSION(0, 2, 0)
+struct snd_compressed_buffer {
+  __u32 fragment_size;
+  __u32 fragments;
+} __attribute__((packed, aligned(4)));
+struct snd_compr_params {
+  struct snd_compressed_buffer buffer;
+  struct snd_codec codec;
+  __u8 no_wake_mode;
+} __attribute__((packed, aligned(4)));
+struct snd_compr_tstamp {
+  __u32 byte_offset;
+  __u32 copied_total;
+  __u32 pcm_frames;
+  __u32 pcm_io_frames;
+  __u32 sampling_rate;
+} __attribute__((packed, aligned(4)));
+struct snd_compr_avail {
+  __u64 avail;
+  struct snd_compr_tstamp tstamp;
+} __attribute__((packed, aligned(4)));
+enum snd_compr_direction {
+  SND_COMPRESS_PLAYBACK = 0,
+  SND_COMPRESS_CAPTURE
+};
+struct snd_compr_caps {
+  __u32 num_codecs;
+  __u32 direction;
+  __u32 min_fragment_size;
+  __u32 max_fragment_size;
+  __u32 min_fragments;
+  __u32 max_fragments;
+  __u32 codecs[MAX_NUM_CODECS];
+  __u32 reserved[11];
+} __attribute__((packed, aligned(4)));
+struct snd_compr_codec_caps {
+  __u32 codec;
+  __u32 num_descriptors;
+  struct snd_codec_desc descriptor[MAX_NUM_CODEC_DESCRIPTORS];
+} __attribute__((packed, aligned(4)));
+enum sndrv_compress_encoder {
+  SNDRV_COMPRESS_ENCODER_PADDING = 1,
+  SNDRV_COMPRESS_ENCODER_DELAY = 2,
+};
+struct snd_compr_metadata {
+  __u32 key;
+  __u32 value[8];
+} __attribute__((packed, aligned(4)));
+#define SNDRV_COMPRESS_IOCTL_VERSION _IOR('C', 0x00, int)
+#define SNDRV_COMPRESS_GET_CAPS _IOWR('C', 0x10, struct snd_compr_caps)
+#define SNDRV_COMPRESS_GET_CODEC_CAPS _IOWR('C', 0x11, struct snd_compr_codec_caps)
+#define SNDRV_COMPRESS_SET_PARAMS _IOW('C', 0x12, struct snd_compr_params)
+#define SNDRV_COMPRESS_GET_PARAMS _IOR('C', 0x13, struct snd_codec)
+#define SNDRV_COMPRESS_SET_METADATA _IOW('C', 0x14, struct snd_compr_metadata)
+#define SNDRV_COMPRESS_GET_METADATA _IOWR('C', 0x15, struct snd_compr_metadata)
+#define SNDRV_COMPRESS_TSTAMP _IOR('C', 0x20, struct snd_compr_tstamp)
+#define SNDRV_COMPRESS_AVAIL _IOR('C', 0x21, struct snd_compr_avail)
+#define SNDRV_COMPRESS_PAUSE _IO('C', 0x30)
+#define SNDRV_COMPRESS_RESUME _IO('C', 0x31)
+#define SNDRV_COMPRESS_START _IO('C', 0x32)
+#define SNDRV_COMPRESS_STOP _IO('C', 0x33)
+#define SNDRV_COMPRESS_DRAIN _IO('C', 0x34)
+#define SNDRV_COMPRESS_NEXT_TRACK _IO('C', 0x35)
+#define SNDRV_COMPRESS_PARTIAL_DRAIN _IO('C', 0x36)
+#define SND_COMPR_TRIGGER_DRAIN 7
+#define SND_COMPR_TRIGGER_NEXT_TRACK 8
+#define SND_COMPR_TRIGGER_PARTIAL_DRAIN 9
+#endif
diff --git a/x86_64-linux-musl/include/sound/compress_params.h b/x86_64-linux-musl/include/sound/compress_params.h
new file mode 100644
index 0000000..ee6c000
--- /dev/null
+++ b/x86_64-linux-musl/include/sound/compress_params.h
@@ -0,0 +1,242 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __SND_COMPRESS_PARAMS_H
+#define __SND_COMPRESS_PARAMS_H
+#include <linux/types.h>
+#define MAX_NUM_CODECS 32
+#define MAX_NUM_CODEC_DESCRIPTORS 32
+#define MAX_NUM_BITRATES 32
+#define MAX_NUM_SAMPLE_RATES 32
+#define SND_AUDIOCODEC_PCM ((__u32) 0x00000001)
+#define SND_AUDIOCODEC_MP3 ((__u32) 0x00000002)
+#define SND_AUDIOCODEC_AMR ((__u32) 0x00000003)
+#define SND_AUDIOCODEC_AMRWB ((__u32) 0x00000004)
+#define SND_AUDIOCODEC_AMRWBPLUS ((__u32) 0x00000005)
+#define SND_AUDIOCODEC_AAC ((__u32) 0x00000006)
+#define SND_AUDIOCODEC_WMA ((__u32) 0x00000007)
+#define SND_AUDIOCODEC_REAL ((__u32) 0x00000008)
+#define SND_AUDIOCODEC_VORBIS ((__u32) 0x00000009)
+#define SND_AUDIOCODEC_FLAC ((__u32) 0x0000000A)
+#define SND_AUDIOCODEC_IEC61937 ((__u32) 0x0000000B)
+#define SND_AUDIOCODEC_G723_1 ((__u32) 0x0000000C)
+#define SND_AUDIOCODEC_G729 ((__u32) 0x0000000D)
+#define SND_AUDIOCODEC_BESPOKE ((__u32) 0x0000000E)
+#define SND_AUDIOCODEC_ALAC ((__u32) 0x0000000F)
+#define SND_AUDIOCODEC_APE ((__u32) 0x00000010)
+#define SND_AUDIOCODEC_MAX SND_AUDIOCODEC_APE
+#define SND_AUDIOPROFILE_PCM ((__u32) 0x00000001)
+#define SND_AUDIOCHANMODE_MP3_MONO ((__u32) 0x00000001)
+#define SND_AUDIOCHANMODE_MP3_STEREO ((__u32) 0x00000002)
+#define SND_AUDIOCHANMODE_MP3_JOINTSTEREO ((__u32) 0x00000004)
+#define SND_AUDIOCHANMODE_MP3_DUAL ((__u32) 0x00000008)
+#define SND_AUDIOPROFILE_AMR ((__u32) 0x00000001)
+#define SND_AUDIOMODE_AMR_DTX_OFF ((__u32) 0x00000001)
+#define SND_AUDIOMODE_AMR_VAD1 ((__u32) 0x00000002)
+#define SND_AUDIOMODE_AMR_VAD2 ((__u32) 0x00000004)
+#define SND_AUDIOSTREAMFORMAT_UNDEFINED ((__u32) 0x00000000)
+#define SND_AUDIOSTREAMFORMAT_CONFORMANCE ((__u32) 0x00000001)
+#define SND_AUDIOSTREAMFORMAT_IF1 ((__u32) 0x00000002)
+#define SND_AUDIOSTREAMFORMAT_IF2 ((__u32) 0x00000004)
+#define SND_AUDIOSTREAMFORMAT_FSF ((__u32) 0x00000008)
+#define SND_AUDIOSTREAMFORMAT_RTPPAYLOAD ((__u32) 0x00000010)
+#define SND_AUDIOSTREAMFORMAT_ITU ((__u32) 0x00000020)
+#define SND_AUDIOPROFILE_AMRWB ((__u32) 0x00000001)
+#define SND_AUDIOMODE_AMRWB_DTX_OFF ((__u32) 0x00000001)
+#define SND_AUDIOMODE_AMRWB_VAD1 ((__u32) 0x00000002)
+#define SND_AUDIOMODE_AMRWB_VAD2 ((__u32) 0x00000004)
+#define SND_AUDIOPROFILE_AMRWBPLUS ((__u32) 0x00000001)
+#define SND_AUDIOPROFILE_AAC ((__u32) 0x00000001)
+#define SND_AUDIOMODE_AAC_MAIN ((__u32) 0x00000001)
+#define SND_AUDIOMODE_AAC_LC ((__u32) 0x00000002)
+#define SND_AUDIOMODE_AAC_SSR ((__u32) 0x00000004)
+#define SND_AUDIOMODE_AAC_LTP ((__u32) 0x00000008)
+#define SND_AUDIOMODE_AAC_HE ((__u32) 0x00000010)
+#define SND_AUDIOMODE_AAC_SCALABLE ((__u32) 0x00000020)
+#define SND_AUDIOMODE_AAC_ERLC ((__u32) 0x00000040)
+#define SND_AUDIOMODE_AAC_LD ((__u32) 0x00000080)
+#define SND_AUDIOMODE_AAC_HE_PS ((__u32) 0x00000100)
+#define SND_AUDIOMODE_AAC_HE_MPS ((__u32) 0x00000200)
+#define SND_AUDIOSTREAMFORMAT_MP2ADTS ((__u32) 0x00000001)
+#define SND_AUDIOSTREAMFORMAT_MP4ADTS ((__u32) 0x00000002)
+#define SND_AUDIOSTREAMFORMAT_MP4LOAS ((__u32) 0x00000004)
+#define SND_AUDIOSTREAMFORMAT_MP4LATM ((__u32) 0x00000008)
+#define SND_AUDIOSTREAMFORMAT_ADIF ((__u32) 0x00000010)
+#define SND_AUDIOSTREAMFORMAT_MP4FF ((__u32) 0x00000020)
+#define SND_AUDIOSTREAMFORMAT_RAW ((__u32) 0x00000040)
+#define SND_AUDIOPROFILE_WMA7 ((__u32) 0x00000001)
+#define SND_AUDIOPROFILE_WMA8 ((__u32) 0x00000002)
+#define SND_AUDIOPROFILE_WMA9 ((__u32) 0x00000004)
+#define SND_AUDIOPROFILE_WMA10 ((__u32) 0x00000008)
+#define SND_AUDIOPROFILE_WMA9_PRO ((__u32) 0x00000010)
+#define SND_AUDIOPROFILE_WMA9_LOSSLESS ((__u32) 0x00000020)
+#define SND_AUDIOPROFILE_WMA10_LOSSLESS ((__u32) 0x00000040)
+#define SND_AUDIOMODE_WMA_LEVEL1 ((__u32) 0x00000001)
+#define SND_AUDIOMODE_WMA_LEVEL2 ((__u32) 0x00000002)
+#define SND_AUDIOMODE_WMA_LEVEL3 ((__u32) 0x00000004)
+#define SND_AUDIOMODE_WMA_LEVEL4 ((__u32) 0x00000008)
+#define SND_AUDIOMODE_WMAPRO_LEVELM0 ((__u32) 0x00000010)
+#define SND_AUDIOMODE_WMAPRO_LEVELM1 ((__u32) 0x00000020)
+#define SND_AUDIOMODE_WMAPRO_LEVELM2 ((__u32) 0x00000040)
+#define SND_AUDIOMODE_WMAPRO_LEVELM3 ((__u32) 0x00000080)
+#define SND_AUDIOSTREAMFORMAT_WMA_ASF ((__u32) 0x00000001)
+#define SND_AUDIOSTREAMFORMAT_WMA_NOASF_HDR ((__u32) 0x00000002)
+#define SND_AUDIOPROFILE_REALAUDIO ((__u32) 0x00000001)
+#define SND_AUDIOMODE_REALAUDIO_G2 ((__u32) 0x00000001)
+#define SND_AUDIOMODE_REALAUDIO_8 ((__u32) 0x00000002)
+#define SND_AUDIOMODE_REALAUDIO_10 ((__u32) 0x00000004)
+#define SND_AUDIOMODE_REALAUDIO_SURROUND ((__u32) 0x00000008)
+#define SND_AUDIOPROFILE_VORBIS ((__u32) 0x00000001)
+#define SND_AUDIOMODE_VORBIS ((__u32) 0x00000001)
+#define SND_AUDIOPROFILE_FLAC ((__u32) 0x00000001)
+#define SND_AUDIOMODE_FLAC_LEVEL0 ((__u32) 0x00000001)
+#define SND_AUDIOMODE_FLAC_LEVEL1 ((__u32) 0x00000002)
+#define SND_AUDIOMODE_FLAC_LEVEL2 ((__u32) 0x00000004)
+#define SND_AUDIOMODE_FLAC_LEVEL3 ((__u32) 0x00000008)
+#define SND_AUDIOMODE_FLAC_LEVEL4 ((__u32) 0x00000010)
+#define SND_AUDIOMODE_FLAC_LEVEL5 ((__u32) 0x00000020)
+#define SND_AUDIOMODE_FLAC_LEVEL6 ((__u32) 0x00000040)
+#define SND_AUDIOMODE_FLAC_LEVEL7 ((__u32) 0x00000080)
+#define SND_AUDIOMODE_FLAC_LEVEL8 ((__u32) 0x00000100)
+#define SND_AUDIOSTREAMFORMAT_FLAC ((__u32) 0x00000001)
+#define SND_AUDIOSTREAMFORMAT_FLAC_OGG ((__u32) 0x00000002)
+#define SND_AUDIOPROFILE_IEC61937 ((__u32) 0x00000001)
+#define SND_AUDIOPROFILE_IEC61937_SPDIF ((__u32) 0x00000002)
+#define SND_AUDIOMODE_IEC_REF_STREAM_HEADER ((__u32) 0x00000000)
+#define SND_AUDIOMODE_IEC_LPCM ((__u32) 0x00000001)
+#define SND_AUDIOMODE_IEC_AC3 ((__u32) 0x00000002)
+#define SND_AUDIOMODE_IEC_MPEG1 ((__u32) 0x00000004)
+#define SND_AUDIOMODE_IEC_MP3 ((__u32) 0x00000008)
+#define SND_AUDIOMODE_IEC_MPEG2 ((__u32) 0x00000010)
+#define SND_AUDIOMODE_IEC_AACLC ((__u32) 0x00000020)
+#define SND_AUDIOMODE_IEC_DTS ((__u32) 0x00000040)
+#define SND_AUDIOMODE_IEC_ATRAC ((__u32) 0x00000080)
+#define SND_AUDIOMODE_IEC_SACD ((__u32) 0x00000100)
+#define SND_AUDIOMODE_IEC_EAC3 ((__u32) 0x00000200)
+#define SND_AUDIOMODE_IEC_DTS_HD ((__u32) 0x00000400)
+#define SND_AUDIOMODE_IEC_MLP ((__u32) 0x00000800)
+#define SND_AUDIOMODE_IEC_DST ((__u32) 0x00001000)
+#define SND_AUDIOMODE_IEC_WMAPRO ((__u32) 0x00002000)
+#define SND_AUDIOMODE_IEC_REF_CXT ((__u32) 0x00004000)
+#define SND_AUDIOMODE_IEC_HE_AAC ((__u32) 0x00008000)
+#define SND_AUDIOMODE_IEC_HE_AAC2 ((__u32) 0x00010000)
+#define SND_AUDIOMODE_IEC_MPEG_SURROUND ((__u32) 0x00020000)
+#define SND_AUDIOPROFILE_G723_1 ((__u32) 0x00000001)
+#define SND_AUDIOMODE_G723_1_ANNEX_A ((__u32) 0x00000001)
+#define SND_AUDIOMODE_G723_1_ANNEX_B ((__u32) 0x00000002)
+#define SND_AUDIOMODE_G723_1_ANNEX_C ((__u32) 0x00000004)
+#define SND_AUDIOPROFILE_G729 ((__u32) 0x00000001)
+#define SND_AUDIOMODE_G729_ANNEX_A ((__u32) 0x00000001)
+#define SND_AUDIOMODE_G729_ANNEX_B ((__u32) 0x00000002)
+#define SND_RATECONTROLMODE_CONSTANTBITRATE ((__u32) 0x00000001)
+#define SND_RATECONTROLMODE_VARIABLEBITRATE ((__u32) 0x00000002)
+struct snd_enc_wma {
+  __u32 super_block_align;
+};
+struct snd_enc_vorbis {
+  __s32 quality;
+  __u32 managed;
+  __u32 max_bit_rate;
+  __u32 min_bit_rate;
+  __u32 downmix;
+} __attribute__((packed, aligned(4)));
+struct snd_enc_real {
+  __u32 quant_bits;
+  __u32 start_region;
+  __u32 num_regions;
+} __attribute__((packed, aligned(4)));
+struct snd_enc_flac {
+  __u32 num;
+  __u32 gain;
+} __attribute__((packed, aligned(4)));
+struct snd_enc_generic {
+  __u32 bw;
+  __s32 reserved[15];
+} __attribute__((packed, aligned(4)));
+struct snd_dec_flac {
+  __u16 sample_size;
+  __u16 min_blk_size;
+  __u16 max_blk_size;
+  __u16 min_frame_size;
+  __u16 max_frame_size;
+  __u16 reserved;
+} __attribute__((packed, aligned(4)));
+struct snd_dec_wma {
+  __u32 encoder_option;
+  __u32 adv_encoder_option;
+  __u32 adv_encoder_option2;
+  __u32 reserved;
+} __attribute__((packed, aligned(4)));
+struct snd_dec_alac {
+  __u32 frame_length;
+  __u8 compatible_version;
+  __u8 pb;
+  __u8 mb;
+  __u8 kb;
+  __u32 max_run;
+  __u32 max_frame_bytes;
+} __attribute__((packed, aligned(4)));
+struct snd_dec_ape {
+  __u16 compatible_version;
+  __u16 compression_level;
+  __u32 format_flags;
+  __u32 blocks_per_frame;
+  __u32 final_frame_blocks;
+  __u32 total_frames;
+  __u32 seek_table_present;
+} __attribute__((packed, aligned(4)));
+union snd_codec_options {
+  struct snd_enc_wma wma;
+  struct snd_enc_vorbis vorbis;
+  struct snd_enc_real real;
+  struct snd_enc_flac flac;
+  struct snd_enc_generic generic;
+  struct snd_dec_flac flac_d;
+  struct snd_dec_wma wma_d;
+  struct snd_dec_alac alac_d;
+  struct snd_dec_ape ape_d;
+} __attribute__((packed, aligned(4)));
+struct snd_codec_desc {
+  __u32 max_ch;
+  __u32 sample_rates[MAX_NUM_SAMPLE_RATES];
+  __u32 num_sample_rates;
+  __u32 bit_rate[MAX_NUM_BITRATES];
+  __u32 num_bitrates;
+  __u32 rate_control;
+  __u32 profiles;
+  __u32 modes;
+  __u32 formats;
+  __u32 min_buffer;
+  __u32 reserved[15];
+} __attribute__((packed, aligned(4)));
+struct snd_codec {
+  __u32 id;
+  __u32 ch_in;
+  __u32 ch_out;
+  __u32 sample_rate;
+  __u32 bit_rate;
+  __u32 rate_control;
+  __u32 profile;
+  __u32 level;
+  __u32 ch_mode;
+  __u32 format;
+  __u32 align;
+  union snd_codec_options options;
+  __u32 reserved[3];
+} __attribute__((packed, aligned(4)));
+#endif
diff --git a/x86_64-linux-musl/include/sound/emu10k1.h b/x86_64-linux-musl/include/sound/emu10k1.h
new file mode 100644
index 0000000..483309e
--- /dev/null
+++ b/x86_64-linux-musl/include/sound/emu10k1.h
@@ -0,0 +1,323 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__SOUND_EMU10K1_H
+#define _UAPI__SOUND_EMU10K1_H
+#ifdef __linux__
+#include <linux/types.h>
+#endif
+#define EMU10K1_CARD_CREATIVE 0x00000000
+#define EMU10K1_CARD_EMUAPS 0x00000001
+#define EMU10K1_FX8010_PCM_COUNT 8
+#define __EMU10K1_DECLARE_BITMAP(name,bits) unsigned long name[(bits) / (sizeof(unsigned long) * 8)]
+#define iMAC0 0x00
+#define iMAC1 0x01
+#define iMAC2 0x02
+#define iMAC3 0x03
+#define iMACINT0 0x04
+#define iMACINT1 0x05
+#define iACC3 0x06
+#define iMACMV 0x07
+#define iANDXOR 0x08
+#define iTSTNEG 0x09
+#define iLIMITGE 0x0a
+#define iLIMITLT 0x0b
+#define iLOG 0x0c
+#define iEXP 0x0d
+#define iINTERP 0x0e
+#define iSKIP 0x0f
+#define FXBUS(x) (0x00 + (x))
+#define EXTIN(x) (0x10 + (x))
+#define EXTOUT(x) (0x20 + (x))
+#define FXBUS2(x) (0x30 + (x))
+#define C_00000000 0x40
+#define C_00000001 0x41
+#define C_00000002 0x42
+#define C_00000003 0x43
+#define C_00000004 0x44
+#define C_00000008 0x45
+#define C_00000010 0x46
+#define C_00000020 0x47
+#define C_00000100 0x48
+#define C_00010000 0x49
+#define C_00080000 0x4a
+#define C_10000000 0x4b
+#define C_20000000 0x4c
+#define C_40000000 0x4d
+#define C_80000000 0x4e
+#define C_7fffffff 0x4f
+#define C_ffffffff 0x50
+#define C_fffffffe 0x51
+#define C_c0000000 0x52
+#define C_4f1bbcdc 0x53
+#define C_5a7ef9db 0x54
+#define C_00100000 0x55
+#define GPR_ACCU 0x56
+#define GPR_COND 0x57
+#define GPR_NOISE0 0x58
+#define GPR_NOISE1 0x59
+#define GPR_IRQ 0x5a
+#define GPR_DBAC 0x5b
+#define GPR(x) (FXGPREGBASE + (x))
+#define ITRAM_DATA(x) (TANKMEMDATAREGBASE + 0x00 + (x))
+#define ETRAM_DATA(x) (TANKMEMDATAREGBASE + 0x80 + (x))
+#define ITRAM_ADDR(x) (TANKMEMADDRREGBASE + 0x00 + (x))
+#define ETRAM_ADDR(x) (TANKMEMADDRREGBASE + 0x80 + (x))
+#define A_ITRAM_DATA(x) (TANKMEMDATAREGBASE + 0x00 + (x))
+#define A_ETRAM_DATA(x) (TANKMEMDATAREGBASE + 0xc0 + (x))
+#define A_ITRAM_ADDR(x) (TANKMEMADDRREGBASE + 0x00 + (x))
+#define A_ETRAM_ADDR(x) (TANKMEMADDRREGBASE + 0xc0 + (x))
+#define A_ITRAM_CTL(x) (A_TANKMEMCTLREGBASE + 0x00 + (x))
+#define A_ETRAM_CTL(x) (A_TANKMEMCTLREGBASE + 0xc0 + (x))
+#define A_FXBUS(x) (0x00 + (x))
+#define A_EXTIN(x) (0x40 + (x))
+#define A_P16VIN(x) (0x50 + (x))
+#define A_EXTOUT(x) (0x60 + (x))
+#define A_FXBUS2(x) (0x80 + (x))
+#define A_EMU32OUTH(x) (0xa0 + (x))
+#define A_EMU32OUTL(x) (0xb0 + (x))
+#define A3_EMU32IN(x) (0x160 + (x))
+#define A3_EMU32OUT(x) (0x1E0 + (x))
+#define A_GPR(x) (A_FXGPREGBASE + (x))
+#define CC_REG_NORMALIZED C_00000001
+#define CC_REG_BORROW C_00000002
+#define CC_REG_MINUS C_00000004
+#define CC_REG_ZERO C_00000008
+#define CC_REG_SATURATE C_00000010
+#define CC_REG_NONZERO C_00000100
+#define FXBUS_PCM_LEFT 0x00
+#define FXBUS_PCM_RIGHT 0x01
+#define FXBUS_PCM_LEFT_REAR 0x02
+#define FXBUS_PCM_RIGHT_REAR 0x03
+#define FXBUS_MIDI_LEFT 0x04
+#define FXBUS_MIDI_RIGHT 0x05
+#define FXBUS_PCM_CENTER 0x06
+#define FXBUS_PCM_LFE 0x07
+#define FXBUS_PCM_LEFT_FRONT 0x08
+#define FXBUS_PCM_RIGHT_FRONT 0x09
+#define FXBUS_MIDI_REVERB 0x0c
+#define FXBUS_MIDI_CHORUS 0x0d
+#define FXBUS_PCM_LEFT_SIDE 0x0e
+#define FXBUS_PCM_RIGHT_SIDE 0x0f
+#define FXBUS_PT_LEFT 0x14
+#define FXBUS_PT_RIGHT 0x15
+#define EXTIN_AC97_L 0x00
+#define EXTIN_AC97_R 0x01
+#define EXTIN_SPDIF_CD_L 0x02
+#define EXTIN_SPDIF_CD_R 0x03
+#define EXTIN_ZOOM_L 0x04
+#define EXTIN_ZOOM_R 0x05
+#define EXTIN_TOSLINK_L 0x06
+#define EXTIN_TOSLINK_R 0x07
+#define EXTIN_LINE1_L 0x08
+#define EXTIN_LINE1_R 0x09
+#define EXTIN_COAX_SPDIF_L 0x0a
+#define EXTIN_COAX_SPDIF_R 0x0b
+#define EXTIN_LINE2_L 0x0c
+#define EXTIN_LINE2_R 0x0d
+#define EXTOUT_AC97_L 0x00
+#define EXTOUT_AC97_R 0x01
+#define EXTOUT_TOSLINK_L 0x02
+#define EXTOUT_TOSLINK_R 0x03
+#define EXTOUT_AC97_CENTER 0x04
+#define EXTOUT_AC97_LFE 0x05
+#define EXTOUT_HEADPHONE_L 0x06
+#define EXTOUT_HEADPHONE_R 0x07
+#define EXTOUT_REAR_L 0x08
+#define EXTOUT_REAR_R 0x09
+#define EXTOUT_ADC_CAP_L 0x0a
+#define EXTOUT_ADC_CAP_R 0x0b
+#define EXTOUT_MIC_CAP 0x0c
+#define EXTOUT_AC97_REAR_L 0x0d
+#define EXTOUT_AC97_REAR_R 0x0e
+#define EXTOUT_ACENTER 0x11
+#define EXTOUT_ALFE 0x12
+#define A_EXTIN_AC97_L 0x00
+#define A_EXTIN_AC97_R 0x01
+#define A_EXTIN_SPDIF_CD_L 0x02
+#define A_EXTIN_SPDIF_CD_R 0x03
+#define A_EXTIN_OPT_SPDIF_L 0x04
+#define A_EXTIN_OPT_SPDIF_R 0x05
+#define A_EXTIN_LINE2_L 0x08
+#define A_EXTIN_LINE2_R 0x09
+#define A_EXTIN_ADC_L 0x0a
+#define A_EXTIN_ADC_R 0x0b
+#define A_EXTIN_AUX2_L 0x0c
+#define A_EXTIN_AUX2_R 0x0d
+#define A_EXTOUT_FRONT_L 0x00
+#define A_EXTOUT_FRONT_R 0x01
+#define A_EXTOUT_CENTER 0x02
+#define A_EXTOUT_LFE 0x03
+#define A_EXTOUT_HEADPHONE_L 0x04
+#define A_EXTOUT_HEADPHONE_R 0x05
+#define A_EXTOUT_REAR_L 0x06
+#define A_EXTOUT_REAR_R 0x07
+#define A_EXTOUT_AFRONT_L 0x08
+#define A_EXTOUT_AFRONT_R 0x09
+#define A_EXTOUT_ACENTER 0x0a
+#define A_EXTOUT_ALFE 0x0b
+#define A_EXTOUT_ASIDE_L 0x0c
+#define A_EXTOUT_ASIDE_R 0x0d
+#define A_EXTOUT_AREAR_L 0x0e
+#define A_EXTOUT_AREAR_R 0x0f
+#define A_EXTOUT_AC97_L 0x10
+#define A_EXTOUT_AC97_R 0x11
+#define A_EXTOUT_ADC_CAP_L 0x16
+#define A_EXTOUT_ADC_CAP_R 0x17
+#define A_EXTOUT_MIC_CAP 0x18
+#define A_C_00000000 0xc0
+#define A_C_00000001 0xc1
+#define A_C_00000002 0xc2
+#define A_C_00000003 0xc3
+#define A_C_00000004 0xc4
+#define A_C_00000008 0xc5
+#define A_C_00000010 0xc6
+#define A_C_00000020 0xc7
+#define A_C_00000100 0xc8
+#define A_C_00010000 0xc9
+#define A_C_00000800 0xca
+#define A_C_10000000 0xcb
+#define A_C_20000000 0xcc
+#define A_C_40000000 0xcd
+#define A_C_80000000 0xce
+#define A_C_7fffffff 0xcf
+#define A_C_ffffffff 0xd0
+#define A_C_fffffffe 0xd1
+#define A_C_c0000000 0xd2
+#define A_C_4f1bbcdc 0xd3
+#define A_C_5a7ef9db 0xd4
+#define A_C_00100000 0xd5
+#define A_GPR_ACCU 0xd6
+#define A_GPR_COND 0xd7
+#define A_GPR_NOISE0 0xd8
+#define A_GPR_NOISE1 0xd9
+#define A_GPR_IRQ 0xda
+#define A_GPR_DBAC 0xdb
+#define A_GPR_DBACE 0xde
+#define EMU10K1_DBG_ZC 0x80000000
+#define EMU10K1_DBG_SATURATION_OCCURED 0x02000000
+#define EMU10K1_DBG_SATURATION_ADDR 0x01ff0000
+#define EMU10K1_DBG_SINGLE_STEP 0x00008000
+#define EMU10K1_DBG_STEP 0x00004000
+#define EMU10K1_DBG_CONDITION_CODE 0x00003e00
+#define EMU10K1_DBG_SINGLE_STEP_ADDR 0x000001ff
+#define TANKMEMADDRREG_ADDR_MASK 0x000fffff
+#define TANKMEMADDRREG_CLEAR 0x00800000
+#define TANKMEMADDRREG_ALIGN 0x00400000
+#define TANKMEMADDRREG_WRITE 0x00200000
+#define TANKMEMADDRREG_READ 0x00100000
+struct snd_emu10k1_fx8010_info {
+  unsigned int internal_tram_size;
+  unsigned int external_tram_size;
+  char fxbus_names[16][32];
+  char extin_names[16][32];
+  char extout_names[32][32];
+  unsigned int gpr_controls;
+};
+#define EMU10K1_GPR_TRANSLATION_NONE 0
+#define EMU10K1_GPR_TRANSLATION_TABLE100 1
+#define EMU10K1_GPR_TRANSLATION_BASS 2
+#define EMU10K1_GPR_TRANSLATION_TREBLE 3
+#define EMU10K1_GPR_TRANSLATION_ONOFF 4
+enum emu10k1_ctl_elem_iface {
+  EMU10K1_CTL_ELEM_IFACE_MIXER = 2,
+  EMU10K1_CTL_ELEM_IFACE_PCM = 3,
+};
+struct emu10k1_ctl_elem_id {
+  unsigned int pad;
+  int iface;
+  unsigned int device;
+  unsigned int subdevice;
+  unsigned char name[44];
+  unsigned int index;
+};
+struct snd_emu10k1_fx8010_control_gpr {
+  struct emu10k1_ctl_elem_id id;
+  unsigned int vcount;
+  unsigned int count;
+  unsigned short gpr[32];
+  unsigned int value[32];
+  unsigned int min;
+  unsigned int max;
+  unsigned int translation;
+  const unsigned int * tlv;
+};
+struct snd_emu10k1_fx8010_control_old_gpr {
+  struct emu10k1_ctl_elem_id id;
+  unsigned int vcount;
+  unsigned int count;
+  unsigned short gpr[32];
+  unsigned int value[32];
+  unsigned int min;
+  unsigned int max;
+  unsigned int translation;
+};
+struct snd_emu10k1_fx8010_code {
+  char name[128];
+  __EMU10K1_DECLARE_BITMAP(gpr_valid, 0x200);
+  __u32 * gpr_map;
+  unsigned int gpr_add_control_count;
+  struct snd_emu10k1_fx8010_control_gpr * gpr_add_controls;
+  unsigned int gpr_del_control_count;
+  struct emu10k1_ctl_elem_id * gpr_del_controls;
+  unsigned int gpr_list_control_count;
+  unsigned int gpr_list_control_total;
+  struct snd_emu10k1_fx8010_control_gpr * gpr_list_controls;
+  __EMU10K1_DECLARE_BITMAP(tram_valid, 0x100);
+  __u32 * tram_data_map;
+  __u32 * tram_addr_map;
+  __EMU10K1_DECLARE_BITMAP(code_valid, 1024);
+  __u32 * code;
+};
+struct snd_emu10k1_fx8010_tram {
+  unsigned int address;
+  unsigned int size;
+  unsigned int * samples;
+};
+struct snd_emu10k1_fx8010_pcm_rec {
+  unsigned int substream;
+  unsigned int res1;
+  unsigned int channels;
+  unsigned int tram_start;
+  unsigned int buffer_size;
+  unsigned short gpr_size;
+  unsigned short gpr_ptr;
+  unsigned short gpr_count;
+  unsigned short gpr_tmpcount;
+  unsigned short gpr_trigger;
+  unsigned short gpr_running;
+  unsigned char pad;
+  unsigned char etram[32];
+  unsigned int res2;
+};
+#define SNDRV_EMU10K1_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 1)
+#define SNDRV_EMU10K1_IOCTL_INFO _IOR('H', 0x10, struct snd_emu10k1_fx8010_info)
+#define SNDRV_EMU10K1_IOCTL_CODE_POKE _IOW('H', 0x11, struct snd_emu10k1_fx8010_code)
+#define SNDRV_EMU10K1_IOCTL_CODE_PEEK _IOWR('H', 0x12, struct snd_emu10k1_fx8010_code)
+#define SNDRV_EMU10K1_IOCTL_TRAM_SETUP _IOW('H', 0x20, int)
+#define SNDRV_EMU10K1_IOCTL_TRAM_POKE _IOW('H', 0x21, struct snd_emu10k1_fx8010_tram)
+#define SNDRV_EMU10K1_IOCTL_TRAM_PEEK _IOWR('H', 0x22, struct snd_emu10k1_fx8010_tram)
+#define SNDRV_EMU10K1_IOCTL_PCM_POKE _IOW('H', 0x30, struct snd_emu10k1_fx8010_pcm_rec)
+#define SNDRV_EMU10K1_IOCTL_PCM_PEEK _IOWR('H', 0x31, struct snd_emu10k1_fx8010_pcm_rec)
+#define SNDRV_EMU10K1_IOCTL_PVERSION _IOR('H', 0x40, int)
+#define SNDRV_EMU10K1_IOCTL_STOP _IO('H', 0x80)
+#define SNDRV_EMU10K1_IOCTL_CONTINUE _IO('H', 0x81)
+#define SNDRV_EMU10K1_IOCTL_ZERO_TRAM_COUNTER _IO('H', 0x82)
+#define SNDRV_EMU10K1_IOCTL_SINGLE_STEP _IOW('H', 0x83, int)
+#define SNDRV_EMU10K1_IOCTL_DBG_READ _IOR('H', 0x84, int)
+#endif
diff --git a/x86_64-linux-musl/include/sound/firewire.h b/x86_64-linux-musl/include/sound/firewire.h
new file mode 100644
index 0000000..198a8f4
--- /dev/null
+++ b/x86_64-linux-musl/include/sound/firewire.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_SOUND_FIREWIRE_H_INCLUDED
+#define _UAPI_SOUND_FIREWIRE_H_INCLUDED
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#define SNDRV_FIREWIRE_EVENT_LOCK_STATUS 0x000010cc
+#define SNDRV_FIREWIRE_EVENT_DICE_NOTIFICATION 0xd1ce004e
+#define SNDRV_FIREWIRE_EVENT_EFW_RESPONSE 0x4e617475
+#define SNDRV_FIREWIRE_EVENT_DIGI00X_MESSAGE 0x746e736c
+#define SNDRV_FIREWIRE_EVENT_MOTU_NOTIFICATION 0x64776479
+#define SNDRV_FIREWIRE_EVENT_TASCAM_CONTROL 0x7473636d
+#define SNDRV_FIREWIRE_EVENT_MOTU_REGISTER_DSP_CHANGE 0x4d545244
+struct snd_firewire_event_common {
+  unsigned int type;
+};
+struct snd_firewire_event_lock_status {
+  unsigned int type;
+  unsigned int status;
+};
+struct snd_firewire_event_dice_notification {
+  unsigned int type;
+  unsigned int notification;
+};
+#define SND_EFW_TRANSACTION_USER_SEQNUM_MAX ((__u32) ((__u16) ~0) - 1)
+struct snd_efw_transaction {
+  __be32 length;
+  __be32 version;
+  __be32 seqnum;
+  __be32 category;
+  __be32 command;
+  __be32 status;
+  __be32 params[0];
+};
+struct snd_firewire_event_efw_response {
+  unsigned int type;
+  __be32 response[0];
+};
+struct snd_firewire_event_digi00x_message {
+  unsigned int type;
+  __u32 message;
+};
+struct snd_firewire_event_motu_notification {
+  unsigned int type;
+  __u32 message;
+};
+struct snd_firewire_tascam_change {
+  unsigned int index;
+  __be32 before;
+  __be32 after;
+};
+struct snd_firewire_event_tascam_control {
+  unsigned int type;
+  struct snd_firewire_tascam_change changes[0];
+};
+struct snd_firewire_event_motu_register_dsp_change {
+  unsigned int type;
+  __u32 count;
+  __u32 changes[];
+};
+union snd_firewire_event {
+  struct snd_firewire_event_common common;
+  struct snd_firewire_event_lock_status lock_status;
+  struct snd_firewire_event_dice_notification dice_notification;
+  struct snd_firewire_event_efw_response efw_response;
+  struct snd_firewire_event_digi00x_message digi00x_message;
+  struct snd_firewire_event_tascam_control tascam_control;
+  struct snd_firewire_event_motu_notification motu_notification;
+  struct snd_firewire_event_motu_register_dsp_change motu_register_dsp_change;
+};
+#define SNDRV_FIREWIRE_IOCTL_GET_INFO _IOR('H', 0xf8, struct snd_firewire_get_info)
+#define SNDRV_FIREWIRE_IOCTL_LOCK _IO('H', 0xf9)
+#define SNDRV_FIREWIRE_IOCTL_UNLOCK _IO('H', 0xfa)
+#define SNDRV_FIREWIRE_IOCTL_TASCAM_STATE _IOR('H', 0xfb, struct snd_firewire_tascam_state)
+#define SNDRV_FIREWIRE_IOCTL_MOTU_REGISTER_DSP_METER _IOR('H', 0xfc, struct snd_firewire_motu_register_dsp_meter)
+#define SNDRV_FIREWIRE_IOCTL_MOTU_COMMAND_DSP_METER _IOR('H', 0xfd, struct snd_firewire_motu_command_dsp_meter)
+#define SNDRV_FIREWIRE_IOCTL_MOTU_REGISTER_DSP_PARAMETER _IOR('H', 0xfe, struct snd_firewire_motu_register_dsp_parameter)
+#define SNDRV_FIREWIRE_TYPE_DICE 1
+#define SNDRV_FIREWIRE_TYPE_FIREWORKS 2
+#define SNDRV_FIREWIRE_TYPE_BEBOB 3
+#define SNDRV_FIREWIRE_TYPE_OXFW 4
+#define SNDRV_FIREWIRE_TYPE_DIGI00X 5
+#define SNDRV_FIREWIRE_TYPE_TASCAM 6
+#define SNDRV_FIREWIRE_TYPE_MOTU 7
+#define SNDRV_FIREWIRE_TYPE_FIREFACE 8
+struct snd_firewire_get_info {
+  unsigned int type;
+  unsigned int card;
+  unsigned char guid[8];
+  char device_name[16];
+};
+#define SNDRV_FIREWIRE_TASCAM_STATE_COUNT 64
+struct snd_firewire_tascam_state {
+  __be32 data[SNDRV_FIREWIRE_TASCAM_STATE_COUNT];
+};
+#define SNDRV_FIREWIRE_MOTU_REGISTER_DSP_METER_INPUT_COUNT 24
+#define SNDRV_FIREWIRE_MOTU_REGISTER_DSP_METER_OUTPUT_COUNT 24
+#define SNDRV_FIREWIRE_MOTU_REGISTER_DSP_METER_COUNT (SNDRV_FIREWIRE_MOTU_REGISTER_DSP_METER_INPUT_COUNT + SNDRV_FIREWIRE_MOTU_REGISTER_DSP_METER_OUTPUT_COUNT)
+struct snd_firewire_motu_register_dsp_meter {
+  __u8 data[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_METER_COUNT];
+};
+#define SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_COUNT 4
+#define SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_SRC_COUNT 20
+#define SNDRV_FIREWIRE_MOTU_REGISTER_DSP_INPUT_COUNT 10
+#define SNDRV_FIREWIRE_MOTU_REGISTER_DSP_ALIGNED_INPUT_COUNT (SNDRV_FIREWIRE_MOTU_REGISTER_DSP_INPUT_COUNT + 2)
+struct snd_firewire_motu_register_dsp_parameter {
+  struct {
+    struct {
+      __u8 gain[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_SRC_COUNT];
+      __u8 pan[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_SRC_COUNT];
+      __u8 flag[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_SRC_COUNT];
+      __u8 paired_balance[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_SRC_COUNT];
+      __u8 paired_width[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_SRC_COUNT];
+    } source[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_COUNT];
+    struct {
+      __u8 paired_volume[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_COUNT];
+      __u8 paired_flag[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_COUNT];
+    } output;
+  } mixer;
+  struct {
+    __u8 main_paired_volume;
+    __u8 hp_paired_volume;
+    __u8 hp_paired_assignment;
+    __u8 reserved[5];
+  } output;
+  struct {
+    __u8 boost_flag;
+    __u8 nominal_level_flag;
+    __u8 reserved[6];
+  } line_input;
+  struct {
+    __u8 gain_and_invert[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_ALIGNED_INPUT_COUNT];
+    __u8 flag[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_ALIGNED_INPUT_COUNT];
+  } input;
+  __u8 reserved[64];
+};
+#define SNDRV_FIREWIRE_MOTU_COMMAND_DSP_METER_COUNT 400
+struct snd_firewire_motu_command_dsp_meter {
+  float data[SNDRV_FIREWIRE_MOTU_COMMAND_DSP_METER_COUNT];
+};
+#endif
diff --git a/x86_64-linux-musl/include/sound/hdsp.h b/x86_64-linux-musl/include/sound/hdsp.h
new file mode 100644
index 0000000..2fec371
--- /dev/null
+++ b/x86_64-linux-musl/include/sound/hdsp.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 __SOUND_HDSP_H
+#define __SOUND_HDSP_H
+#ifdef __linux__
+#include <linux/types.h>
+#endif
+#define HDSP_MATRIX_MIXER_SIZE 2048
+enum HDSP_IO_Type {
+  Digiface,
+  Multiface,
+  H9652,
+  H9632,
+  RPM,
+  Undefined,
+};
+struct hdsp_peak_rms {
+  __u32 input_peaks[26];
+  __u32 playback_peaks[26];
+  __u32 output_peaks[28];
+  __u64 input_rms[26];
+  __u64 playback_rms[26];
+  __u64 output_rms[26];
+};
+#define SNDRV_HDSP_IOCTL_GET_PEAK_RMS _IOR('H', 0x40, struct hdsp_peak_rms)
+struct hdsp_config_info {
+  unsigned char pref_sync_ref;
+  unsigned char wordclock_sync_check;
+  unsigned char spdif_sync_check;
+  unsigned char adatsync_sync_check;
+  unsigned char adat_sync_check[3];
+  unsigned char spdif_in;
+  unsigned char spdif_out;
+  unsigned char spdif_professional;
+  unsigned char spdif_emphasis;
+  unsigned char spdif_nonaudio;
+  unsigned int spdif_sample_rate;
+  unsigned int system_sample_rate;
+  unsigned int autosync_sample_rate;
+  unsigned char system_clock_mode;
+  unsigned char clock_source;
+  unsigned char autosync_ref;
+  unsigned char line_out;
+  unsigned char passthru;
+  unsigned char da_gain;
+  unsigned char ad_gain;
+  unsigned char phone_gain;
+  unsigned char xlr_breakout_cable;
+  unsigned char analog_extension_board;
+};
+#define SNDRV_HDSP_IOCTL_GET_CONFIG_INFO _IOR('H', 0x41, struct hdsp_config_info)
+struct hdsp_firmware {
+  void * firmware_data;
+};
+#define SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE _IOW('H', 0x42, struct hdsp_firmware)
+struct hdsp_version {
+  enum HDSP_IO_Type io_type;
+  unsigned short firmware_rev;
+};
+#define SNDRV_HDSP_IOCTL_GET_VERSION _IOR('H', 0x43, struct hdsp_version)
+struct hdsp_mixer {
+  unsigned short matrix[HDSP_MATRIX_MIXER_SIZE];
+};
+#define SNDRV_HDSP_IOCTL_GET_MIXER _IOR('H', 0x44, struct hdsp_mixer)
+struct hdsp_9632_aeb {
+  int aebi;
+  int aebo;
+};
+#define SNDRV_HDSP_IOCTL_GET_9632_AEB _IOR('H', 0x45, struct hdsp_9632_aeb)
+#endif
diff --git a/x86_64-linux-musl/include/sound/hdspm.h b/x86_64-linux-musl/include/sound/hdspm.h
new file mode 100644
index 0000000..bd28e8c
--- /dev/null
+++ b/x86_64-linux-musl/include/sound/hdspm.h
@@ -0,0 +1,149 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __SOUND_HDSPM_H
+#define __SOUND_HDSPM_H
+#ifdef __linux__
+#include <linux/types.h>
+#endif
+#define HDSPM_MAX_CHANNELS 64
+enum hdspm_io_type {
+  MADI,
+  MADIface,
+  AIO,
+  AES32,
+  RayDAT
+};
+enum hdspm_speed {
+  ss,
+  ds,
+  qs
+};
+struct hdspm_peak_rms {
+  __u32 input_peaks[64];
+  __u32 playback_peaks[64];
+  __u32 output_peaks[64];
+  __u64 input_rms[64];
+  __u64 playback_rms[64];
+  __u64 output_rms[64];
+  __u8 speed;
+  int status2;
+};
+#define SNDRV_HDSPM_IOCTL_GET_PEAK_RMS _IOR('H', 0x42, struct hdspm_peak_rms)
+struct hdspm_config {
+  unsigned char pref_sync_ref;
+  unsigned char wordclock_sync_check;
+  unsigned char madi_sync_check;
+  unsigned int system_sample_rate;
+  unsigned int autosync_sample_rate;
+  unsigned char system_clock_mode;
+  unsigned char clock_source;
+  unsigned char autosync_ref;
+  unsigned char line_out;
+  unsigned int passthru;
+  unsigned int analog_out;
+};
+#define SNDRV_HDSPM_IOCTL_GET_CONFIG _IOR('H', 0x41, struct hdspm_config)
+enum hdspm_ltc_format {
+  format_invalid,
+  fps_24,
+  fps_25,
+  fps_2997,
+  fps_30
+};
+enum hdspm_ltc_frame {
+  frame_invalid,
+  drop_frame,
+  full_frame
+};
+enum hdspm_ltc_input_format {
+  ntsc,
+  pal,
+  no_video
+};
+struct hdspm_ltc {
+  unsigned int ltc;
+  enum hdspm_ltc_format format;
+  enum hdspm_ltc_frame frame;
+  enum hdspm_ltc_input_format input_format;
+};
+#define SNDRV_HDSPM_IOCTL_GET_LTC _IOR('H', 0x46, struct hdspm_ltc)
+enum hdspm_sync {
+  hdspm_sync_no_lock = 0,
+  hdspm_sync_lock = 1,
+  hdspm_sync_sync = 2
+};
+enum hdspm_madi_input {
+  hdspm_input_optical = 0,
+  hdspm_input_coax = 1
+};
+enum hdspm_madi_channel_format {
+  hdspm_format_ch_64 = 0,
+  hdspm_format_ch_56 = 1
+};
+enum hdspm_madi_frame_format {
+  hdspm_frame_48 = 0,
+  hdspm_frame_96 = 1
+};
+enum hdspm_syncsource {
+  syncsource_wc = 0,
+  syncsource_madi = 1,
+  syncsource_tco = 2,
+  syncsource_sync = 3,
+  syncsource_none = 4
+};
+struct hdspm_status {
+  __u8 card_type;
+  enum hdspm_syncsource autosync_source;
+  __u64 card_clock;
+  __u32 master_period;
+  union {
+    struct {
+      __u8 sync_wc;
+      __u8 sync_madi;
+      __u8 sync_tco;
+      __u8 sync_in;
+      __u8 madi_input;
+      __u8 channel_format;
+      __u8 frame_format;
+    } madi;
+  } card_specific;
+};
+#define SNDRV_HDSPM_IOCTL_GET_STATUS _IOR('H', 0x47, struct hdspm_status)
+#define HDSPM_ADDON_TCO 1
+struct hdspm_version {
+  __u8 card_type;
+  char cardname[20];
+  unsigned int serial;
+  unsigned short firmware_rev;
+  int addons;
+};
+#define SNDRV_HDSPM_IOCTL_GET_VERSION _IOR('H', 0x48, struct hdspm_version)
+#define HDSPM_MIXER_CHANNELS HDSPM_MAX_CHANNELS
+struct hdspm_channelfader {
+  unsigned int in[HDSPM_MIXER_CHANNELS];
+  unsigned int pb[HDSPM_MIXER_CHANNELS];
+};
+struct hdspm_mixer {
+  struct hdspm_channelfader ch[HDSPM_MIXER_CHANNELS];
+};
+struct hdspm_mixer_ioctl {
+  struct hdspm_mixer * mixer;
+};
+#define SNDRV_HDSPM_IOCTL_GET_MIXER _IOR('H', 0x44, struct hdspm_mixer_ioctl)
+#endif
diff --git a/x86_64-linux-musl/include/sound/sb16_csp.h b/x86_64-linux-musl/include/sound/sb16_csp.h
new file mode 100644
index 0000000..31f7064
--- /dev/null
+++ b/x86_64-linux-musl/include/sound/sb16_csp.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__SOUND_SB16_CSP_H
+#define _UAPI__SOUND_SB16_CSP_H
+#define SNDRV_SB_CSP_MODE_NONE 0x00
+#define SNDRV_SB_CSP_MODE_DSP_READ 0x01
+#define SNDRV_SB_CSP_MODE_DSP_WRITE 0x02
+#define SNDRV_SB_CSP_MODE_QSOUND 0x04
+#define SNDRV_SB_CSP_LOAD_FROMUSER 0x01
+#define SNDRV_SB_CSP_LOAD_INITBLOCK 0x02
+#define SNDRV_SB_CSP_SAMPLE_8BIT 0x01
+#define SNDRV_SB_CSP_SAMPLE_16BIT 0x02
+#define SNDRV_SB_CSP_MONO 0x01
+#define SNDRV_SB_CSP_STEREO 0x02
+#define SNDRV_SB_CSP_RATE_8000 0x01
+#define SNDRV_SB_CSP_RATE_11025 0x02
+#define SNDRV_SB_CSP_RATE_22050 0x04
+#define SNDRV_SB_CSP_RATE_44100 0x08
+#define SNDRV_SB_CSP_RATE_ALL 0x0f
+#define SNDRV_SB_CSP_ST_IDLE 0x00
+#define SNDRV_SB_CSP_ST_LOADED 0x01
+#define SNDRV_SB_CSP_ST_RUNNING 0x02
+#define SNDRV_SB_CSP_ST_PAUSED 0x04
+#define SNDRV_SB_CSP_ST_AUTO 0x08
+#define SNDRV_SB_CSP_ST_QSOUND 0x10
+#define SNDRV_SB_CSP_QSOUND_MAX_RIGHT 0x20
+#define SNDRV_SB_CSP_MAX_MICROCODE_FILE_SIZE 0x3000
+struct snd_sb_csp_mc_header {
+  char codec_name[16];
+  unsigned short func_req;
+};
+struct snd_sb_csp_microcode {
+  struct snd_sb_csp_mc_header info;
+  unsigned char data[SNDRV_SB_CSP_MAX_MICROCODE_FILE_SIZE];
+};
+struct snd_sb_csp_start {
+  int sample_width;
+  int channels;
+};
+struct snd_sb_csp_info {
+  char codec_name[16];
+  unsigned short func_nr;
+  unsigned int acc_format;
+  unsigned short acc_channels;
+  unsigned short acc_width;
+  unsigned short acc_rates;
+  unsigned short csp_mode;
+  unsigned short run_channels;
+  unsigned short run_width;
+  unsigned short version;
+  unsigned short state;
+};
+#define SNDRV_SB_CSP_IOCTL_INFO _IOR('H', 0x10, struct snd_sb_csp_info)
+#define SNDRV_SB_CSP_IOCTL_LOAD_CODE _IOC(_IOC_WRITE, 'H', 0x11, sizeof(struct snd_sb_csp_microcode))
+#define SNDRV_SB_CSP_IOCTL_UNLOAD_CODE _IO('H', 0x12)
+#define SNDRV_SB_CSP_IOCTL_START _IOW('H', 0x13, struct snd_sb_csp_start)
+#define SNDRV_SB_CSP_IOCTL_STOP _IO('H', 0x14)
+#define SNDRV_SB_CSP_IOCTL_PAUSE _IO('H', 0x15)
+#define SNDRV_SB_CSP_IOCTL_RESTART _IO('H', 0x16)
+#endif
diff --git a/x86_64-linux-musl/include/sound/sfnt_info.h b/x86_64-linux-musl/include/sound/sfnt_info.h
new file mode 100644
index 0000000..87e1738
--- /dev/null
+++ b/x86_64-linux-musl/include/sound/sfnt_info.h
@@ -0,0 +1,149 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __SOUND_SFNT_INFO_H
+#define __SOUND_SFNT_INFO_H
+#include <sound/asound.h>
+#ifdef SNDRV_BIG_ENDIAN
+#define SNDRV_OSS_PATCHKEY(id) (0xfd00 | id)
+#else
+#define SNDRV_OSS_PATCHKEY(id) ((id << 8) | 0xfd)
+#endif
+struct soundfont_patch_info {
+  unsigned short key;
+#define SNDRV_OSS_SOUNDFONT_PATCH SNDRV_OSS_PATCHKEY(0x07)
+  short device_no;
+  unsigned short sf_id;
+  short optarg;
+  int len;
+  short type;
+#define SNDRV_SFNT_LOAD_INFO 0
+#define SNDRV_SFNT_LOAD_DATA 1
+#define SNDRV_SFNT_OPEN_PATCH 2
+#define SNDRV_SFNT_CLOSE_PATCH 3
+#define SNDRV_SFNT_REPLACE_DATA 5
+#define SNDRV_SFNT_MAP_PRESET 6
+#define SNDRV_SFNT_PROBE_DATA 8
+#define SNDRV_SFNT_REMOVE_INFO 9
+  short reserved;
+};
+#define SNDRV_SFNT_PATCH_NAME_LEN 32
+struct soundfont_open_parm {
+  unsigned short type;
+#define SNDRV_SFNT_PAT_TYPE_MISC 0
+#define SNDRV_SFNT_PAT_TYPE_GUS 6
+#define SNDRV_SFNT_PAT_TYPE_MAP 7
+#define SNDRV_SFNT_PAT_LOCKED 0x100
+#define SNDRV_SFNT_PAT_SHARED 0x200
+  short reserved;
+  char name[SNDRV_SFNT_PATCH_NAME_LEN];
+};
+struct soundfont_voice_parm {
+  unsigned short moddelay;
+  unsigned short modatkhld;
+  unsigned short moddcysus;
+  unsigned short modrelease;
+  short modkeyhold, modkeydecay;
+  unsigned short voldelay;
+  unsigned short volatkhld;
+  unsigned short voldcysus;
+  unsigned short volrelease;
+  short volkeyhold, volkeydecay;
+  unsigned short lfo1delay;
+  unsigned short lfo2delay;
+  unsigned short pefe;
+  unsigned short fmmod;
+  unsigned short tremfrq;
+  unsigned short fm2frq2;
+  unsigned char cutoff;
+  unsigned char filterQ;
+  unsigned char chorus;
+  unsigned char reverb;
+  unsigned short reserved[4];
+};
+struct soundfont_voice_info {
+  unsigned short sf_id;
+  unsigned short sample;
+  int start, end;
+  int loopstart, loopend;
+  short rate_offset;
+  unsigned short mode;
+#define SNDRV_SFNT_MODE_ROMSOUND 0x8000
+#define SNDRV_SFNT_MODE_STEREO 1
+#define SNDRV_SFNT_MODE_LOOPING 2
+#define SNDRV_SFNT_MODE_NORELEASE 4
+#define SNDRV_SFNT_MODE_INIT_PARM 8
+  short root;
+  short tune;
+  unsigned char low, high;
+  unsigned char vellow, velhigh;
+  signed char fixkey, fixvel;
+  signed char pan, fixpan;
+  short exclusiveClass;
+  unsigned char amplitude;
+  unsigned char attenuation;
+  short scaleTuning;
+  struct soundfont_voice_parm parm;
+  unsigned short sample_mode;
+};
+struct soundfont_voice_rec_hdr {
+  unsigned char bank;
+  unsigned char instr;
+  char nvoices;
+  char write_mode;
+#define SNDRV_SFNT_WR_APPEND 0
+#define SNDRV_SFNT_WR_EXCLUSIVE 1
+#define SNDRV_SFNT_WR_REPLACE 2
+};
+struct soundfont_sample_info {
+  unsigned short sf_id;
+  unsigned short sample;
+  int start, end;
+  int loopstart, loopend;
+  int size;
+  short dummy;
+  unsigned short mode_flags;
+#define SNDRV_SFNT_SAMPLE_8BITS 1
+#define SNDRV_SFNT_SAMPLE_UNSIGNED 2
+#define SNDRV_SFNT_SAMPLE_NO_BLANK 4
+#define SNDRV_SFNT_SAMPLE_SINGLESHOT 8
+#define SNDRV_SFNT_SAMPLE_BIDIR_LOOP 16
+#define SNDRV_SFNT_SAMPLE_STEREO_LEFT 32
+#define SNDRV_SFNT_SAMPLE_STEREO_RIGHT 64
+#define SNDRV_SFNT_SAMPLE_REVERSE_LOOP 128
+  unsigned int truesize;
+};
+struct soundfont_voice_map {
+  int map_bank, map_instr, map_key;
+  int src_bank, src_instr, src_key;
+};
+#define SNDRV_EMUX_HWDEP_NAME "Emux WaveTable"
+#define SNDRV_EMUX_VERSION ((1 << 16) | (0 << 8) | 0)
+struct snd_emux_misc_mode {
+  int port;
+  int mode;
+  int value;
+  int value2;
+};
+#define SNDRV_EMUX_IOCTL_VERSION _IOR('H', 0x80, unsigned int)
+#define SNDRV_EMUX_IOCTL_LOAD_PATCH _IOWR('H', 0x81, struct soundfont_patch_info)
+#define SNDRV_EMUX_IOCTL_RESET_SAMPLES _IO('H', 0x82)
+#define SNDRV_EMUX_IOCTL_REMOVE_LAST_SAMPLES _IO('H', 0x83)
+#define SNDRV_EMUX_IOCTL_MEM_AVAIL _IOW('H', 0x84, int)
+#define SNDRV_EMUX_IOCTL_MISC_MODE _IOWR('H', 0x84, struct snd_emux_misc_mode)
+#endif
diff --git a/x86_64-linux-musl/include/sound/skl-tplg-interface.h b/x86_64-linux-musl/include/sound/skl-tplg-interface.h
new file mode 100644
index 0000000..b516a08
--- /dev/null
+++ b/x86_64-linux-musl/include/sound/skl-tplg-interface.h
@@ -0,0 +1,185 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __HDA_TPLG_INTERFACE_H__
+#define __HDA_TPLG_INTERFACE_H__
+#include <linux/types.h>
+#define SKL_CONTROL_TYPE_BYTE_TLV 0x100
+#define SKL_CONTROL_TYPE_MIC_SELECT 0x102
+#define SKL_CONTROL_TYPE_MULTI_IO_SELECT 0x103
+#define SKL_CONTROL_TYPE_MULTI_IO_SELECT_DMIC 0x104
+#define HDA_SST_CFG_MAX 900
+#define MAX_IN_QUEUE 8
+#define MAX_OUT_QUEUE 8
+#define SKL_UUID_STR_SZ 40
+enum skl_event_types {
+  SKL_EVENT_NONE = 0,
+  SKL_MIXER_EVENT,
+  SKL_MUX_EVENT,
+  SKL_VMIXER_EVENT,
+  SKL_PGA_EVENT
+};
+enum skl_ch_cfg {
+  SKL_CH_CFG_MONO = 0,
+  SKL_CH_CFG_STEREO = 1,
+  SKL_CH_CFG_2_1 = 2,
+  SKL_CH_CFG_3_0 = 3,
+  SKL_CH_CFG_3_1 = 4,
+  SKL_CH_CFG_QUATRO = 5,
+  SKL_CH_CFG_4_0 = 6,
+  SKL_CH_CFG_5_0 = 7,
+  SKL_CH_CFG_5_1 = 8,
+  SKL_CH_CFG_DUAL_MONO = 9,
+  SKL_CH_CFG_I2S_DUAL_STEREO_0 = 10,
+  SKL_CH_CFG_I2S_DUAL_STEREO_1 = 11,
+  SKL_CH_CFG_4_CHANNEL = 12,
+  SKL_CH_CFG_INVALID
+};
+enum skl_module_type {
+  SKL_MODULE_TYPE_MIXER = 0,
+  SKL_MODULE_TYPE_COPIER,
+  SKL_MODULE_TYPE_UPDWMIX,
+  SKL_MODULE_TYPE_SRCINT,
+  SKL_MODULE_TYPE_ALGO,
+  SKL_MODULE_TYPE_BASE_OUTFMT,
+  SKL_MODULE_TYPE_KPB,
+  SKL_MODULE_TYPE_MIC_SELECT,
+};
+enum skl_core_affinity {
+  SKL_AFFINITY_CORE_0 = 0,
+  SKL_AFFINITY_CORE_1,
+  SKL_AFFINITY_CORE_MAX
+};
+enum skl_pipe_conn_type {
+  SKL_PIPE_CONN_TYPE_NONE = 0,
+  SKL_PIPE_CONN_TYPE_FE,
+  SKL_PIPE_CONN_TYPE_BE
+};
+enum skl_hw_conn_type {
+  SKL_CONN_NONE = 0,
+  SKL_CONN_SOURCE = 1,
+  SKL_CONN_SINK = 2
+};
+enum skl_dev_type {
+  SKL_DEVICE_BT = 0x0,
+  SKL_DEVICE_DMIC = 0x1,
+  SKL_DEVICE_I2S = 0x2,
+  SKL_DEVICE_SLIMBUS = 0x3,
+  SKL_DEVICE_HDALINK = 0x4,
+  SKL_DEVICE_HDAHOST = 0x5,
+  SKL_DEVICE_NONE
+};
+enum skl_interleaving {
+  SKL_INTERLEAVING_PER_CHANNEL = 0,
+  SKL_INTERLEAVING_PER_SAMPLE = 1,
+};
+enum skl_sample_type {
+  SKL_SAMPLE_TYPE_INT_MSB = 0,
+  SKL_SAMPLE_TYPE_INT_LSB = 1,
+  SKL_SAMPLE_TYPE_INT_SIGNED = 2,
+  SKL_SAMPLE_TYPE_INT_UNSIGNED = 3,
+  SKL_SAMPLE_TYPE_FLOAT = 4
+};
+enum module_pin_type {
+  SKL_PIN_TYPE_HOMOGENEOUS,
+  SKL_PIN_TYPE_HETEROGENEOUS,
+};
+enum skl_module_param_type {
+  SKL_PARAM_DEFAULT = 0,
+  SKL_PARAM_INIT,
+  SKL_PARAM_SET,
+  SKL_PARAM_BIND
+};
+struct skl_dfw_algo_data {
+  __u32 set_params : 2;
+  __u32 rsvd : 30;
+  __u32 param_id;
+  __u32 max;
+  char params[0];
+} __packed;
+enum skl_tkn_dir {
+  SKL_DIR_IN,
+  SKL_DIR_OUT
+};
+enum skl_tuple_type {
+  SKL_TYPE_TUPLE,
+  SKL_TYPE_DATA
+};
+struct skl_dfw_v4_module_pin {
+  __u16 module_id;
+  __u16 instance_id;
+} __packed;
+struct skl_dfw_v4_module_fmt {
+  __u32 channels;
+  __u32 freq;
+  __u32 bit_depth;
+  __u32 valid_bit_depth;
+  __u32 ch_cfg;
+  __u32 interleaving_style;
+  __u32 sample_type;
+  __u32 ch_map;
+} __packed;
+struct skl_dfw_v4_module_caps {
+  __u32 set_params : 2;
+  __u32 rsvd : 30;
+  __u32 param_id;
+  __u32 caps_size;
+  __u32 caps[HDA_SST_CFG_MAX];
+} __packed;
+struct skl_dfw_v4_pipe {
+  __u8 pipe_id;
+  __u8 pipe_priority;
+  __u16 conn_type : 4;
+  __u16 rsvd : 4;
+  __u16 memory_pages : 8;
+} __packed;
+struct skl_dfw_v4_module {
+  char uuid[SKL_UUID_STR_SZ];
+  __u16 module_id;
+  __u16 instance_id;
+  __u32 max_mcps;
+  __u32 mem_pages;
+  __u32 obs;
+  __u32 ibs;
+  __u32 vbus_id;
+  __u32 max_in_queue : 8;
+  __u32 max_out_queue : 8;
+  __u32 time_slot : 8;
+  __u32 core_id : 4;
+  __u32 rsvd1 : 4;
+  __u32 module_type : 8;
+  __u32 conn_type : 4;
+  __u32 dev_type : 4;
+  __u32 hw_conn_type : 4;
+  __u32 rsvd2 : 12;
+  __u32 params_fixup : 8;
+  __u32 converter : 8;
+  __u32 input_pin_type : 1;
+  __u32 output_pin_type : 1;
+  __u32 is_dynamic_in_pin : 1;
+  __u32 is_dynamic_out_pin : 1;
+  __u32 is_loadable : 1;
+  __u32 rsvd3 : 11;
+  struct skl_dfw_v4_pipe pipe;
+  struct skl_dfw_v4_module_fmt in_fmt[MAX_IN_QUEUE];
+  struct skl_dfw_v4_module_fmt out_fmt[MAX_OUT_QUEUE];
+  struct skl_dfw_v4_module_pin in_pin[MAX_IN_QUEUE];
+  struct skl_dfw_v4_module_pin out_pin[MAX_OUT_QUEUE];
+  struct skl_dfw_v4_module_caps caps;
+} __packed;
+#endif
diff --git a/x86_64-linux-musl/include/sound/snd_ar_tokens.h b/x86_64-linux-musl/include/sound/snd_ar_tokens.h
new file mode 100644
index 0000000..39c0684
--- /dev/null
+++ b/x86_64-linux-musl/include/sound/snd_ar_tokens.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 __SND_AR_TOKENS_H__
+#define __SND_AR_TOKENS_H__
+#define APM_SUB_GRAPH_PERF_MODE_LOW_POWER 0x1
+#define APM_SUB_GRAPH_PERF_MODE_LOW_LATENCY 0x2
+#define APM_SUB_GRAPH_DIRECTION_TX 0x1
+#define APM_SUB_GRAPH_DIRECTION_RX 0x2
+#define APM_SUB_GRAPH_SID_AUDIO_PLAYBACK 0x1
+#define APM_SUB_GRAPH_SID_AUDIO_RECORD 0x2
+#define APM_SUB_GRAPH_SID_VOICE_CALL 0x3
+#define APM_CONTAINER_CAP_ID_PP 0x1
+#define APM_CONTAINER_CAP_ID_CD 0x2
+#define APM_CONTAINER_CAP_ID_EP 0x3
+#define APM_CONTAINER_CAP_ID_OLC 0x4
+#define APM_CONT_GRAPH_POS_STREAM 0x1
+#define APM_CONT_GRAPH_POS_PER_STR_PER_DEV 0x2
+#define APM_CONT_GRAPH_POS_STR_DEV 0x3
+#define APM_CONT_GRAPH_POS_GLOBAL_DEV 0x4
+#define APM_PROC_DOMAIN_ID_MDSP 0x1
+#define APM_PROC_DOMAIN_ID_ADSP 0x2
+#define APM_PROC_DOMAIN_ID_SDSP 0x4
+#define APM_PROC_DOMAIN_ID_CDSP 0x5
+#define PCM_INTERLEAVED 1
+#define PCM_DEINTERLEAVED_PACKED 2
+#define PCM_DEINTERLEAVED_UNPACKED 3
+#define AR_I2S_WS_SRC_EXTERNAL 0
+#define AR_I2S_WS_SRC_INTERNAL 1
+enum ar_event_types {
+  AR_EVENT_NONE = 0,
+  AR_PGA_DAPM_EVENT
+};
+#define SND_SOC_AR_TPLG_FE_BE_GRAPH_CTL_MIX 256
+#define SND_SOC_AR_TPLG_VOL_CTL 257
+#define AR_TKN_DAI_INDEX 1
+#define AR_TKN_U32_SUB_GRAPH_INSTANCE_ID 2
+#define AR_TKN_U32_SUB_GRAPH_PERF_MODE 3
+#define AR_TKN_U32_SUB_GRAPH_DIRECTION 4
+#define AR_TKN_U32_SUB_GRAPH_SCENARIO_ID 5
+#define AR_TKN_U32_CONTAINER_INSTANCE_ID 100
+#define AR_TKN_U32_CONTAINER_CAPABILITY_ID 101
+#define AR_TKN_U32_CONTAINER_STACK_SIZE 102
+#define AR_TKN_U32_CONTAINER_GRAPH_POS 103
+#define AR_TKN_U32_CONTAINER_PROC_DOMAIN 104
+#define AR_TKN_U32_MODULE_ID 200
+#define AR_TKN_U32_MODULE_INSTANCE_ID 201
+#define AR_TKN_U32_MODULE_MAX_IP_PORTS 202
+#define AR_TKN_U32_MODULE_MAX_OP_PORTS 203
+#define AR_TKN_U32_MODULE_IN_PORTS 204
+#define AR_TKN_U32_MODULE_OUT_PORTS 205
+#define AR_TKN_U32_MODULE_SRC_OP_PORT_ID 206
+#define AR_TKN_U32_MODULE_DST_IN_PORT_ID 207
+#define AR_TKN_U32_MODULE_SRC_INSTANCE_ID 208
+#define AR_TKN_U32_MODULE_DST_INSTANCE_ID 209
+#define AR_TKN_U32_MODULE_HW_IF_IDX 250
+#define AR_TKN_U32_MODULE_HW_IF_TYPE 251
+#define AR_TKN_U32_MODULE_FMT_INTERLEAVE 252
+#define AR_TKN_U32_MODULE_FMT_DATA 253
+#define AR_TKN_U32_MODULE_FMT_SAMPLE_RATE 254
+#define AR_TKN_U32_MODULE_FMT_BIT_DEPTH 255
+#define AR_TKN_U32_MODULE_SD_LINE_IDX 256
+#define AR_TKN_U32_MODULE_WS_SRC 257
+#define AR_TKN_U32_MODULE_FRAME_SZ_FACTOR 258
+#define AR_TKN_U32_MODULE_LOG_CODE 259
+#define AR_TKN_U32_MODULE_LOG_TAP_POINT_ID 260
+#define AR_TKN_U32_MODULE_LOG_MODE 261
+#endif
diff --git a/x86_64-linux-musl/include/sound/snd_sst_tokens.h b/x86_64-linux-musl/include/sound/snd_sst_tokens.h
new file mode 100644
index 0000000..bf012fa
--- /dev/null
+++ b/x86_64-linux-musl/include/sound/snd_sst_tokens.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 __SND_SST_TOKENS_H__
+#define __SND_SST_TOKENS_H__
+enum SKL_TKNS {
+  SKL_TKN_UUID = 1,
+  SKL_TKN_U8_NUM_BLOCKS,
+  SKL_TKN_U8_BLOCK_TYPE,
+  SKL_TKN_U8_IN_PIN_TYPE,
+  SKL_TKN_U8_OUT_PIN_TYPE,
+  SKL_TKN_U8_DYN_IN_PIN,
+  SKL_TKN_U8_DYN_OUT_PIN,
+  SKL_TKN_U8_IN_QUEUE_COUNT,
+  SKL_TKN_U8_OUT_QUEUE_COUNT,
+  SKL_TKN_U8_TIME_SLOT,
+  SKL_TKN_U8_CORE_ID,
+  SKL_TKN_U8_MOD_TYPE,
+  SKL_TKN_U8_CONN_TYPE,
+  SKL_TKN_U8_DEV_TYPE,
+  SKL_TKN_U8_HW_CONN_TYPE,
+  SKL_TKN_U16_MOD_INST_ID,
+  SKL_TKN_U16_BLOCK_SIZE,
+  SKL_TKN_U32_MAX_MCPS,
+  SKL_TKN_U32_MEM_PAGES,
+  SKL_TKN_U32_OBS,
+  SKL_TKN_U32_IBS,
+  SKL_TKN_U32_VBUS_ID,
+  SKL_TKN_U32_PARAMS_FIXUP,
+  SKL_TKN_U32_CONVERTER,
+  SKL_TKN_U32_PIPE_ID,
+  SKL_TKN_U32_PIPE_CONN_TYPE,
+  SKL_TKN_U32_PIPE_PRIORITY,
+  SKL_TKN_U32_PIPE_MEM_PGS,
+  SKL_TKN_U32_DIR_PIN_COUNT,
+  SKL_TKN_U32_FMT_CH,
+  SKL_TKN_U32_FMT_FREQ,
+  SKL_TKN_U32_FMT_BIT_DEPTH,
+  SKL_TKN_U32_FMT_SAMPLE_SIZE,
+  SKL_TKN_U32_FMT_CH_CONFIG,
+  SKL_TKN_U32_FMT_INTERLEAVE,
+  SKL_TKN_U32_FMT_SAMPLE_TYPE,
+  SKL_TKN_U32_FMT_CH_MAP,
+  SKL_TKN_U32_PIN_MOD_ID,
+  SKL_TKN_U32_PIN_INST_ID,
+  SKL_TKN_U32_MOD_SET_PARAMS,
+  SKL_TKN_U32_MOD_PARAM_ID,
+  SKL_TKN_U32_CAPS_SET_PARAMS,
+  SKL_TKN_U32_CAPS_PARAMS_ID,
+  SKL_TKN_U32_CAPS_SIZE,
+  SKL_TKN_U32_PROC_DOMAIN,
+  SKL_TKN_U32_LIB_COUNT,
+  SKL_TKN_STR_LIB_NAME,
+  SKL_TKN_U32_PMODE,
+  SKL_TKL_U32_D0I3_CAPS,
+  SKL_TKN_U32_D0I3_CAPS = SKL_TKL_U32_D0I3_CAPS,
+  SKL_TKN_U32_DMA_BUF_SIZE,
+  SKL_TKN_U32_PIPE_DIRECTION,
+  SKL_TKN_U32_PIPE_CONFIG_ID,
+  SKL_TKN_U32_NUM_CONFIGS,
+  SKL_TKN_U32_PATH_MEM_PGS,
+  SKL_TKN_U32_CFG_FREQ,
+  SKL_TKN_U8_CFG_CHAN,
+  SKL_TKN_U8_CFG_BPS,
+  SKL_TKN_CFG_MOD_RES_ID,
+  SKL_TKN_CFG_MOD_FMT_ID,
+  SKL_TKN_U8_NUM_MOD,
+  SKL_TKN_MM_U8_MOD_IDX,
+  SKL_TKN_MM_U8_NUM_RES,
+  SKL_TKN_MM_U8_NUM_INTF,
+  SKL_TKN_MM_U32_RES_ID,
+  SKL_TKN_MM_U32_CPS,
+  SKL_TKN_MM_U32_DMA_SIZE,
+  SKL_TKN_MM_U32_CPC,
+  SKL_TKN_MM_U32_RES_PIN_ID,
+  SKL_TKN_MM_U32_INTF_PIN_ID,
+  SKL_TKN_MM_U32_PIN_BUF,
+  SKL_TKN_MM_U32_FMT_ID,
+  SKL_TKN_MM_U32_NUM_IN_FMT,
+  SKL_TKN_MM_U32_NUM_OUT_FMT,
+  SKL_TKN_U32_ASTATE_IDX,
+  SKL_TKN_U32_ASTATE_COUNT,
+  SKL_TKN_U32_ASTATE_KCPS,
+  SKL_TKN_U32_ASTATE_CLK_SRC,
+  SKL_TKN_U32_FMT_CFG_IDX = 96,
+  SKL_TKN_MAX = SKL_TKN_U32_FMT_CFG_IDX,
+};
+#endif
diff --git a/x86_64-linux-musl/include/sound/sof/abi.h b/x86_64-linux-musl/include/sound/sof/abi.h
new file mode 100644
index 0000000..3af3c9d
--- /dev/null
+++ b/x86_64-linux-musl/include/sound/sof/abi.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 __INCLUDE_UAPI_SOUND_SOF_ABI_H__
+#define __INCLUDE_UAPI_SOUND_SOF_ABI_H__
+#define SOF_ABI_MAJOR 3
+#define SOF_ABI_MINOR 18
+#define SOF_ABI_PATCH 0
+#define SOF_ABI_MAJOR_SHIFT 24
+#define SOF_ABI_MAJOR_MASK 0xff
+#define SOF_ABI_MINOR_SHIFT 12
+#define SOF_ABI_MINOR_MASK 0xfff
+#define SOF_ABI_PATCH_SHIFT 0
+#define SOF_ABI_PATCH_MASK 0xfff
+#define SOF_ABI_VER(major,minor,patch) (((major) << SOF_ABI_MAJOR_SHIFT) | ((minor) << SOF_ABI_MINOR_SHIFT) | ((patch) << SOF_ABI_PATCH_SHIFT))
+#define SOF_ABI_VERSION_MAJOR(version) (((version) >> SOF_ABI_MAJOR_SHIFT) & SOF_ABI_MAJOR_MASK)
+#define SOF_ABI_VERSION_MINOR(version) (((version) >> SOF_ABI_MINOR_SHIFT) & SOF_ABI_MINOR_MASK)
+#define SOF_ABI_VERSION_PATCH(version) (((version) >> SOF_ABI_PATCH_SHIFT) & SOF_ABI_PATCH_MASK)
+#define SOF_ABI_VERSION_INCOMPATIBLE(sof_ver,client_ver) (SOF_ABI_VERSION_MAJOR((sof_ver)) != SOF_ABI_VERSION_MAJOR((client_ver)))
+#define SOF_ABI_VERSION SOF_ABI_VER(SOF_ABI_MAJOR, SOF_ABI_MINOR, SOF_ABI_PATCH)
+#define SOF_ABI_MAGIC 0x00464F53
+#endif
diff --git a/x86_64-linux-musl/include/sound/sof/fw.h b/x86_64-linux-musl/include/sound/sof/fw.h
new file mode 100644
index 0000000..c36c2b9
--- /dev/null
+++ b/x86_64-linux-musl/include/sound/sof/fw.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 __INCLUDE_UAPI_SOF_FW_H__
+#define __INCLUDE_UAPI_SOF_FW_H__
+#include <linux/types.h>
+#define SND_SOF_FW_SIG_SIZE 4
+#define SND_SOF_FW_ABI 1
+#define SND_SOF_FW_SIG "Reef"
+enum snd_sof_fw_blk_type {
+  SOF_FW_BLK_TYPE_INVALID = - 1,
+  SOF_FW_BLK_TYPE_START = 0,
+  SOF_FW_BLK_TYPE_RSRVD0 = SOF_FW_BLK_TYPE_START,
+  SOF_FW_BLK_TYPE_IRAM = 1,
+  SOF_FW_BLK_TYPE_DRAM = 2,
+  SOF_FW_BLK_TYPE_SRAM = 3,
+  SOF_FW_BLK_TYPE_ROM = 4,
+  SOF_FW_BLK_TYPE_IMR = 5,
+  SOF_FW_BLK_TYPE_RSRVD6 = 6,
+  SOF_FW_BLK_TYPE_RSRVD7 = 7,
+  SOF_FW_BLK_TYPE_RSRVD8 = 8,
+  SOF_FW_BLK_TYPE_RSRVD9 = 9,
+  SOF_FW_BLK_TYPE_RSRVD10 = 10,
+  SOF_FW_BLK_TYPE_RSRVD11 = 11,
+  SOF_FW_BLK_TYPE_RSRVD12 = 12,
+  SOF_FW_BLK_TYPE_RSRVD13 = 13,
+  SOF_FW_BLK_TYPE_RSRVD14 = 14,
+  SOF_FW_BLK_TYPE_NUM
+};
+struct snd_sof_blk_hdr {
+  enum snd_sof_fw_blk_type type;
+  __u32 size;
+  __u32 offset;
+} __packed;
+enum snd_sof_fw_mod_type {
+  SOF_FW_BASE = 0,
+  SOF_FW_MODULE = 1,
+};
+struct snd_sof_mod_hdr {
+  enum snd_sof_fw_mod_type type;
+  __u32 size;
+  __u32 num_blocks;
+} __packed;
+struct snd_sof_fw_header {
+  unsigned char sig[SND_SOF_FW_SIG_SIZE];
+  __u32 file_size;
+  __u32 num_modules;
+  __u32 abi;
+} __packed;
+#endif
diff --git a/x86_64-linux-musl/include/sound/sof/header.h b/x86_64-linux-musl/include/sound/sof/header.h
new file mode 100644
index 0000000..3fbd4a4
--- /dev/null
+++ b/x86_64-linux-musl/include/sound/sof/header.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 __INCLUDE_UAPI_SOUND_SOF_USER_HEADER_H__
+#define __INCLUDE_UAPI_SOUND_SOF_USER_HEADER_H__
+#include <linux/types.h>
+struct sof_abi_hdr {
+  __u32 magic;
+  __u32 type;
+  __u32 size;
+  __u32 abi;
+  __u32 reserved[4];
+  __u32 data[0];
+} __packed;
+#endif
diff --git a/x86_64-linux-musl/include/sound/sof/tokens.h b/x86_64-linux-musl/include/sound/sof/tokens.h
new file mode 100644
index 0000000..4499cd3
--- /dev/null
+++ b/x86_64-linux-musl/include/sound/sof/tokens.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 __INCLUDE_UAPI_SOF_TOPOLOGY_H__
+#define __INCLUDE_UAPI_SOF_TOPOLOGY_H__
+#define SOF_TPLG_KCTL_VOL_ID 256
+#define SOF_TPLG_KCTL_ENUM_ID 257
+#define SOF_TPLG_KCTL_BYTES_ID 258
+#define SOF_TPLG_KCTL_SWITCH_ID 259
+#define SOF_TPLG_KCTL_BYTES_VOLATILE_RO 260
+#define SOF_TPLG_KCTL_BYTES_VOLATILE_RW 261
+#define SOF_TPLG_KCTL_BYTES_WO_ID 262
+#define SOF_TKN_BUF_SIZE 100
+#define SOF_TKN_BUF_CAPS 101
+#define SOF_TKN_DAI_TYPE 154
+#define SOF_TKN_DAI_INDEX 155
+#define SOF_TKN_DAI_DIRECTION 156
+#define SOF_TKN_SCHED_PERIOD 200
+#define SOF_TKN_SCHED_PRIORITY 201
+#define SOF_TKN_SCHED_MIPS 202
+#define SOF_TKN_SCHED_CORE 203
+#define SOF_TKN_SCHED_FRAMES 204
+#define SOF_TKN_SCHED_TIME_DOMAIN 205
+#define SOF_TKN_SCHED_DYNAMIC_PIPELINE 206
+#define SOF_TKN_VOLUME_RAMP_STEP_TYPE 250
+#define SOF_TKN_VOLUME_RAMP_STEP_MS 251
+#define SOF_TKN_SRC_RATE_IN 300
+#define SOF_TKN_SRC_RATE_OUT 301
+#define SOF_TKN_ASRC_RATE_IN 320
+#define SOF_TKN_ASRC_RATE_OUT 321
+#define SOF_TKN_ASRC_ASYNCHRONOUS_MODE 322
+#define SOF_TKN_ASRC_OPERATION_MODE 323
+#define SOF_TKN_PCM_DMAC_CONFIG 353
+#define SOF_TKN_COMP_PERIOD_SINK_COUNT 400
+#define SOF_TKN_COMP_PERIOD_SOURCE_COUNT 401
+#define SOF_TKN_COMP_FORMAT 402
+#define SOF_TKN_COMP_CORE_ID 404
+#define SOF_TKN_COMP_UUID 405
+#define SOF_TKN_INTEL_SSP_CLKS_CONTROL 500
+#define SOF_TKN_INTEL_SSP_MCLK_ID 501
+#define SOF_TKN_INTEL_SSP_SAMPLE_BITS 502
+#define SOF_TKN_INTEL_SSP_FRAME_PULSE_WIDTH 503
+#define SOF_TKN_INTEL_SSP_QUIRKS 504
+#define SOF_TKN_INTEL_SSP_TDM_PADDING_PER_SLOT 505
+#define SOF_TKN_INTEL_SSP_BCLK_DELAY 506
+#define SOF_TKN_INTEL_DMIC_DRIVER_VERSION 600
+#define SOF_TKN_INTEL_DMIC_CLK_MIN 601
+#define SOF_TKN_INTEL_DMIC_CLK_MAX 602
+#define SOF_TKN_INTEL_DMIC_DUTY_MIN 603
+#define SOF_TKN_INTEL_DMIC_DUTY_MAX 604
+#define SOF_TKN_INTEL_DMIC_NUM_PDM_ACTIVE 605
+#define SOF_TKN_INTEL_DMIC_SAMPLE_RATE 608
+#define SOF_TKN_INTEL_DMIC_FIFO_WORD_LENGTH 609
+#define SOF_TKN_INTEL_DMIC_UNMUTE_RAMP_TIME_MS 610
+#define SOF_TKN_INTEL_DMIC_PDM_CTRL_ID 700
+#define SOF_TKN_INTEL_DMIC_PDM_MIC_A_Enable 701
+#define SOF_TKN_INTEL_DMIC_PDM_MIC_B_Enable 702
+#define SOF_TKN_INTEL_DMIC_PDM_POLARITY_A 703
+#define SOF_TKN_INTEL_DMIC_PDM_POLARITY_B 704
+#define SOF_TKN_INTEL_DMIC_PDM_CLK_EDGE 705
+#define SOF_TKN_INTEL_DMIC_PDM_SKEW 706
+#define SOF_TKN_TONE_SAMPLE_RATE 800
+#define SOF_TKN_PROCESS_TYPE 900
+#define SOF_TKN_EFFECT_TYPE SOF_TKN_PROCESS_TYPE
+#define SOF_TKN_IMX_SAI_MCLK_ID 1000
+#define SOF_TKN_IMX_ESAI_MCLK_ID 1100
+#define SOF_TKN_STREAM_PLAYBACK_COMPATIBLE_D0I3 1200
+#define SOF_TKN_STREAM_CAPTURE_COMPATIBLE_D0I3 1201
+#define SOF_TKN_MUTE_LED_USE 1300
+#define SOF_TKN_MUTE_LED_DIRECTION 1301
+#define SOF_TKN_INTEL_ALH_RATE 1400
+#define SOF_TKN_INTEL_ALH_CH 1401
+#define SOF_TKN_INTEL_HDA_RATE 1500
+#define SOF_TKN_INTEL_HDA_CH 1501
+#endif
diff --git a/x86_64-linux-musl/include/sound/tlv.h b/x86_64-linux-musl/include/sound/tlv.h
new file mode 100644
index 0000000..0822429
--- /dev/null
+++ b/x86_64-linux-musl/include/sound/tlv.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_SOUND_TLV_H
+#define __UAPI_SOUND_TLV_H
+#define SNDRV_CTL_TLVT_CONTAINER 0
+#define SNDRV_CTL_TLVT_DB_SCALE 1
+#define SNDRV_CTL_TLVT_DB_LINEAR 2
+#define SNDRV_CTL_TLVT_DB_RANGE 3
+#define SNDRV_CTL_TLVT_DB_MINMAX 4
+#define SNDRV_CTL_TLVT_DB_MINMAX_MUTE 5
+#define SNDRV_CTL_TLVT_CHMAP_FIXED 0x101
+#define SNDRV_CTL_TLVT_CHMAP_VAR 0x102
+#define SNDRV_CTL_TLVT_CHMAP_PAIRED 0x103
+#define SNDRV_CTL_TLVD_ITEM(type,...) (type), SNDRV_CTL_TLVD_LENGTH(__VA_ARGS__), __VA_ARGS__
+#define SNDRV_CTL_TLVD_LENGTH(...) ((unsigned int) sizeof((const unsigned int[]) { __VA_ARGS__ }))
+#define SNDRV_CTL_TLVO_TYPE 0
+#define SNDRV_CTL_TLVO_LEN 1
+#define SNDRV_CTL_TLVD_CONTAINER_ITEM(...) SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_CONTAINER, __VA_ARGS__)
+#define SNDRV_CTL_TLVD_DECLARE_CONTAINER(name,...) unsigned int name[] = { SNDRV_CTL_TLVD_CONTAINER_ITEM(__VA_ARGS__) }
+#define SNDRV_CTL_TLVD_DB_SCALE_MASK 0xffff
+#define SNDRV_CTL_TLVD_DB_SCALE_MUTE 0x10000
+#define SNDRV_CTL_TLVD_DB_SCALE_ITEM(min,step,mute) SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_SCALE, (min), ((step) & SNDRV_CTL_TLVD_DB_SCALE_MASK) | ((mute) ? SNDRV_CTL_TLVD_DB_SCALE_MUTE : 0))
+#define SNDRV_CTL_TLVD_DECLARE_DB_SCALE(name,min,step,mute) unsigned int name[] = { SNDRV_CTL_TLVD_DB_SCALE_ITEM(min, step, mute) }
+#define SNDRV_CTL_TLVO_DB_SCALE_MIN 2
+#define SNDRV_CTL_TLVO_DB_SCALE_MUTE_AND_STEP 3
+#define SNDRV_CTL_TLVD_DB_MINMAX_ITEM(min_dB,max_dB) SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_MINMAX, (min_dB), (max_dB))
+#define SNDRV_CTL_TLVD_DB_MINMAX_MUTE_ITEM(min_dB,max_dB) SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_MINMAX_MUTE, (min_dB), (max_dB))
+#define SNDRV_CTL_TLVD_DECLARE_DB_MINMAX(name,min_dB,max_dB) unsigned int name[] = { SNDRV_CTL_TLVD_DB_MINMAX_ITEM(min_dB, max_dB) }
+#define SNDRV_CTL_TLVD_DECLARE_DB_MINMAX_MUTE(name,min_dB,max_dB) unsigned int name[] = { SNDRV_CTL_TLVD_DB_MINMAX_MUTE_ITEM(min_dB, max_dB) }
+#define SNDRV_CTL_TLVO_DB_MINMAX_MIN 2
+#define SNDRV_CTL_TLVO_DB_MINMAX_MAX 3
+#define SNDRV_CTL_TLVD_DB_LINEAR_ITEM(min_dB,max_dB) SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_LINEAR, (min_dB), (max_dB))
+#define SNDRV_CTL_TLVD_DECLARE_DB_LINEAR(name,min_dB,max_dB) unsigned int name[] = { SNDRV_CTL_TLVD_DB_LINEAR_ITEM(min_dB, max_dB) }
+#define SNDRV_CTL_TLVO_DB_LINEAR_MIN 2
+#define SNDRV_CTL_TLVO_DB_LINEAR_MAX 3
+#define SNDRV_CTL_TLVD_DB_RANGE_ITEM(...) SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_RANGE, __VA_ARGS__)
+#define SNDRV_CTL_TLVD_DECLARE_DB_RANGE(name,...) unsigned int name[] = { SNDRV_CTL_TLVD_DB_RANGE_ITEM(__VA_ARGS__) }
+#define SNDRV_CTL_TLVD_DB_GAIN_MUTE - 9999999
+#endif
diff --git a/x86_64-linux-musl/include/sound/usb_stream.h b/x86_64-linux-musl/include/sound/usb_stream.h
new file mode 100644
index 0000000..bb7fe80
--- /dev/null
+++ b/x86_64-linux-musl/include/sound/usb_stream.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__SOUND_USB_STREAM_H
+#define _UAPI__SOUND_USB_STREAM_H
+#define USB_STREAM_INTERFACE_VERSION 2
+#define SNDRV_USB_STREAM_IOCTL_SET_PARAMS _IOW('H', 0x90, struct usb_stream_config)
+struct usb_stream_packet {
+  unsigned offset;
+  unsigned length;
+};
+struct usb_stream_config {
+  unsigned version;
+  unsigned sample_rate;
+  unsigned period_frames;
+  unsigned frame_size;
+};
+struct usb_stream {
+  struct usb_stream_config cfg;
+  unsigned read_size;
+  unsigned write_size;
+  int period_size;
+  unsigned state;
+  int idle_insize;
+  int idle_outsize;
+  int sync_packet;
+  unsigned insize_done;
+  unsigned periods_done;
+  unsigned periods_polled;
+  struct usb_stream_packet outpacket[2];
+  unsigned inpackets;
+  unsigned inpacket_head;
+  unsigned inpacket_split;
+  unsigned inpacket_split_at;
+  unsigned next_inpacket_split;
+  unsigned next_inpacket_split_at;
+  struct usb_stream_packet inpacket[0];
+};
+enum usb_stream_state {
+  usb_stream_invalid,
+  usb_stream_stopped,
+  usb_stream_sync0,
+  usb_stream_sync1,
+  usb_stream_ready,
+  usb_stream_running,
+  usb_stream_xrun,
+};
+#endif
diff --git a/x86_64-linux-musl/include/spawn.h b/x86_64-linux-musl/include/spawn.h
new file mode 100644
index 0000000..8eb73e0
--- /dev/null
+++ b/x86_64-linux-musl/include/spawn.h
@@ -0,0 +1,83 @@
+#ifndef _SPAWN_H
+#define _SPAWN_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_mode_t
+#define __NEED_pid_t
+#define __NEED_sigset_t
+
+#include <bits/alltypes.h>
+
+struct sched_param;
+
+#define POSIX_SPAWN_RESETIDS 1
+#define POSIX_SPAWN_SETPGROUP 2
+#define POSIX_SPAWN_SETSIGDEF 4
+#define POSIX_SPAWN_SETSIGMASK 8
+#define POSIX_SPAWN_SETSCHEDPARAM 16
+#define POSIX_SPAWN_SETSCHEDULER 32
+#define POSIX_SPAWN_USEVFORK 64
+#define POSIX_SPAWN_SETSID 128
+
+typedef struct {
+	int __flags;
+	pid_t __pgrp;
+	sigset_t __def, __mask;
+	int __prio, __pol;
+	void *__fn;
+	char __pad[64-sizeof(void *)];
+} posix_spawnattr_t;
+
+typedef struct {
+	int __pad0[2];
+	void *__actions;
+	int __pad[16];
+} posix_spawn_file_actions_t;
+
+int posix_spawn(pid_t *__restrict, const char *__restrict, const posix_spawn_file_actions_t *,
+	const posix_spawnattr_t *__restrict, char *const *__restrict, char *const *__restrict);
+int posix_spawnp(pid_t *__restrict, const char *__restrict, const posix_spawn_file_actions_t *,
+	const posix_spawnattr_t *__restrict, char *const *__restrict, char *const *__restrict);
+
+int posix_spawnattr_init(posix_spawnattr_t *);
+int posix_spawnattr_destroy(posix_spawnattr_t *);
+
+int posix_spawnattr_setflags(posix_spawnattr_t *, short);
+int posix_spawnattr_getflags(const posix_spawnattr_t *__restrict, short *__restrict);
+
+int posix_spawnattr_setpgroup(posix_spawnattr_t *, pid_t);
+int posix_spawnattr_getpgroup(const posix_spawnattr_t *__restrict, pid_t *__restrict);
+
+int posix_spawnattr_setsigmask(posix_spawnattr_t *__restrict, const sigset_t *__restrict);
+int posix_spawnattr_getsigmask(const posix_spawnattr_t *__restrict, sigset_t *__restrict);
+
+int posix_spawnattr_setsigdefault(posix_spawnattr_t *__restrict, const sigset_t *__restrict);
+int posix_spawnattr_getsigdefault(const posix_spawnattr_t *__restrict, sigset_t *__restrict);
+
+int posix_spawnattr_setschedparam(posix_spawnattr_t *__restrict, const struct sched_param *__restrict);
+int posix_spawnattr_getschedparam(const posix_spawnattr_t *__restrict, struct sched_param *__restrict);
+int posix_spawnattr_setschedpolicy(posix_spawnattr_t *, int);
+int posix_spawnattr_getschedpolicy(const posix_spawnattr_t *__restrict, int *__restrict);
+
+int posix_spawn_file_actions_init(posix_spawn_file_actions_t *);
+int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *);
+
+int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *__restrict, int, const char *__restrict, int, mode_t);
+int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *, int);
+int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *, int, int);
+
+#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
+int posix_spawn_file_actions_addchdir_np(posix_spawn_file_actions_t *__restrict, const char *__restrict);
+int posix_spawn_file_actions_addfchdir_np(posix_spawn_file_actions_t *, int);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/stdalign.h b/x86_64-linux-musl/include/stdalign.h
new file mode 100644
index 0000000..2cc94be
--- /dev/null
+++ b/x86_64-linux-musl/include/stdalign.h
@@ -0,0 +1,20 @@
+#ifndef _STDALIGN_H
+#define _STDALIGN_H
+
+#ifndef __cplusplus
+
+/* this whole header only works in C11 or with compiler extensions */
+#if __STDC_VERSION__ < 201112L && defined( __GNUC__)
+#define _Alignas(t) __attribute__((__aligned__(t)))
+#define _Alignof(t) __alignof__(t)
+#endif
+
+#define alignas _Alignas
+#define alignof _Alignof
+
+#endif
+
+#define __alignas_is_defined 1
+#define __alignof_is_defined 1
+
+#endif
diff --git a/x86_64-linux-musl/include/stdarg.h b/x86_64-linux-musl/include/stdarg.h
new file mode 100644
index 0000000..3256f80
--- /dev/null
+++ b/x86_64-linux-musl/include/stdarg.h
@@ -0,0 +1,21 @@
+#ifndef _STDARG_H
+#define _STDARG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __NEED_va_list
+
+#include <bits/alltypes.h>
+
+#define va_start(v,l)   __builtin_va_start(v,l)
+#define va_end(v)       __builtin_va_end(v)
+#define va_arg(v,l)     __builtin_va_arg(v,l)
+#define va_copy(d,s)    __builtin_va_copy(d,s)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/stdbool.h b/x86_64-linux-musl/include/stdbool.h
new file mode 100644
index 0000000..a9d7ab7
--- /dev/null
+++ b/x86_64-linux-musl/include/stdbool.h
@@ -0,0 +1,14 @@
+#ifndef _STDBOOL_H
+#define _STDBOOL_H
+
+#ifndef __cplusplus
+
+#define true 1
+#define false 0
+#define bool _Bool
+
+#endif
+
+#define __bool_true_false_are_defined 1
+
+#endif
diff --git a/x86_64-linux-musl/include/stdc-predef.h b/x86_64-linux-musl/include/stdc-predef.h
new file mode 100644
index 0000000..af1a279
--- /dev/null
+++ b/x86_64-linux-musl/include/stdc-predef.h
@@ -0,0 +1,13 @@
+#ifndef _STDC_PREDEF_H
+#define _STDC_PREDEF_H
+
+#define __STDC_ISO_10646__ 201206L
+
+#if !defined(__GCC_IEC_559) || __GCC_IEC_559 > 0
+#define __STDC_IEC_559__ 1
+#endif
+
+#define __STDC_UTF_16__ 1
+#define __STDC_UTF_32__ 1
+
+#endif
diff --git a/x86_64-linux-musl/include/stddef.h b/x86_64-linux-musl/include/stddef.h
new file mode 100644
index 0000000..f25b863
--- /dev/null
+++ b/x86_64-linux-musl/include/stddef.h
@@ -0,0 +1,27 @@
+#ifndef _STDDEF_H
+#define _STDDEF_H
+
+#if __cplusplus >= 201103L
+#define NULL nullptr
+#elif defined(__cplusplus)
+#define NULL 0L
+#else
+#define NULL ((void*)0)
+#endif
+
+#define __NEED_ptrdiff_t
+#define __NEED_size_t
+#define __NEED_wchar_t
+#if __STDC_VERSION__ >= 201112L || __cplusplus >= 201103L
+#define __NEED_max_align_t
+#endif
+
+#include <bits/alltypes.h>
+
+#if __GNUC__ > 3
+#define offsetof(type, member) __builtin_offsetof(type, member)
+#else
+#define offsetof(type, member) ((size_t)( (char *)&(((type *)0)->member) - (char *)0 ))
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/stdint.h b/x86_64-linux-musl/include/stdint.h
new file mode 100644
index 0000000..a296819
--- /dev/null
+++ b/x86_64-linux-musl/include/stdint.h
@@ -0,0 +1,117 @@
+#ifndef _STDINT_H
+#define _STDINT_H
+
+#define __NEED_int8_t
+#define __NEED_int16_t
+#define __NEED_int32_t
+#define __NEED_int64_t
+
+#define __NEED_uint8_t
+#define __NEED_uint16_t
+#define __NEED_uint32_t
+#define __NEED_uint64_t
+
+#define __NEED_intptr_t
+#define __NEED_uintptr_t
+
+#define __NEED_intmax_t
+#define __NEED_uintmax_t
+
+#include <bits/alltypes.h>
+
+typedef int8_t int_fast8_t;
+typedef int64_t int_fast64_t;
+
+typedef int8_t  int_least8_t;
+typedef int16_t int_least16_t;
+typedef int32_t int_least32_t;
+typedef int64_t int_least64_t;
+
+typedef uint8_t uint_fast8_t;
+typedef uint64_t uint_fast64_t;
+
+typedef uint8_t  uint_least8_t;
+typedef uint16_t uint_least16_t;
+typedef uint32_t uint_least32_t;
+typedef uint64_t uint_least64_t;
+
+#define INT8_MIN   (-1-0x7f)
+#define INT16_MIN  (-1-0x7fff)
+#define INT32_MIN  (-1-0x7fffffff)
+#define INT64_MIN  (-1-0x7fffffffffffffff)
+
+#define INT8_MAX   (0x7f)
+#define INT16_MAX  (0x7fff)
+#define INT32_MAX  (0x7fffffff)
+#define INT64_MAX  (0x7fffffffffffffff)
+
+#define UINT8_MAX  (0xff)
+#define UINT16_MAX (0xffff)
+#define UINT32_MAX (0xffffffffu)
+#define UINT64_MAX (0xffffffffffffffffu)
+
+#define INT_FAST8_MIN   INT8_MIN
+#define INT_FAST64_MIN  INT64_MIN
+
+#define INT_LEAST8_MIN   INT8_MIN
+#define INT_LEAST16_MIN  INT16_MIN
+#define INT_LEAST32_MIN  INT32_MIN
+#define INT_LEAST64_MIN  INT64_MIN
+
+#define INT_FAST8_MAX   INT8_MAX
+#define INT_FAST64_MAX  INT64_MAX
+
+#define INT_LEAST8_MAX   INT8_MAX
+#define INT_LEAST16_MAX  INT16_MAX
+#define INT_LEAST32_MAX  INT32_MAX
+#define INT_LEAST64_MAX  INT64_MAX
+
+#define UINT_FAST8_MAX  UINT8_MAX
+#define UINT_FAST64_MAX UINT64_MAX
+
+#define UINT_LEAST8_MAX  UINT8_MAX
+#define UINT_LEAST16_MAX UINT16_MAX
+#define UINT_LEAST32_MAX UINT32_MAX
+#define UINT_LEAST64_MAX UINT64_MAX
+
+#define INTMAX_MIN  INT64_MIN
+#define INTMAX_MAX  INT64_MAX
+#define UINTMAX_MAX UINT64_MAX
+
+#define WINT_MIN 0U
+#define WINT_MAX UINT32_MAX
+
+#if L'\0'-1 > 0
+#define WCHAR_MAX (0xffffffffu+L'\0')
+#define WCHAR_MIN (0+L'\0')
+#else
+#define WCHAR_MAX (0x7fffffff+L'\0')
+#define WCHAR_MIN (-1-0x7fffffff+L'\0')
+#endif
+
+#define SIG_ATOMIC_MIN  INT32_MIN
+#define SIG_ATOMIC_MAX  INT32_MAX
+
+#include <bits/stdint.h>
+
+#define INT8_C(c)  c
+#define INT16_C(c) c
+#define INT32_C(c) c
+
+#define UINT8_C(c)  c
+#define UINT16_C(c) c
+#define UINT32_C(c) c ## U
+
+#if UINTPTR_MAX == UINT64_MAX
+#define INT64_C(c) c ## L
+#define UINT64_C(c) c ## UL
+#define INTMAX_C(c)  c ## L
+#define UINTMAX_C(c) c ## UL
+#else
+#define INT64_C(c) c ## LL
+#define UINT64_C(c) c ## ULL
+#define INTMAX_C(c)  c ## LL
+#define UINTMAX_C(c) c ## ULL
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/stdio.h b/x86_64-linux-musl/include/stdio.h
new file mode 100644
index 0000000..d1ed01f
--- /dev/null
+++ b/x86_64-linux-musl/include/stdio.h
@@ -0,0 +1,224 @@
+#ifndef _STDIO_H
+#define _STDIO_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_FILE
+#define __NEED___isoc_va_list
+#define __NEED_size_t
+
+#if __STDC_VERSION__ < 201112L
+#define __NEED_struct__IO_FILE
+#endif
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+#define __NEED_ssize_t
+#define __NEED_off_t
+#define __NEED_va_list
+#endif
+
+#include <bits/alltypes.h>
+
+#if __cplusplus >= 201103L
+#define NULL nullptr
+#elif defined(__cplusplus)
+#define NULL 0L
+#else
+#define NULL ((void*)0)
+#endif
+
+#undef EOF
+#define EOF (-1)
+
+#undef SEEK_SET
+#undef SEEK_CUR
+#undef SEEK_END
+#define SEEK_SET 0
+#define SEEK_CUR 1
+#define SEEK_END 2
+
+#define _IOFBF 0
+#define _IOLBF 1
+#define _IONBF 2
+
+#define BUFSIZ 1024
+#define FILENAME_MAX 4096
+#define FOPEN_MAX 1000
+#define TMP_MAX 10000
+#define L_tmpnam 20
+
+typedef union _G_fpos64_t {
+	char __opaque[16];
+	long long __lldata;
+	double __align;
+} fpos_t;
+
+extern FILE *const stdin;
+extern FILE *const stdout;
+extern FILE *const stderr;
+
+#define stdin  (stdin)
+#define stdout (stdout)
+#define stderr (stderr)
+
+FILE *fopen(const char *__restrict, const char *__restrict);
+FILE *freopen(const char *__restrict, const char *__restrict, FILE *__restrict);
+int fclose(FILE *);
+
+int remove(const char *);
+int rename(const char *, const char *);
+
+int feof(FILE *);
+int ferror(FILE *);
+int fflush(FILE *);
+void clearerr(FILE *);
+
+int fseek(FILE *, long, int);
+long ftell(FILE *);
+void rewind(FILE *);
+
+int fgetpos(FILE *__restrict, fpos_t *__restrict);
+int fsetpos(FILE *, const fpos_t *);
+
+size_t fread(void *__restrict, size_t, size_t, FILE *__restrict);
+size_t fwrite(const void *__restrict, size_t, size_t, FILE *__restrict);
+
+int fgetc(FILE *);
+int getc(FILE *);
+int getchar(void);
+int ungetc(int, FILE *);
+
+int fputc(int, FILE *);
+int putc(int, FILE *);
+int putchar(int);
+
+char *fgets(char *__restrict, int, FILE *__restrict);
+#if __STDC_VERSION__ < 201112L
+char *gets(char *);
+#endif
+
+int fputs(const char *__restrict, FILE *__restrict);
+int puts(const char *);
+
+int printf(const char *__restrict, ...);
+int fprintf(FILE *__restrict, const char *__restrict, ...);
+int sprintf(char *__restrict, const char *__restrict, ...);
+int snprintf(char *__restrict, size_t, const char *__restrict, ...);
+
+int vprintf(const char *__restrict, __isoc_va_list);
+int vfprintf(FILE *__restrict, const char *__restrict, __isoc_va_list);
+int vsprintf(char *__restrict, const char *__restrict, __isoc_va_list);
+int vsnprintf(char *__restrict, size_t, const char *__restrict, __isoc_va_list);
+
+int scanf(const char *__restrict, ...);
+int fscanf(FILE *__restrict, const char *__restrict, ...);
+int sscanf(const char *__restrict, const char *__restrict, ...);
+int vscanf(const char *__restrict, __isoc_va_list);
+int vfscanf(FILE *__restrict, const char *__restrict, __isoc_va_list);
+int vsscanf(const char *__restrict, const char *__restrict, __isoc_va_list);
+
+void perror(const char *);
+
+int setvbuf(FILE *__restrict, char *__restrict, int, size_t);
+void setbuf(FILE *__restrict, char *__restrict);
+
+char *tmpnam(char *);
+FILE *tmpfile(void);
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+FILE *fmemopen(void *__restrict, size_t, const char *__restrict);
+FILE *open_memstream(char **, size_t *);
+FILE *fdopen(int, const char *);
+FILE *popen(const char *, const char *);
+int pclose(FILE *);
+int fileno(FILE *);
+int fseeko(FILE *, off_t, int);
+off_t ftello(FILE *);
+int dprintf(int, const char *__restrict, ...);
+int vdprintf(int, const char *__restrict, __isoc_va_list);
+void flockfile(FILE *);
+int ftrylockfile(FILE *);
+void funlockfile(FILE *);
+int getc_unlocked(FILE *);
+int getchar_unlocked(void);
+int putc_unlocked(int, FILE *);
+int putchar_unlocked(int);
+ssize_t getdelim(char **__restrict, size_t *__restrict, int, FILE *__restrict);
+ssize_t getline(char **__restrict, size_t *__restrict, FILE *__restrict);
+int renameat(int, const char *, int, const char *);
+char *ctermid(char *);
+#define L_ctermid 20
+#endif
+
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+#define P_tmpdir "/tmp"
+char *tempnam(const char *, const char *);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define L_cuserid 20
+char *cuserid(char *);
+void setlinebuf(FILE *);
+void setbuffer(FILE *, char *, size_t);
+int fgetc_unlocked(FILE *);
+int fputc_unlocked(int, FILE *);
+int fflush_unlocked(FILE *);
+size_t fread_unlocked(void *, size_t, size_t, FILE *);
+size_t fwrite_unlocked(const void *, size_t, size_t, FILE *);
+void clearerr_unlocked(FILE *);
+int feof_unlocked(FILE *);
+int ferror_unlocked(FILE *);
+int fileno_unlocked(FILE *);
+int getw(FILE *);
+int putw(int, FILE *);
+char *fgetln(FILE *, size_t *);
+int asprintf(char **, const char *, ...);
+int vasprintf(char **, const char *, __isoc_va_list);
+#endif
+
+#ifdef _GNU_SOURCE
+char *fgets_unlocked(char *, int, FILE *);
+int fputs_unlocked(const char *, FILE *);
+
+typedef ssize_t (cookie_read_function_t)(void *, char *, size_t);
+typedef ssize_t (cookie_write_function_t)(void *, const char *, size_t);
+typedef int (cookie_seek_function_t)(void *, off_t *, int);
+typedef int (cookie_close_function_t)(void *);
+
+typedef struct _IO_cookie_io_functions_t {
+	cookie_read_function_t *read;
+	cookie_write_function_t *write;
+	cookie_seek_function_t *seek;
+	cookie_close_function_t *close;
+} cookie_io_functions_t;
+
+FILE *fopencookie(void *, const char *, cookie_io_functions_t);
+#endif
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define tmpfile64 tmpfile
+#define fopen64 fopen
+#define freopen64 freopen
+#define fseeko64 fseeko
+#define ftello64 ftello
+#define fgetpos64 fgetpos
+#define fsetpos64 fsetpos
+#define fpos64_t fpos_t
+#define off64_t off_t
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/stdio_ext.h b/x86_64-linux-musl/include/stdio_ext.h
new file mode 100644
index 0000000..e3ab7fd
--- /dev/null
+++ b/x86_64-linux-musl/include/stdio_ext.h
@@ -0,0 +1,34 @@
+#ifndef _STDIO_EXT_H
+#define _STDIO_EXT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#define FSETLOCKING_QUERY 0
+#define FSETLOCKING_INTERNAL 1
+#define FSETLOCKING_BYCALLER 2
+
+void _flushlbf(void);
+int __fsetlocking(FILE *, int);
+int __fwriting(FILE *);
+int __freading(FILE *);
+int __freadable(FILE *);
+int __fwritable(FILE *);
+int __flbf(FILE *);
+size_t __fbufsize(FILE *);
+size_t __fpending(FILE *);
+int __fpurge(FILE *);
+
+size_t __freadahead(FILE *);
+const char *__freadptr(FILE *, size_t *);
+void __freadptrinc(FILE *, size_t);
+void __fseterr(FILE *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/stdlib.h b/x86_64-linux-musl/include/stdlib.h
new file mode 100644
index 0000000..b507ca3
--- /dev/null
+++ b/x86_64-linux-musl/include/stdlib.h
@@ -0,0 +1,179 @@
+#ifndef _STDLIB_H
+#define _STDLIB_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#if __cplusplus >= 201103L
+#define NULL nullptr
+#elif defined(__cplusplus)
+#define NULL 0L
+#else
+#define NULL ((void*)0)
+#endif
+
+#define __NEED_size_t
+#define __NEED_wchar_t
+
+#include <bits/alltypes.h>
+
+int atoi (const char *);
+long atol (const char *);
+long long atoll (const char *);
+double atof (const char *);
+
+float strtof (const char *__restrict, char **__restrict);
+double strtod (const char *__restrict, char **__restrict);
+long double strtold (const char *__restrict, char **__restrict);
+
+long strtol (const char *__restrict, char **__restrict, int);
+unsigned long strtoul (const char *__restrict, char **__restrict, int);
+long long strtoll (const char *__restrict, char **__restrict, int);
+unsigned long long strtoull (const char *__restrict, char **__restrict, int);
+
+int rand (void);
+void srand (unsigned);
+
+void *malloc (size_t);
+void *calloc (size_t, size_t);
+void *realloc (void *, size_t);
+void free (void *);
+void *aligned_alloc(size_t, size_t);
+
+_Noreturn void abort (void);
+int atexit (void (*) (void));
+_Noreturn void exit (int);
+_Noreturn void _Exit (int);
+int at_quick_exit (void (*) (void));
+_Noreturn void quick_exit (int);
+
+char *getenv (const char *);
+
+int system (const char *);
+
+void *bsearch (const void *, const void *, size_t, size_t, int (*)(const void *, const void *));
+void qsort (void *, size_t, size_t, int (*)(const void *, const void *));
+
+int abs (int);
+long labs (long);
+long long llabs (long long);
+
+typedef struct { int quot, rem; } div_t;
+typedef struct { long quot, rem; } ldiv_t;
+typedef struct { long long quot, rem; } lldiv_t;
+
+div_t div (int, int);
+ldiv_t ldiv (long, long);
+lldiv_t lldiv (long long, long long);
+
+int mblen (const char *, size_t);
+int mbtowc (wchar_t *__restrict, const char *__restrict, size_t);
+int wctomb (char *, wchar_t);
+size_t mbstowcs (wchar_t *__restrict, const char *__restrict, size_t);
+size_t wcstombs (char *__restrict, const wchar_t *__restrict, size_t);
+
+#define EXIT_FAILURE 1
+#define EXIT_SUCCESS 0
+
+size_t __ctype_get_mb_cur_max(void);
+#define MB_CUR_MAX (__ctype_get_mb_cur_max())
+
+#define RAND_MAX (0x7fffffff)
+
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+
+#define WNOHANG    1
+#define WUNTRACED  2
+
+#define WEXITSTATUS(s) (((s) & 0xff00) >> 8)
+#define WTERMSIG(s) ((s) & 0x7f)
+#define WSTOPSIG(s) WEXITSTATUS(s)
+#define WIFEXITED(s) (!WTERMSIG(s))
+#define WIFSTOPPED(s) ((short)((((s)&0xffff)*0x10001)>>8) > 0x7f00)
+#define WIFSIGNALED(s) (((s)&0xffff)-1U < 0xffu)
+
+int posix_memalign (void **, size_t, size_t);
+int setenv (const char *, const char *, int);
+int unsetenv (const char *);
+int mkstemp (char *);
+int mkostemp (char *, int);
+char *mkdtemp (char *);
+int getsubopt (char **, char *const *, char **);
+int rand_r (unsigned *);
+
+#endif
+
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+char *realpath (const char *__restrict, char *__restrict);
+long int random (void);
+void srandom (unsigned int);
+char *initstate (unsigned int, char *, size_t);
+char *setstate (char *);
+int putenv (char *);
+int posix_openpt (int);
+int grantpt (int);
+int unlockpt (int);
+char *ptsname (int);
+char *l64a (long);
+long a64l (const char *);
+void setkey (const char *);
+double drand48 (void);
+double erand48 (unsigned short [3]);
+long int lrand48 (void);
+long int nrand48 (unsigned short [3]);
+long mrand48 (void);
+long jrand48 (unsigned short [3]);
+void srand48 (long);
+unsigned short *seed48 (unsigned short [3]);
+void lcong48 (unsigned short [7]);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#include <alloca.h>
+char *mktemp (char *);
+int mkstemps (char *, int);
+int mkostemps (char *, int, int);
+void *valloc (size_t);
+void *memalign(size_t, size_t);
+int getloadavg(double *, int);
+int clearenv(void);
+#define WCOREDUMP(s) ((s) & 0x80)
+#define WIFCONTINUED(s) ((s) == 0xffff)
+void *reallocarray (void *, size_t, size_t);
+void qsort_r (void *, size_t, size_t, int (*)(const void *, const void *, void *), void *);
+#endif
+
+#ifdef _GNU_SOURCE
+int ptsname_r(int, char *, size_t);
+char *ecvt(double, int, int *, int *);
+char *fcvt(double, int, int *, int *);
+char *gcvt(double, int, char *);
+char *secure_getenv(const char *);
+struct __locale_struct;
+float strtof_l(const char *__restrict, char **__restrict, struct __locale_struct *);
+double strtod_l(const char *__restrict, char **__restrict, struct __locale_struct *);
+long double strtold_l(const char *__restrict, char **__restrict, struct __locale_struct *);
+#endif
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define mkstemp64 mkstemp
+#define mkostemp64 mkostemp
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define mkstemps64 mkstemps
+#define mkostemps64 mkostemps
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/stdnoreturn.h b/x86_64-linux-musl/include/stdnoreturn.h
new file mode 100644
index 0000000..5c6aeeb
--- /dev/null
+++ b/x86_64-linux-musl/include/stdnoreturn.h
@@ -0,0 +1,7 @@
+#ifndef _STDNORETURN_H
+#define _STDNORETURN_H
+#ifndef __cplusplus
+#include <features.h>
+#define noreturn _Noreturn
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/string.h b/x86_64-linux-musl/include/string.h
new file mode 100644
index 0000000..43ad094
--- /dev/null
+++ b/x86_64-linux-musl/include/string.h
@@ -0,0 +1,107 @@
+#ifndef	_STRING_H
+#define	_STRING_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#if __cplusplus >= 201103L
+#define NULL nullptr
+#elif defined(__cplusplus)
+#define NULL 0L
+#else
+#define NULL ((void*)0)
+#endif
+
+#define __NEED_size_t
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+#define __NEED_locale_t
+#endif
+
+#include <bits/alltypes.h>
+
+void *memcpy (void *__restrict, const void *__restrict, size_t);
+void *memmove (void *, const void *, size_t);
+void *memset (void *, int, size_t);
+int memcmp (const void *, const void *, size_t);
+void *memchr (const void *, int, size_t);
+
+char *strcpy (char *__restrict, const char *__restrict);
+char *strncpy (char *__restrict, const char *__restrict, size_t);
+
+char *strcat (char *__restrict, const char *__restrict);
+char *strncat (char *__restrict, const char *__restrict, size_t);
+
+int strcmp (const char *, const char *);
+int strncmp (const char *, const char *, size_t);
+
+int strcoll (const char *, const char *);
+size_t strxfrm (char *__restrict, const char *__restrict, size_t);
+
+char *strchr (const char *, int);
+char *strrchr (const char *, int);
+
+size_t strcspn (const char *, const char *);
+size_t strspn (const char *, const char *);
+char *strpbrk (const char *, const char *);
+char *strstr (const char *, const char *);
+char *strtok (char *__restrict, const char *__restrict);
+
+size_t strlen (const char *);
+
+char *strerror (int);
+
+#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
+#include <strings.h>
+#endif
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+char *strtok_r (char *__restrict, const char *__restrict, char **__restrict);
+int strerror_r (int, char *, size_t);
+char *stpcpy(char *__restrict, const char *__restrict);
+char *stpncpy(char *__restrict, const char *__restrict, size_t);
+size_t strnlen (const char *, size_t);
+char *strdup (const char *);
+char *strndup (const char *, size_t);
+char *strsignal(int);
+char *strerror_l (int, locale_t);
+int strcoll_l (const char *, const char *, locale_t);
+size_t strxfrm_l (char *__restrict, const char *__restrict, size_t, locale_t);
+#endif
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+void *memccpy (void *__restrict, const void *__restrict, int, size_t);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+char *strsep(char **, const char *);
+size_t strlcat (char *, const char *, size_t);
+size_t strlcpy (char *, const char *, size_t);
+void explicit_bzero (void *, size_t);
+#endif
+
+#ifdef _GNU_SOURCE
+#define	strdupa(x)	strcpy(alloca(strlen(x)+1),x)
+int strverscmp (const char *, const char *);
+char *strchrnul(const char *, int);
+char *strcasestr(const char *, const char *);
+void *memmem(const void *, size_t, const void *, size_t);
+void *memrchr(const void *, int, size_t);
+void *mempcpy(void *, const void *, size_t);
+#ifndef __cplusplus
+char *basename();
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/strings.h b/x86_64-linux-musl/include/strings.h
new file mode 100644
index 0000000..db0960b
--- /dev/null
+++ b/x86_64-linux-musl/include/strings.h
@@ -0,0 +1,39 @@
+#ifndef	_STRINGS_H
+#define	_STRINGS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define __NEED_size_t
+#define __NEED_locale_t
+#include <bits/alltypes.h>
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_POSIX_SOURCE) \
+ || (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE+0 < 200809L) \
+ || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700)
+int bcmp (const void *, const void *, size_t);
+void bcopy (const void *, void *, size_t);
+void bzero (void *, size_t);
+char *index (const char *, int);
+char *rindex (const char *, int);
+#endif
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)  || defined(_BSD_SOURCE)
+int ffs (int);
+int ffsl (long);
+int ffsll (long long);
+#endif
+
+int strcasecmp (const char *, const char *);
+int strncasecmp (const char *, const char *, size_t);
+
+int strcasecmp_l (const char *, const char *, locale_t);
+int strncasecmp_l (const char *, const char *, size_t, locale_t);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/stropts.h b/x86_64-linux-musl/include/stropts.h
new file mode 100644
index 0000000..c99c922
--- /dev/null
+++ b/x86_64-linux-musl/include/stropts.h
@@ -0,0 +1,139 @@
+#ifndef _STROPTS_H
+#define _STROPTS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __SID		('S' << 8)
+
+#define I_NREAD		(__SID | 1)
+#define I_PUSH		(__SID | 2)
+#define I_POP		(__SID | 3)
+#define I_LOOK		(__SID | 4)
+#define I_FLUSH		(__SID | 5)
+#define I_SRDOPT	(__SID | 6)
+#define I_GRDOPT	(__SID | 7)
+#define I_STR		(__SID | 8)
+#define I_SETSIG	(__SID | 9)
+#define I_GETSIG	(__SID |10)
+#define I_FIND		(__SID |11)
+#define I_LINK		(__SID |12)
+#define I_UNLINK	(__SID |13)
+#define I_PEEK		(__SID |15)
+#define I_FDINSERT	(__SID |16)
+#define I_SENDFD	(__SID |17)
+#define I_RECVFD	(__SID |14)
+#define I_SWROPT	(__SID |19)
+#define I_GWROPT	(__SID |20)
+#define I_LIST		(__SID |21)
+#define I_PLINK		(__SID |22)
+#define I_PUNLINK	(__SID |23)
+#define I_FLUSHBAND	(__SID |28)
+#define I_CKBAND	(__SID |29)
+#define I_GETBAND	(__SID |30)
+#define I_ATMARK	(__SID |31)
+#define I_SETCLTIME	(__SID |32)
+#define I_GETCLTIME	(__SID |33)
+#define I_CANPUT	(__SID |34)
+
+#define FMNAMESZ	8
+
+#define FLUSHR		0x01
+#define FLUSHW		0x02
+#define FLUSHRW		0x03
+#define FLUSHBAND	0x04
+
+#define S_INPUT		0x0001
+#define S_HIPRI		0x0002
+#define S_OUTPUT	0x0004
+#define S_MSG		0x0008
+#define S_ERROR		0x0010
+#define S_HANGUP	0x0020
+#define S_RDNORM	0x0040
+#define S_WRNORM	S_OUTPUT
+#define S_RDBAND	0x0080
+#define S_WRBAND	0x0100
+#define S_BANDURG	0x0200
+
+#define RS_HIPRI	0x01
+
+#define RNORM		0x0000
+#define RMSGD		0x0001
+#define RMSGN		0x0002
+#define RPROTDAT	0x0004
+#define RPROTDIS	0x0008
+#define RPROTNORM	0x0010
+#define RPROTMASK	0x001C
+
+#define SNDZERO		0x001
+#define SNDPIPE		0x002
+
+#define ANYMARK		0x01
+#define LASTMARK	0x02
+
+#define MUXID_ALL	(-1)
+
+#define MSG_HIPRI	0x01
+#define MSG_ANY		0x02
+#define MSG_BAND	0x04
+
+#define MORECTL		1
+#define MOREDATA	2
+
+struct bandinfo {
+	unsigned char bi_pri;
+	int bi_flag;
+};
+
+struct strbuf {
+	int maxlen;
+	int len;
+	char *buf;
+};
+
+struct strpeek {
+	struct strbuf ctlbuf;
+	struct strbuf databuf;
+	unsigned flags;
+};
+
+struct strfdinsert {
+	struct strbuf ctlbuf;
+	struct strbuf databuf;
+	unsigned flags;
+	int fildes;
+	int offset;
+};
+
+struct strioctl {
+	int ic_cmd;
+	int ic_timout;
+	int ic_len;
+	char *ic_dp;
+};
+
+struct strrecvfd {
+	int fd;
+	int uid;
+	int gid;
+	char __fill[8];
+};
+
+struct str_mlist {
+	char l_name[FMNAMESZ + 1];
+};
+
+struct str_list {
+	int sl_nmods;
+	struct str_mlist *sl_modlist;
+};
+
+int isastream(int);
+int ioctl(int, int, ...);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/acct.h b/x86_64-linux-musl/include/sys/acct.h
new file mode 100644
index 0000000..fae9d05
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/acct.h
@@ -0,0 +1,72 @@
+#ifndef _SYS_ACCT_H
+#define _SYS_ACCT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <time.h>
+#include <stdint.h>
+
+#define ACCT_COMM 16
+
+typedef uint16_t comp_t;
+
+struct acct {
+	char ac_flag;
+	uint16_t ac_uid;
+	uint16_t ac_gid;
+	uint16_t ac_tty;
+	uint32_t 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;
+	uint32_t ac_exitcode;
+	char ac_comm[ACCT_COMM+1];
+	char ac_pad[10];
+};
+
+
+struct acct_v3 {
+	char ac_flag;
+	char ac_version;
+	uint16_t ac_tty;
+	uint32_t ac_exitcode;
+	uint32_t ac_uid;
+	uint32_t ac_gid;
+	uint32_t ac_pid;
+	uint32_t ac_ppid;
+	uint32_t 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 1
+#define ASU 2
+#define ACORE 8
+#define AXSIG 16
+#define ACCT_BYTEORDER (128*(__BYTE_ORDER==__BIG_ENDIAN))
+#define AHZ 100
+
+int acct(const char *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/auxv.h b/x86_64-linux-musl/include/sys/auxv.h
new file mode 100644
index 0000000..ddccf57
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/auxv.h
@@ -0,0 +1,17 @@
+#ifndef _SYS_AUXV_H
+#define _SYS_AUXV_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <elf.h>
+#include <bits/hwcap.h>
+
+unsigned long getauxval(unsigned long);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/cachectl.h b/x86_64-linux-musl/include/sys/cachectl.h
new file mode 100644
index 0000000..f3b896a
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/cachectl.h
@@ -0,0 +1,22 @@
+#ifndef _SYS_CACHECTL_H
+#define _SYS_CACHECTL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define ICACHE (1<<0)
+#define DCACHE (1<<1)
+#define BCACHE (ICACHE|DCACHE)
+#define CACHEABLE 0
+#define UNCACHEABLE 1
+ 
+int cachectl(void *, int, int);
+int cacheflush(void *, int, int);
+int _flush_cache(void *, int, int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/cdefs.h b/x86_64-linux-musl/include/sys/cdefs.h
new file mode 100644
index 0000000..03302bd
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/cdefs.h
@@ -0,0 +1,9 @@
+#pragma once
+
+#if defined(__cplusplus)
+#define __BEGIN_DECLS extern "C" {
+#define __END_DECLS }
+#else
+#define __BEGIN_DECLS
+#define __END_DECLS
+#endif
diff --git a/x86_64-linux-musl/include/sys/dir.h b/x86_64-linux-musl/include/sys/dir.h
new file mode 100644
index 0000000..9ba1c79
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/dir.h
@@ -0,0 +1,2 @@
+#include <dirent.h>
+#define direct dirent
diff --git a/x86_64-linux-musl/include/sys/epoll.h b/x86_64-linux-musl/include/sys/epoll.h
new file mode 100644
index 0000000..ac81a84
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/epoll.h
@@ -0,0 +1,69 @@
+#ifndef	_SYS_EPOLL_H
+#define	_SYS_EPOLL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+#include <sys/types.h>
+#include <fcntl.h>
+
+#define __NEED_sigset_t
+
+#include <bits/alltypes.h>
+
+#define EPOLL_CLOEXEC O_CLOEXEC
+#define EPOLL_NONBLOCK O_NONBLOCK
+
+enum EPOLL_EVENTS { __EPOLL_DUMMY };
+#define EPOLLIN 0x001
+#define EPOLLPRI 0x002
+#define EPOLLOUT 0x004
+#define EPOLLRDNORM 0x040
+#define EPOLLNVAL 0x020
+#define EPOLLRDBAND 0x080
+#define EPOLLWRNORM 0x100
+#define EPOLLWRBAND 0x200
+#define EPOLLMSG 0x400
+#define EPOLLERR 0x008
+#define EPOLLHUP 0x010
+#define EPOLLRDHUP 0x2000
+#define EPOLLEXCLUSIVE (1U<<28)
+#define EPOLLWAKEUP (1U<<29)
+#define EPOLLONESHOT (1U<<30)
+#define EPOLLET (1U<<31)
+
+#define EPOLL_CTL_ADD 1
+#define EPOLL_CTL_DEL 2
+#define EPOLL_CTL_MOD 3
+
+typedef union epoll_data {
+	void *ptr;
+	int fd;
+	uint32_t u32;
+	uint64_t u64;
+} epoll_data_t;
+
+struct epoll_event {
+	uint32_t events;
+	epoll_data_t data;
+}
+#ifdef __x86_64__
+__attribute__ ((__packed__))
+#endif
+;
+
+
+int epoll_create(int);
+int epoll_create1(int);
+int epoll_ctl(int, int, int, struct epoll_event *);
+int epoll_wait(int, struct epoll_event *, int, int);
+int epoll_pwait(int, struct epoll_event *, int, int, const sigset_t *);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* sys/epoll.h */
diff --git a/x86_64-linux-musl/include/sys/errno.h b/x86_64-linux-musl/include/sys/errno.h
new file mode 100644
index 0000000..35a3e5a
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/errno.h
@@ -0,0 +1,2 @@
+#warning redirecting incorrect #include <sys/errno.h> to <errno.h>
+#include <errno.h>
diff --git a/x86_64-linux-musl/include/sys/eventfd.h b/x86_64-linux-musl/include/sys/eventfd.h
new file mode 100644
index 0000000..dc5c88f
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/eventfd.h
@@ -0,0 +1,26 @@
+#ifndef _SYS_EVENTFD_H
+#define _SYS_EVENTFD_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+#include <fcntl.h>
+
+typedef uint64_t eventfd_t;
+
+#define EFD_SEMAPHORE 1
+#define EFD_CLOEXEC O_CLOEXEC
+#define EFD_NONBLOCK O_NONBLOCK
+
+int eventfd(unsigned int, int);
+int eventfd_read(int, eventfd_t *);
+int eventfd_write(int, eventfd_t);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* sys/eventfd.h */
diff --git a/x86_64-linux-musl/include/sys/fanotify.h b/x86_64-linux-musl/include/sys/fanotify.h
new file mode 100644
index 0000000..10e5f15
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/fanotify.h
@@ -0,0 +1,111 @@
+#ifndef _FANOTIFY_H
+#define _FANOTIFY_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <sys/statfs.h>
+
+struct fanotify_event_metadata {
+	unsigned event_len;
+	unsigned char vers;
+	unsigned char reserved;
+	unsigned short metadata_len;
+	unsigned long long mask
+#ifdef __GNUC__
+	__attribute__((__aligned__(8)))
+#endif
+	;
+	int fd;
+	int pid;
+};
+
+struct fanotify_event_info_header {
+	unsigned char info_type;
+	unsigned char pad;
+	unsigned short len;
+};
+
+struct fanotify_event_info_fid {
+	struct fanotify_event_info_header hdr;
+	fsid_t fsid;
+	unsigned char handle[];
+};
+
+struct fanotify_response {
+	int fd;
+	unsigned response;
+};
+
+#define FAN_ACCESS 0x01
+#define FAN_MODIFY 0x02
+#define FAN_ATTRIB 0x04
+#define FAN_CLOSE_WRITE 0x08
+#define FAN_CLOSE_NOWRITE 0x10
+#define FAN_OPEN 0x20
+#define FAN_MOVED_FROM 0x40
+#define FAN_MOVED_TO 0x80
+#define FAN_CREATE 0x100
+#define FAN_DELETE 0x200
+#define FAN_DELETE_SELF 0x400
+#define FAN_MOVE_SELF 0x800
+#define FAN_OPEN_EXEC 0x1000
+#define FAN_Q_OVERFLOW 0x4000
+#define FAN_OPEN_PERM 0x10000
+#define FAN_ACCESS_PERM 0x20000
+#define FAN_OPEN_EXEC_PERM 0x40000
+#define FAN_DIR_MODIFY 0x00080000
+#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 0x01
+#define FAN_NONBLOCK 0x02
+#define FAN_CLASS_NOTIF 0
+#define FAN_CLASS_CONTENT 0x04
+#define FAN_CLASS_PRE_CONTENT 0x08
+#define FAN_ALL_CLASS_BITS (FAN_CLASS_NOTIF | FAN_CLASS_CONTENT | FAN_CLASS_PRE_CONTENT)
+#define FAN_UNLIMITED_QUEUE 0x10
+#define FAN_UNLIMITED_MARKS 0x20
+#define FAN_ENABLE_AUDIT 0x40
+#define FAN_REPORT_TID 0x100
+#define FAN_REPORT_FID 0x200
+#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 0x01
+#define FAN_MARK_REMOVE 0x02
+#define FAN_MARK_DONT_FOLLOW 0x04
+#define FAN_MARK_ONLYDIR 0x08
+#define FAN_MARK_IGNORED_MASK 0x20
+#define FAN_MARK_IGNORED_SURV_MODIFY 0x40
+#define FAN_MARK_FLUSH 0x80
+#define FAN_MARK_INODE 0x00
+#define FAN_MARK_MOUNT 0x10
+#define FAN_MARK_FILESYSTEM 0x100
+#define FAN_MARK_TYPE_MASK (FAN_MARK_INODE | FAN_MARK_MOUNT | FAN_MARK_FILESYSTEM)
+#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
+#define FAN_EVENT_INFO_TYPE_FID 1
+#define FAN_EVENT_INFO_TYPE_DFID_NAME 2
+#define FAN_EVENT_INFO_TYPE_DFID 3
+#define FAN_ALLOW 0x01
+#define FAN_DENY 0x02
+#define FAN_AUDIT 0x10
+#define FAN_NOFD -1
+#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))
+
+int fanotify_init(unsigned, unsigned);
+int fanotify_mark(int, unsigned, unsigned long long, int, const char *);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/sys/fcntl.h b/x86_64-linux-musl/include/sys/fcntl.h
new file mode 100644
index 0000000..3dd928e
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/fcntl.h
@@ -0,0 +1,2 @@
+#warning redirecting incorrect #include <sys/fcntl.h> to <fcntl.h>
+#include <fcntl.h>
diff --git a/x86_64-linux-musl/include/sys/file.h b/x86_64-linux-musl/include/sys/file.h
new file mode 100644
index 0000000..4fc83b9
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/file.h
@@ -0,0 +1,21 @@
+#ifndef _SYS_FILE_H
+#define _SYS_FILE_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define LOCK_SH	1
+#define LOCK_EX	2
+#define LOCK_NB	4
+#define LOCK_UN	8
+
+#define L_SET 0
+#define L_INCR 1
+#define L_XTND 2
+
+int flock(int, int);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/sys/fsuid.h b/x86_64-linux-musl/include/sys/fsuid.h
new file mode 100644
index 0000000..c7a9b8f
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/fsuid.h
@@ -0,0 +1,20 @@
+#ifndef _SYS_FSUID_H
+#define _SYS_FSUID_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __NEED_uid_t
+#define __NEED_gid_t
+
+#include <bits/alltypes.h>
+
+int setfsuid(uid_t);
+int setfsgid(gid_t);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/inotify.h b/x86_64-linux-musl/include/sys/inotify.h
new file mode 100644
index 0000000..69b5863
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/inotify.h
@@ -0,0 +1,58 @@
+#ifndef _SYS_INOTIFY_H
+#define _SYS_INOTIFY_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+#include <fcntl.h>
+
+struct inotify_event {
+	int wd;
+	uint32_t mask, cookie, len;
+	char name[];
+};
+
+#define IN_CLOEXEC O_CLOEXEC
+#define IN_NONBLOCK O_NONBLOCK
+
+#define IN_ACCESS        0x00000001
+#define IN_MODIFY        0x00000002
+#define IN_ATTRIB        0x00000004
+#define IN_CLOSE_WRITE   0x00000008
+#define IN_CLOSE_NOWRITE 0x00000010
+#define IN_CLOSE         (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
+#define IN_OPEN          0x00000020
+#define IN_MOVED_FROM    0x00000040
+#define IN_MOVED_TO      0x00000080
+#define IN_MOVE          (IN_MOVED_FROM | IN_MOVED_TO)
+#define IN_CREATE        0x00000100
+#define IN_DELETE        0x00000200
+#define IN_DELETE_SELF   0x00000400
+#define IN_MOVE_SELF     0x00000800
+#define IN_ALL_EVENTS    0x00000fff
+
+#define IN_UNMOUNT       0x00002000
+#define IN_Q_OVERFLOW    0x00004000
+#define IN_IGNORED       0x00008000
+
+#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
+
+int inotify_init(void);
+int inotify_init1(int);
+int inotify_add_watch(int, const char *, uint32_t);
+int inotify_rm_watch(int, int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/io.h b/x86_64-linux-musl/include/sys/io.h
new file mode 100644
index 0000000..16658ce
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/io.h
@@ -0,0 +1,17 @@
+#ifndef	_SYS_IO_H
+#define	_SYS_IO_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#include <bits/io.h>
+
+int iopl(int);
+int ioperm(unsigned long, unsigned long, int);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/sys/ioctl.h b/x86_64-linux-musl/include/sys/ioctl.h
new file mode 100644
index 0000000..a9a2346
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/ioctl.h
@@ -0,0 +1,120 @@
+#ifndef	_SYS_IOCTL_H
+#define	_SYS_IOCTL_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __NEED_struct_winsize
+
+#include <bits/alltypes.h>
+#include <bits/ioctl.h>
+
+#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
+
+#define TIOCPKT_DATA       0
+#define TIOCPKT_FLUSHREAD  1
+#define TIOCPKT_FLUSHWRITE 2
+#define TIOCPKT_STOP       4
+#define TIOCPKT_START      8
+#define TIOCPKT_NOSTOP    16
+#define TIOCPKT_DOSTOP    32
+#define TIOCPKT_IOCTL     64
+
+#define TIOCSER_TEMT 1
+
+#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 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 SIOCDEVPRIVATE     0x89F0
+#define SIOCPROTOPRIVATE   0x89E0
+
+int ioctl (int, int, ...);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/sys/ipc.h b/x86_64-linux-musl/include/sys/ipc.h
new file mode 100644
index 0000000..9e366b7
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/ipc.h
@@ -0,0 +1,42 @@
+#ifndef _SYS_IPC_H
+#define _SYS_IPC_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_uid_t
+#define __NEED_gid_t
+#define __NEED_mode_t
+#define __NEED_key_t
+
+#include <bits/alltypes.h>
+
+#define __ipc_perm_key __key
+#define __ipc_perm_seq __seq
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define __key key
+#define __seq seq
+#endif
+
+#include <bits/ipc.h>
+#include <bits/ipcstat.h>
+
+#define IPC_CREAT  01000
+#define IPC_EXCL   02000
+#define IPC_NOWAIT 04000
+
+#define IPC_RMID 0
+#define IPC_SET  1
+#define IPC_INFO 3
+
+#define IPC_PRIVATE ((key_t) 0)
+
+key_t ftok (const char *, int);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/sys/kd.h b/x86_64-linux-musl/include/sys/kd.h
new file mode 100644
index 0000000..42122b9
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/kd.h
@@ -0,0 +1 @@
+#include <bits/kd.h>
diff --git a/x86_64-linux-musl/include/sys/klog.h b/x86_64-linux-musl/include/sys/klog.h
new file mode 100644
index 0000000..aa66684
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/klog.h
@@ -0,0 +1,14 @@
+#ifndef	_SYS_KLOG_H
+#define	_SYS_KLOG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int klogctl (int, char *, int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/membarrier.h b/x86_64-linux-musl/include/sys/membarrier.h
new file mode 100644
index 0000000..11193ed
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/membarrier.h
@@ -0,0 +1,21 @@
+#ifndef _SYS_MEMBARRIER_H
+#define _SYS_MEMBARRIER_H
+
+#define MEMBARRIER_CMD_QUERY 0
+#define MEMBARRIER_CMD_GLOBAL 1
+#define MEMBARRIER_CMD_GLOBAL_EXPEDITED 2
+#define MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED 4
+#define MEMBARRIER_CMD_PRIVATE_EXPEDITED 8
+#define MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED 16
+#define MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE 32
+#define MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE 64
+#define MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ 128
+#define MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ 256
+
+#define MEMBARRIER_CMD_SHARED MEMBARRIER_CMD_GLOBAL
+
+#define MEMBARRIER_CMD_FLAG_CPU 1
+
+int membarrier(int, int);
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/mman.h b/x86_64-linux-musl/include/sys/mman.h
new file mode 100644
index 0000000..80a3baa
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/mman.h
@@ -0,0 +1,152 @@
+#ifndef	_SYS_MMAN_H
+#define	_SYS_MMAN_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_mode_t
+#define __NEED_size_t
+#define __NEED_off_t
+
+#if defined(_GNU_SOURCE)
+#define __NEED_ssize_t
+#endif
+
+#include <bits/alltypes.h>
+
+#define MAP_FAILED ((void *) -1)
+
+#define MAP_SHARED     0x01
+#define MAP_PRIVATE    0x02
+#define MAP_SHARED_VALIDATE 0x03
+#define MAP_TYPE       0x0f
+#define MAP_FIXED      0x10
+#define MAP_ANON       0x20
+#define MAP_ANONYMOUS  MAP_ANON
+#define MAP_NORESERVE  0x4000
+#define MAP_GROWSDOWN  0x0100
+#define MAP_DENYWRITE  0x0800
+#define MAP_EXECUTABLE 0x1000
+#define MAP_LOCKED     0x2000
+#define MAP_POPULATE   0x8000
+#define MAP_NONBLOCK   0x10000
+#define MAP_STACK      0x20000
+#define MAP_HUGETLB    0x40000
+#define MAP_SYNC       0x80000
+#define MAP_FIXED_NOREPLACE 0x100000
+#define MAP_FILE       0
+
+#define MAP_HUGE_SHIFT 26
+#define MAP_HUGE_MASK  0x3f
+#define MAP_HUGE_16KB  (14 << 26)
+#define MAP_HUGE_64KB  (16 << 26)
+#define MAP_HUGE_512KB (19 << 26)
+#define MAP_HUGE_1MB   (20 << 26)
+#define MAP_HUGE_2MB   (21 << 26)
+#define MAP_HUGE_8MB   (23 << 26)
+#define MAP_HUGE_16MB  (24 << 26)
+#define MAP_HUGE_32MB  (25 << 26)
+#define MAP_HUGE_256MB (28 << 26)
+#define MAP_HUGE_512MB (29 << 26)
+#define MAP_HUGE_1GB   (30 << 26)
+#define MAP_HUGE_2GB   (31 << 26)
+#define MAP_HUGE_16GB  (34U << 26)
+
+#define PROT_NONE      0
+#define PROT_READ      1
+#define PROT_WRITE     2
+#define PROT_EXEC      4
+#define PROT_GROWSDOWN 0x01000000
+#define PROT_GROWSUP   0x02000000
+
+#define MS_ASYNC       1
+#define MS_INVALIDATE  2
+#define MS_SYNC        4
+
+#define MCL_CURRENT    1
+#define MCL_FUTURE     2
+#define MCL_ONFAULT    4
+
+#define POSIX_MADV_NORMAL     0
+#define POSIX_MADV_RANDOM     1
+#define POSIX_MADV_SEQUENTIAL 2
+#define POSIX_MADV_WILLNEED   3
+#define POSIX_MADV_DONTNEED   4
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define MADV_NORMAL      0
+#define MADV_RANDOM      1
+#define MADV_SEQUENTIAL  2
+#define MADV_WILLNEED    3
+#define MADV_DONTNEED    4
+#define MADV_FREE        8
+#define MADV_REMOVE      9
+#define MADV_DONTFORK    10
+#define MADV_DOFORK      11
+#define MADV_MERGEABLE   12
+#define MADV_UNMERGEABLE 13
+#define MADV_HUGEPAGE    14
+#define MADV_NOHUGEPAGE  15
+#define MADV_DONTDUMP    16
+#define MADV_DODUMP      17
+#define MADV_WIPEONFORK  18
+#define MADV_KEEPONFORK  19
+#define MADV_COLD        20
+#define MADV_PAGEOUT     21
+#define MADV_HWPOISON    100
+#define MADV_SOFT_OFFLINE 101
+#endif
+
+#ifdef _GNU_SOURCE
+#define MREMAP_MAYMOVE 1
+#define MREMAP_FIXED 2
+#define MREMAP_DONTUNMAP 4
+
+#define MLOCK_ONFAULT 0x01
+
+#define MFD_CLOEXEC 0x0001U
+#define MFD_ALLOW_SEALING 0x0002U
+#define MFD_HUGETLB 0x0004U
+#endif
+
+#include <bits/mman.h>
+
+void *mmap (void *, size_t, int, int, int, off_t);
+int munmap (void *, size_t);
+
+int mprotect (void *, size_t, int);
+int msync (void *, size_t, int);
+
+int posix_madvise (void *, size_t, int);
+
+int mlock (const void *, size_t);
+int munlock (const void *, size_t);
+int mlockall (int);
+int munlockall (void);
+
+#ifdef _GNU_SOURCE
+void *mremap (void *, size_t, size_t, int, ...);
+int remap_file_pages (void *, size_t, int, size_t, int);
+int memfd_create (const char *, unsigned);
+int mlock2 (const void *, size_t, unsigned);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+int madvise (void *, size_t, int);
+int mincore (void *, size_t, unsigned char *);
+#endif
+
+int shm_open (const char *, int, mode_t);
+int shm_unlink (const char *);
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define mmap64 mmap
+#define off64_t off_t
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/sys/mount.h b/x86_64-linux-musl/include/sys/mount.h
new file mode 100644
index 0000000..09bd6e9
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/mount.h
@@ -0,0 +1,75 @@
+#ifndef _SYS_MOUNT_H
+#define _SYS_MOUNT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <sys/ioctl.h>
+
+#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 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_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_NOREMOTELOCK (1<<27)
+#define MS_NOSEC       (1<<28)
+#define MS_BORN        (1<<29)
+#define MS_ACTIVE      (1<<30)
+#define MS_NOUSER      (1U<<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 MNT_FORCE       1
+#define MNT_DETACH      2
+#define MNT_EXPIRE      4
+#define UMOUNT_NOFOLLOW 8
+
+int mount(const char *, const char *, const char *, unsigned long, const void *);
+int umount(const char *);
+int umount2(const char *, int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/msg.h b/x86_64-linux-musl/include/sys/msg.h
new file mode 100644
index 0000000..db5c62a
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/msg.h
@@ -0,0 +1,53 @@
+#ifndef _SYS_MSG_H
+#define _SYS_MSG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <sys/ipc.h>
+
+#define __NEED_pid_t
+#define __NEED_key_t
+#define __NEED_time_t
+#define __NEED_size_t
+#define __NEED_ssize_t
+
+#include <bits/alltypes.h>
+
+typedef unsigned long msgqnum_t;
+typedef unsigned long msglen_t;
+
+#include <bits/msg.h>
+
+#define __msg_cbytes msg_cbytes
+
+#define MSG_NOERROR 010000
+#define MSG_EXCEPT  020000
+
+#define MSG_STAT (11 | (IPC_STAT & 0x100))
+#define MSG_INFO 12
+#define MSG_STAT_ANY (13 | (IPC_STAT & 0x100))
+
+struct msginfo {
+	int msgpool, msgmap, msgmax, msgmnb, msgmni, msgssz, msgtql;
+	unsigned short msgseg;
+};
+
+int msgctl (int, int, struct msqid_ds *);
+int msgget (key_t, int);
+ssize_t msgrcv (int, void *, size_t, long, int);
+int msgsnd (int, const void *, size_t, int);
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+struct msgbuf {
+	long mtype;
+	char mtext[1];
+};
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/mtio.h b/x86_64-linux-musl/include/sys/mtio.h
new file mode 100644
index 0000000..f16a529
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/mtio.h
@@ -0,0 +1,188 @@
+#ifndef _SYS_MTIO_H
+#define _SYS_MTIO_H
+
+#include <sys/types.h>
+#include <sys/ioctl.h>
+
+struct mtop {
+	short mt_op;
+	int mt_count;
+};
+
+#define _IOT_mtop _IOT (_IOTS (short), 1, _IOTS (int), 1, 0, 0)
+#define _IOT_mtget _IOT (_IOTS (long), 7, 0, 0, 0, 0)
+#define _IOT_mtpos _IOT_SIMPLE (long)
+#define _IOT_mtconfiginfo _IOT (_IOTS (long), 2, _IOTS (short), 3, _IOTS (long), 1)
+
+
+#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
+
+struct mtget {
+	long mt_type;
+	long mt_resid;
+	long mt_dsreg;
+	long mt_gstat;
+	long mt_erreg;
+	int mt_fileno;
+	int 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_ISSCSI1		0x71
+#define MT_ISSCSI2		0x72
+#define MT_ISFTAPE_UNKNOWN	0x800000
+#define MT_ISFTAPE_FLAG		0x800000
+
+struct mt_tape_info {
+	long t_type;
+	char *t_name;
+};
+
+#define MT_TAPE_INFO \
+{									      \
+	{MT_ISUNKNOWN,		"Unknown type of tape device"},		      \
+	{MT_ISQIC02,		"Generic QIC-02 tape streamer"},	      \
+	{MT_ISWT5150,		"Wangtek 5150, QIC-150"},		      \
+	{MT_ISARCHIVE_5945L2,	"Archive 5945L-2"},			      \
+	{MT_ISCMSJ500,		"CMS Jumbo 500"},			      \
+	{MT_ISTDC3610,		"Tandberg TDC 3610, QIC-24"},		      \
+	{MT_ISARCHIVE_VP60I,	"Archive VP60i, QIC-02"},		      \
+	{MT_ISARCHIVE_2150L,	"Archive Viper 2150L"},			      \
+	{MT_ISARCHIVE_2060L,	"Archive Viper 2060L"},			      \
+	{MT_ISARCHIVESC499,	"Archive SC-499 QIC-36 controller"},	      \
+	{MT_ISQIC02_ALL_FEATURES, "Generic QIC-02 tape, all features"},	      \
+	{MT_ISWT5099EEN24,	"Wangtek 5099-een24, 60MB"},		      \
+	{MT_ISTEAC_MT2ST,	"Teac MT-2ST 155mb data cassette drive"},     \
+	{MT_ISEVEREX_FT40A,	"Everex FT40A, QIC-40"},		      \
+	{MT_ISSCSI1,		"Generic SCSI-1 tape"},			      \
+	{MT_ISSCSI2,		"Generic SCSI-2 tape"},			      \
+	{0, 0}								      \
+}
+
+struct mtpos {
+	long mt_blkno;
+};
+
+struct mtconfiginfo  {
+	long mt_type;
+	long ifc_type;
+	unsigned short irqnr;
+	unsigned short dmanr;
+	unsigned short port;
+	unsigned long debug;
+	unsigned have_dens:1;
+	unsigned have_bsf:1;
+	unsigned have_fsr:1;
+	unsigned have_bsr:1;
+	unsigned have_eod:1;
+	unsigned have_seek:1;
+	unsigned have_tell:1;
+	unsigned have_ras1:1;
+	unsigned have_ras2:1;
+	unsigned have_ras3:1;
+	unsigned have_qfa:1;
+	unsigned pad1:5;
+	char reserved[10];
+};
+
+#define	MTIOCTOP _IOW('m', 1, struct mtop)
+#define	MTIOCGET _IOR('m', 2, struct mtget)
+#define	MTIOCPOS _IOR('m', 3, struct mtpos)
+
+#define	MTIOCGETCONFIG	_IOR('m', 4, struct mtconfiginfo)
+#define	MTIOCSETCONFIG	_IOW('m', 5, struct mtconfiginfo)
+
+#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 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_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_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
+#ifndef DEFTAPE
+# define DEFTAPE	"/dev/tape"
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/param.h b/x86_64-linux-musl/include/sys/param.h
new file mode 100644
index 0000000..ce6b801
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/param.h
@@ -0,0 +1,35 @@
+#ifndef _SYS_PARAM_H
+#define _SYS_PARAM_H
+
+#define MAXSYMLINKS 20
+#define MAXHOSTNAMELEN 64
+#define MAXNAMLEN 255
+#define MAXPATHLEN 4096
+#define NBBY 8
+#define NGROUPS 32
+#define CANBSIZ 255
+#define NOFILE 256
+#define NCARGS 131072
+#define DEV_BSIZE 512
+#define NOGROUP (-1)
+
+#undef MIN
+#undef MAX
+#define MIN(a,b) (((a)<(b))?(a):(b))
+#define MAX(a,b) (((a)>(b))?(a):(b))
+
+#define __bitop(x,i,o) ((x)[(i)/8] o (1<<(i)%8))
+#define setbit(x,i) __bitop(x,i,|=)
+#define clrbit(x,i) __bitop(x,i,&=~)
+#define isset(x,i) __bitop(x,i,&)
+#define isclr(x,i) !isset(x,i)
+
+#define howmany(n,d) (((n)+((d)-1))/(d))
+#define roundup(n,d) (howmany(n,d)*(d))
+#define powerof2(n) !(((n)-1) & (n))
+
+#include <sys/resource.h>
+#include <endian.h>
+#include <limits.h>
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/personality.h b/x86_64-linux-musl/include/sys/personality.h
new file mode 100644
index 0000000..411dc47
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/personality.h
@@ -0,0 +1,49 @@
+#ifndef _PERSONALITY_H
+#define _PERSONALITY_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define UNAME26            0x0020000
+#define ADDR_NO_RANDOMIZE  0x0040000
+#define FDPIC_FUNCPTRS     0x0080000
+#define MMAP_PAGE_ZERO     0x0100000
+#define ADDR_COMPAT_LAYOUT 0x0200000
+#define READ_IMPLIES_EXEC  0x0400000
+#define ADDR_LIMIT_32BIT   0x0800000
+#define SHORT_INODE        0x1000000
+#define WHOLE_SECONDS      0x2000000
+#define STICKY_TIMEOUTS    0x4000000
+#define ADDR_LIMIT_3GB     0x8000000
+
+#define PER_LINUX 0
+#define PER_LINUX_32BIT ADDR_LIMIT_32BIT
+#define PER_LINUX_FDPIC FDPIC_FUNCPTRS
+#define PER_SVR4 (1 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO)
+#define PER_SVR3 (2 | STICKY_TIMEOUTS | SHORT_INODE)
+#define PER_SCOSVR3 (3 | STICKY_TIMEOUTS | WHOLE_SECONDS | SHORT_INODE)
+#define PER_OSR5 (3 | STICKY_TIMEOUTS | WHOLE_SECONDS)
+#define PER_WYSEV386 (4 | STICKY_TIMEOUTS | SHORT_INODE)
+#define PER_ISCR4 (5 | STICKY_TIMEOUTS)
+#define PER_BSD 6
+#define PER_SUNOS (6 | STICKY_TIMEOUTS)
+#define PER_XENIX (7 | STICKY_TIMEOUTS | SHORT_INODE)
+#define PER_LINUX32 8
+#define PER_LINUX32_3GB (8 | ADDR_LIMIT_3GB)
+#define PER_IRIX32 (9 | STICKY_TIMEOUTS)
+#define PER_IRIXN32 (0xa | STICKY_TIMEOUTS)
+#define PER_IRIX64 (0x0b | STICKY_TIMEOUTS)
+#define PER_RISCOS 0xc
+#define PER_SOLARIS (0xd | STICKY_TIMEOUTS)
+#define PER_UW7 (0xe | STICKY_TIMEOUTS | MMAP_PAGE_ZERO)
+#define PER_OSF4 0xf
+#define PER_HPUX 0x10
+#define PER_MASK 0xff
+
+int personality(unsigned long);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/sys/poll.h b/x86_64-linux-musl/include/sys/poll.h
new file mode 100644
index 0000000..9917040
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/poll.h
@@ -0,0 +1,2 @@
+#warning redirecting incorrect #include <sys/poll.h> to <poll.h>
+#include <poll.h>
diff --git a/x86_64-linux-musl/include/sys/prctl.h b/x86_64-linux-musl/include/sys/prctl.h
new file mode 100644
index 0000000..4ba73f4
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/prctl.h
@@ -0,0 +1,177 @@
+#ifndef _SYS_PRCTL_H
+#define _SYS_PRCTL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.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 {
+	uint64_t start_code;
+	uint64_t end_code;
+	uint64_t start_data;
+	uint64_t end_data;
+	uint64_t start_brk;
+	uint64_t brk;
+	uint64_t start_stack;
+	uint64_t arg_start;
+	uint64_t arg_end;
+	uint64_t env_start;
+	uint64_t env_end;
+	uint64_t *auxv;
+	uint32_t auxv_size;
+	uint32_t exe_fd;
+};
+
+#define PR_SET_PTRACER 0x59616d61
+#define PR_SET_PTRACER_ANY (-1UL)
+
+#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_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_SHIFT 1
+#define PR_MTE_TCF_NONE  (0UL << 1)
+#define PR_MTE_TCF_SYNC  (1UL << 1)
+#define PR_MTE_TCF_ASYNC (2UL << 1)
+#define PR_MTE_TCF_MASK  (3UL << 1)
+#define PR_MTE_TAG_SHIFT 3
+#define PR_MTE_TAG_MASK  (0xffffUL << 3)
+
+#define PR_SET_IO_FLUSHER 57
+#define PR_GET_IO_FLUSHER 58
+
+int prctl (int, ...);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/procfs.h b/x86_64-linux-musl/include/sys/procfs.h
new file mode 100644
index 0000000..38e58c1
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/procfs.h
@@ -0,0 +1,63 @@
+#ifndef _SYS_PROCFS_H
+#define _SYS_PROCFS_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/user.h>
+
+struct elf_siginfo {
+	int si_signo;
+	int si_code;
+	int si_errno;
+};
+
+struct elf_prstatus {
+	struct elf_siginfo pr_info;
+	short int pr_cursig;
+	unsigned long int pr_sigpend;
+	unsigned long int pr_sighold;
+	pid_t pr_pid;
+	pid_t pr_ppid;
+	pid_t pr_pgrp;
+	pid_t pr_sid;
+	struct {
+		long tv_sec, tv_usec;
+	} pr_utime, pr_stime, pr_cutime, pr_cstime;
+	elf_gregset_t pr_reg;
+	int pr_fpvalid;
+};
+
+#define ELF_PRARGSZ 80
+
+struct elf_prpsinfo {
+	char pr_state;
+	char pr_sname;
+	char pr_zomb;
+	char pr_nice;
+	unsigned long int pr_flag;
+#if UINTPTR_MAX == 0xffffffff
+	unsigned short int pr_uid;
+	unsigned short int pr_gid;
+#else
+	unsigned int pr_uid;
+	unsigned int pr_gid;
+#endif
+	int pr_pid, pr_ppid, pr_pgrp, pr_sid;
+	char pr_fname[16];
+	char pr_psargs[ELF_PRARGSZ];
+};
+
+typedef void *psaddr_t;
+typedef elf_gregset_t prgregset_t;
+typedef elf_fpregset_t prfpregset_t;
+typedef pid_t lwpid_t;
+typedef struct elf_prstatus prstatus_t;
+typedef struct elf_prpsinfo prpsinfo_t;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/sys/ptrace.h b/x86_64-linux-musl/include/sys/ptrace.h
new file mode 100644
index 0000000..5d62a98
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/ptrace.h
@@ -0,0 +1,138 @@
+#ifndef _SYS_PTRACE_H
+#define _SYS_PTRACE_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+
+#define PTRACE_TRACEME 0
+#define PT_TRACE_ME PTRACE_TRACEME
+
+#define PTRACE_PEEKTEXT 1
+#define PTRACE_PEEKDATA 2
+#define PTRACE_PEEKUSER 3
+#define PTRACE_POKETEXT 4
+#define PTRACE_POKEDATA 5
+#define PTRACE_POKEUSER 6
+#define PTRACE_CONT 7
+#define PTRACE_KILL 8
+#define PTRACE_SINGLESTEP 9
+#define PTRACE_GETREGS 12
+#define PTRACE_SETREGS 13
+#define PTRACE_GETFPREGS 14
+#define PTRACE_SETFPREGS 15
+#define PTRACE_ATTACH 16
+#define PTRACE_DETACH 17
+#define PTRACE_GETFPXREGS 18
+#define PTRACE_SETFPXREGS 19
+#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
+#define PTRACE_GETSIGMASK 0x420a
+#define PTRACE_SETSIGMASK 0x420b
+#define PTRACE_SECCOMP_GET_FILTER 0x420c
+#define PTRACE_SECCOMP_GET_METADATA 0x420d
+#define PTRACE_GET_SYSCALL_INFO 0x420e
+
+#define PT_READ_I PTRACE_PEEKTEXT
+#define PT_READ_D PTRACE_PEEKDATA
+#define PT_READ_U PTRACE_PEEKUSER
+#define PT_WRITE_I PTRACE_POKETEXT
+#define PT_WRITE_D PTRACE_POKEDATA
+#define PT_WRITE_U PTRACE_POKEUSER
+#define PT_CONTINUE PTRACE_CONT
+#define PT_KILL PTRACE_KILL
+#define PT_STEP PTRACE_SINGLESTEP
+#define PT_GETREGS PTRACE_GETREGS
+#define PT_SETREGS PTRACE_SETREGS
+#define PT_GETFPREGS PTRACE_GETFPREGS
+#define PT_SETFPREGS PTRACE_SETFPREGS
+#define PT_ATTACH PTRACE_ATTACH
+#define PT_DETACH PTRACE_DETACH
+#define PT_GETFPXREGS PTRACE_GETFPXREGS
+#define PT_SETFPXREGS PTRACE_SETFPXREGS
+#define PT_SYSCALL PTRACE_SYSCALL
+#define PT_SETOPTIONS PTRACE_SETOPTIONS
+#define PT_GETEVENTMSG PTRACE_GETEVENTMSG
+#define PT_GETSIGINFO PTRACE_GETSIGINFO
+#define PT_SETSIGINFO PTRACE_SETSIGINFO
+
+#define PTRACE_O_TRACESYSGOOD   0x00000001
+#define PTRACE_O_TRACEFORK      0x00000002
+#define PTRACE_O_TRACEVFORK     0x00000004
+#define PTRACE_O_TRACECLONE     0x00000008
+#define PTRACE_O_TRACEEXEC      0x00000010
+#define PTRACE_O_TRACEVFORKDONE 0x00000020
+#define PTRACE_O_TRACEEXIT      0x00000040
+#define PTRACE_O_TRACESECCOMP   0x00000080
+#define PTRACE_O_EXITKILL       0x00100000
+#define PTRACE_O_SUSPEND_SECCOMP 0x00200000
+#define PTRACE_O_MASK           0x003000ff
+
+#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_PEEKSIGINFO_SHARED 1
+
+#define PTRACE_SYSCALL_INFO_NONE 0
+#define PTRACE_SYSCALL_INFO_ENTRY 1
+#define PTRACE_SYSCALL_INFO_EXIT 2
+#define PTRACE_SYSCALL_INFO_SECCOMP 3
+
+#include <bits/ptrace.h>
+
+struct __ptrace_peeksiginfo_args {
+	uint64_t off;
+	uint32_t flags;
+	int32_t nr;
+};
+
+struct __ptrace_seccomp_metadata {
+	uint64_t filter_off;
+	uint64_t flags;
+};
+
+struct __ptrace_syscall_info {
+	uint8_t op;
+	uint8_t __pad[3];
+	uint32_t arch;
+	uint64_t instruction_pointer;
+	uint64_t stack_pointer;
+	union {
+		struct {
+			uint64_t nr;
+			uint64_t args[6];
+		} entry;
+		struct {
+			int64_t rval;
+			uint8_t is_error;
+		} exit;
+		struct {
+			uint64_t nr;
+			uint64_t args[6];
+			uint32_t ret_data;
+		} seccomp;
+	};
+};
+
+long ptrace(int, ...);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/sys/quota.h b/x86_64-linux-musl/include/sys/quota.h
new file mode 100644
index 0000000..3ed7378
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/quota.h
@@ -0,0 +1,102 @@
+#ifndef _SYS_QUOTA_H
+#define _SYS_QUOTA_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+
+#define _LINUX_QUOTA_VERSION 2
+
+#define dbtob(num) ((num) << 10)
+#define btodb(num) ((num) >> 10)
+#define fs_to_dq_blocks(num, blksize) (((num) * (blksize)) / 1024)
+
+#define MAX_IQ_TIME 604800
+#define MAX_DQ_TIME 604800
+
+#define MAXQUOTAS 2
+#define USRQUOTA  0
+#define GRPQUOTA  1
+
+#define INITQFNAMES { "user", "group", "undefined" };
+
+#define QUOTAFILENAME "quota"
+#define QUOTAGROUP "staff"
+
+#define NR_DQHASH 43
+#define NR_DQUOTS 256
+
+#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	QFMT_VFS_OLD 1
+#define	QFMT_VFS_V0 2
+#define QFMT_OCFS2 3
+#define	QFMT_VFS_V1 4
+
+#define QIF_BLIMITS	1
+#define QIF_SPACE	2
+#define QIF_ILIMITS	4
+#define QIF_INODES	8
+#define QIF_BTIME	16
+#define QIF_ITIME	32
+#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 dqblk {
+	uint64_t dqb_bhardlimit;
+	uint64_t dqb_bsoftlimit;
+	uint64_t dqb_curspace;
+	uint64_t dqb_ihardlimit;
+	uint64_t dqb_isoftlimit;
+	uint64_t dqb_curinodes;
+	uint64_t dqb_btime;
+	uint64_t dqb_itime;
+	uint32_t dqb_valid;
+};
+
+#define	dq_bhardlimit	dq_dqb.dqb_bhardlimit
+#define	dq_bsoftlimit	dq_dqb.dqb_bsoftlimit
+#define dq_curspace	dq_dqb.dqb_curspace
+#define dq_valid	dq_dqb.dqb_valid
+#define	dq_ihardlimit	dq_dqb.dqb_ihardlimit
+#define	dq_isoftlimit	dq_dqb.dqb_isoftlimit
+#define	dq_curinodes	dq_dqb.dqb_curinodes
+#define	dq_btime	dq_dqb.dqb_btime
+#define	dq_itime	dq_dqb.dqb_itime
+
+#define dqoff(UID)      ((long long)(UID) * sizeof (struct dqblk))
+
+#define IIF_BGRACE	1
+#define IIF_IGRACE	2
+#define IIF_FLAGS	4
+#define IIF_ALL		(IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)
+
+struct dqinfo {
+	uint64_t dqi_bgrace;
+	uint64_t dqi_igrace;
+	uint32_t dqi_flags;
+	uint32_t dqi_valid;
+};
+
+int quotactl(int, const char *, int, char *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/random.h b/x86_64-linux-musl/include/sys/random.h
new file mode 100644
index 0000000..59e40ab
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/random.h
@@ -0,0 +1,20 @@
+#ifndef _SYS_RANDOM_H
+#define _SYS_RANDOM_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __NEED_size_t
+#define __NEED_ssize_t
+#include <bits/alltypes.h>
+
+#define GRND_NONBLOCK	0x0001
+#define GRND_RANDOM	0x0002
+#define GRND_INSECURE	0x0004
+
+ssize_t getrandom(void *, size_t, unsigned);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/sys/reboot.h b/x86_64-linux-musl/include/sys/reboot.h
new file mode 100644
index 0000000..9702edd
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/reboot.h
@@ -0,0 +1,20 @@
+#ifndef _SYS_REBOOT_H
+#define _SYS_REBOOT_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define RB_AUTOBOOT     0x01234567
+#define RB_HALT_SYSTEM  0xcdef0123
+#define RB_ENABLE_CAD   0x89abcdef
+#define RB_DISABLE_CAD  0
+#define RB_POWER_OFF    0x4321fedc
+#define RB_SW_SUSPEND   0xd000fce2
+#define RB_KEXEC        0x45584543
+
+int reboot(int);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/sys/reg.h b/x86_64-linux-musl/include/sys/reg.h
new file mode 100644
index 0000000..b47452d
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/reg.h
@@ -0,0 +1,9 @@
+#ifndef _SYS_REG_H
+#define _SYS_REG_H
+
+#include <limits.h>
+#include <unistd.h>
+
+#include <bits/reg.h>
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/resource.h b/x86_64-linux-musl/include/sys/resource.h
new file mode 100644
index 0000000..3068328
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/resource.h
@@ -0,0 +1,116 @@
+#ifndef	_SYS_RESOURCE_H
+#define	_SYS_RESOURCE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <sys/time.h>
+
+#define __NEED_id_t
+
+#ifdef _GNU_SOURCE
+#define __NEED_pid_t
+#endif
+
+#include <bits/alltypes.h>
+#include <bits/resource.h>
+
+typedef unsigned long long rlim_t;
+
+struct rlimit {
+	rlim_t rlim_cur;
+	rlim_t rlim_max;
+};
+
+struct rusage {
+	struct timeval ru_utime;
+	struct timeval ru_stime;
+	/* linux extentions, but useful */
+	long	ru_maxrss;
+	long	ru_ixrss;
+	long	ru_idrss;
+	long	ru_isrss;
+	long	ru_minflt;
+	long	ru_majflt;
+	long	ru_nswap;
+	long	ru_inblock;
+	long	ru_oublock;
+	long	ru_msgsnd;
+	long	ru_msgrcv;
+	long	ru_nsignals;
+	long	ru_nvcsw;
+	long	ru_nivcsw;
+	/* room for more... */
+	long    __reserved[16];
+};
+
+int getrlimit (int, struct rlimit *);
+int setrlimit (int, const struct rlimit *);
+int getrusage (int, struct rusage *);
+
+int getpriority (int, id_t);
+int setpriority (int, id_t, int);
+
+#ifdef _GNU_SOURCE
+int prlimit(pid_t, int, const struct rlimit *, struct rlimit *);
+#define prlimit64 prlimit
+#endif
+
+#define PRIO_MIN (-20)
+#define PRIO_MAX 20
+
+#define PRIO_PROCESS 0
+#define PRIO_PGRP    1
+#define PRIO_USER    2
+
+#define RUSAGE_SELF     0
+#define RUSAGE_CHILDREN (-1)
+#define RUSAGE_THREAD   1
+
+#define RLIM_INFINITY (~0ULL)
+#define RLIM_SAVED_CUR RLIM_INFINITY
+#define RLIM_SAVED_MAX RLIM_INFINITY
+
+#define RLIMIT_CPU     0
+#define RLIMIT_FSIZE   1
+#define RLIMIT_DATA    2
+#define RLIMIT_STACK   3
+#define RLIMIT_CORE    4
+#ifndef RLIMIT_RSS
+#define RLIMIT_RSS     5
+#define RLIMIT_NPROC   6
+#define RLIMIT_NOFILE  7
+#define RLIMIT_MEMLOCK 8
+#define RLIMIT_AS      9
+#endif
+#define RLIMIT_LOCKS   10
+#define RLIMIT_SIGPENDING 11
+#define RLIMIT_MSGQUEUE 12
+#define RLIMIT_NICE    13
+#define RLIMIT_RTPRIO  14
+#define RLIMIT_RTTIME  15
+#define RLIMIT_NLIMITS 16
+
+#define RLIM_NLIMITS RLIMIT_NLIMITS
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define RLIM64_INFINITY RLIM_INFINITY
+#define RLIM64_SAVED_CUR RLIM_SAVED_CUR
+#define RLIM64_SAVED_MAX RLIM_SAVED_MAX
+#define getrlimit64 getrlimit
+#define setrlimit64 setrlimit
+#define rlimit64 rlimit
+#define rlim64_t rlim_t
+#endif
+
+#if _REDIR_TIME64
+__REDIR(getrusage, __getrusage_time64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/select.h b/x86_64-linux-musl/include/sys/select.h
new file mode 100644
index 0000000..b3bab1d
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/select.h
@@ -0,0 +1,46 @@
+#ifndef _SYS_SELECT_H
+#define _SYS_SELECT_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_size_t
+#define __NEED_time_t
+#define __NEED_suseconds_t
+#define __NEED_struct_timeval
+#define __NEED_struct_timespec
+#define __NEED_sigset_t
+
+#include <bits/alltypes.h>
+
+#define FD_SETSIZE 1024
+
+typedef unsigned long fd_mask;
+
+typedef struct {
+	unsigned long fds_bits[FD_SETSIZE / 8 / sizeof(long)];
+} fd_set;
+
+#define FD_ZERO(s) do { int __i; unsigned long *__b=(s)->fds_bits; for(__i=sizeof (fd_set)/sizeof (long); __i; __i--) *__b++=0; } while(0)
+#define FD_SET(d, s)   ((s)->fds_bits[(d)/(8*sizeof(long))] |= (1UL<<((d)%(8*sizeof(long)))))
+#define FD_CLR(d, s)   ((s)->fds_bits[(d)/(8*sizeof(long))] &= ~(1UL<<((d)%(8*sizeof(long)))))
+#define FD_ISSET(d, s) !!((s)->fds_bits[(d)/(8*sizeof(long))] & (1UL<<((d)%(8*sizeof(long)))))
+
+int select (int, fd_set *__restrict, fd_set *__restrict, fd_set *__restrict, struct timeval *__restrict);
+int pselect (int, fd_set *__restrict, fd_set *__restrict, fd_set *__restrict, const struct timespec *__restrict, const sigset_t *__restrict);
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define NFDBITS (8*(int)sizeof(long))
+#endif
+
+#if _REDIR_TIME64
+__REDIR(select, __select_time64);
+__REDIR(pselect, __pselect_time64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/sys/sem.h b/x86_64-linux-musl/include/sys/sem.h
new file mode 100644
index 0000000..a747784
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/sem.h
@@ -0,0 +1,72 @@
+#ifndef _SYS_SEM_H
+#define _SYS_SEM_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_size_t
+#define __NEED_pid_t
+#define __NEED_time_t
+#ifdef _GNU_SOURCE
+#define __NEED_struct_timespec
+#endif
+#include <bits/alltypes.h>
+
+#include <sys/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
+
+#include <bits/sem.h>
+
+#define _SEM_SEMUN_UNDEFINED 1
+
+#define SEM_STAT (18 | (IPC_STAT & 0x100))
+#define SEM_INFO 19
+#define SEM_STAT_ANY (20 | (IPC_STAT & 0x100))
+
+struct  seminfo {
+	int semmap;
+	int semmni;
+	int semmns;
+	int semmnu;
+	int semmsl;
+	int semopm;
+	int semume;
+	int semusz;
+	int semvmx;
+	int semaem;
+};
+
+struct sembuf {
+	unsigned short sem_num;
+	short sem_op;
+	short sem_flg;
+};
+
+int semctl(int, int, int, ...);
+int semget(key_t, int, int);
+int semop(int, struct sembuf *, size_t);
+
+#ifdef _GNU_SOURCE
+int semtimedop(int, struct sembuf *, size_t, const struct timespec *);
+#endif
+
+#if _REDIR_TIME64
+#ifdef _GNU_SOURCE
+__REDIR(semtimedop, __semtimedop_time64);
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/sys/sendfile.h b/x86_64-linux-musl/include/sys/sendfile.h
new file mode 100644
index 0000000..e7570d8
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/sendfile.h
@@ -0,0 +1,22 @@
+#ifndef _SYS_SENDFILE_H
+#define _SYS_SENDFILE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+#include <unistd.h>
+
+ssize_t sendfile(int, int, off_t *, size_t);
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define sendfile64 sendfile
+#define off64_t off_t
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/shm.h b/x86_64-linux-musl/include/sys/shm.h
new file mode 100644
index 0000000..fd708ca
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/shm.h
@@ -0,0 +1,70 @@
+#ifndef _SYS_SHM_H
+#define _SYS_SHM_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_time_t
+#define __NEED_size_t
+#define __NEED_pid_t
+
+#include <bits/alltypes.h>
+
+#include <sys/ipc.h>
+
+#ifdef _GNU_SOURCE
+#define __used_ids used_ids
+#define __swap_attempts swap_attempts
+#define __swap_successes swap_successes
+#endif
+
+#include <bits/shm.h>
+
+#define SHM_R 0400
+#define SHM_W 0200
+
+#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 | (IPC_STAT & 0x100))
+#define SHM_INFO 14
+#define SHM_STAT_ANY (15 | (IPC_STAT & 0x100))
+#define SHM_DEST 01000
+#define SHM_LOCKED 02000
+#define SHM_HUGETLB 04000
+#define SHM_NORESERVE 010000
+
+#define SHM_HUGE_SHIFT 26
+#define SHM_HUGE_MASK  0x3f
+#define SHM_HUGE_64KB  (16 << 26)
+#define SHM_HUGE_512KB (19 << 26)
+#define SHM_HUGE_1MB   (20 << 26)
+#define SHM_HUGE_2MB   (21 << 26)
+#define SHM_HUGE_8MB   (23 << 26)
+#define SHM_HUGE_16MB  (24 << 26)
+#define SHM_HUGE_32MB  (25 << 26)
+#define SHM_HUGE_256MB (28 << 26)
+#define SHM_HUGE_512MB (29 << 26)
+#define SHM_HUGE_1GB   (30 << 26)
+#define SHM_HUGE_2GB   (31 << 26)
+#define SHM_HUGE_16GB  (34U << 26)
+
+typedef unsigned long shmatt_t;
+
+void *shmat(int, const void *, int);
+int shmctl(int, int, struct shmid_ds *);
+int shmdt(const void *);
+int shmget(key_t, size_t, int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/signal.h b/x86_64-linux-musl/include/sys/signal.h
new file mode 100644
index 0000000..45bdcc6
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/signal.h
@@ -0,0 +1,2 @@
+#warning redirecting incorrect #include <sys/signal.h> to <signal.h>
+#include <signal.h>
diff --git a/x86_64-linux-musl/include/sys/signalfd.h b/x86_64-linux-musl/include/sys/signalfd.h
new file mode 100644
index 0000000..e881e2c
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/signalfd.h
@@ -0,0 +1,49 @@
+#ifndef _SYS_SIGNALFD_H
+#define _SYS_SIGNALFD_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+#include <fcntl.h>
+
+#define __NEED_sigset_t
+
+#include <bits/alltypes.h>
+
+#define SFD_CLOEXEC O_CLOEXEC
+#define SFD_NONBLOCK O_NONBLOCK
+
+int signalfd(int, const sigset_t *, int);
+
+struct signalfd_siginfo {
+	uint32_t  ssi_signo;
+	int32_t   ssi_errno;
+	int32_t   ssi_code;
+	uint32_t  ssi_pid;
+	uint32_t  ssi_uid;
+	int32_t   ssi_fd;
+	uint32_t  ssi_tid;
+	uint32_t  ssi_band;
+	uint32_t  ssi_overrun;
+	uint32_t  ssi_trapno;
+	int32_t   ssi_status;
+	int32_t   ssi_int;
+	uint64_t  ssi_ptr;
+	uint64_t  ssi_utime;
+	uint64_t  ssi_stime;
+	uint64_t  ssi_addr;
+	uint16_t  ssi_addr_lsb;
+	uint16_t  __pad2;
+	int32_t   ssi_syscall;
+	uint64_t  ssi_call_addr;
+	uint32_t  ssi_arch;
+	uint8_t   __pad[128-14*4-5*8-2*2];
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/socket.h b/x86_64-linux-musl/include/sys/socket.h
new file mode 100644
index 0000000..cc06bdf
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/socket.h
@@ -0,0 +1,413 @@
+#ifndef	_SYS_SOCKET_H
+#define	_SYS_SOCKET_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_socklen_t
+#define __NEED_sa_family_t
+#define __NEED_size_t
+#define __NEED_ssize_t
+#define __NEED_uid_t
+#define __NEED_pid_t
+#define __NEED_gid_t
+#define __NEED_struct_iovec
+
+#include <bits/alltypes.h>
+
+#include <bits/socket.h>
+
+struct msghdr {
+	void *msg_name;
+	socklen_t msg_namelen;
+	struct iovec *msg_iov;
+#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN
+	int __pad1;
+#endif
+	int msg_iovlen;
+#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN
+	int __pad1;
+#endif
+	void *msg_control;
+#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN
+	int __pad2;
+#endif
+	socklen_t msg_controllen;
+#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN
+	int __pad2;
+#endif
+	int msg_flags;
+};
+
+struct cmsghdr {
+#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN
+	int __pad1;
+#endif
+	socklen_t cmsg_len;
+#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN
+	int __pad1;
+#endif
+	int cmsg_level;
+	int cmsg_type;
+};
+
+#ifdef _GNU_SOURCE
+struct ucred {
+	pid_t pid;
+	uid_t uid;
+	gid_t gid;
+};
+
+struct mmsghdr {
+	struct msghdr msg_hdr;
+	unsigned int  msg_len;
+};
+
+struct timespec;
+
+int sendmmsg (int, struct mmsghdr *, unsigned int, unsigned int);
+int recvmmsg (int, struct mmsghdr *, unsigned int, unsigned int, struct timespec *);
+#endif
+
+struct linger {
+	int l_onoff;
+	int l_linger;
+};
+
+#define SHUT_RD 0
+#define SHUT_WR 1
+#define SHUT_RDWR 2
+
+#ifndef SOCK_STREAM
+#define SOCK_STREAM    1
+#define SOCK_DGRAM     2
+#endif
+
+#define SOCK_RAW       3
+#define SOCK_RDM       4
+#define SOCK_SEQPACKET 5
+#define SOCK_DCCP      6
+#define SOCK_PACKET    10
+
+#ifndef SOCK_CLOEXEC
+#define SOCK_CLOEXEC   02000000
+#define SOCK_NONBLOCK  04000
+#endif
+
+#define PF_UNSPEC       0
+#define PF_LOCAL        1
+#define PF_UNIX         PF_LOCAL
+#define PF_FILE         PF_LOCAL
+#define PF_INET         2
+#define PF_AX25         3
+#define PF_IPX          4
+#define PF_APPLETALK    5
+#define PF_NETROM       6
+#define PF_BRIDGE       7
+#define PF_ATMPVC       8
+#define PF_X25          9
+#define PF_INET6        10
+#define PF_ROSE         11
+#define PF_DECnet       12
+#define PF_NETBEUI      13
+#define PF_SECURITY     14
+#define PF_KEY          15
+#define PF_NETLINK      16
+#define PF_ROUTE        PF_NETLINK
+#define PF_PACKET       17
+#define PF_ASH          18
+#define PF_ECONET       19
+#define PF_ATMSVC       20
+#define PF_RDS          21
+#define PF_SNA          22
+#define PF_IRDA         23
+#define PF_PPPOX        24
+#define PF_WANPIPE      25
+#define PF_LLC          26
+#define PF_IB           27
+#define PF_MPLS         28
+#define PF_CAN          29
+#define PF_TIPC         30
+#define PF_BLUETOOTH    31
+#define PF_IUCV         32
+#define PF_RXRPC        33
+#define PF_ISDN         34
+#define PF_PHONET       35
+#define PF_IEEE802154   36
+#define PF_CAIF         37
+#define PF_ALG          38
+#define PF_NFC          39
+#define PF_VSOCK        40
+#define PF_KCM          41
+#define PF_QIPCRTR      42
+#define PF_SMC          43
+#define PF_XDP          44
+#define PF_MAX          45
+
+#define AF_UNSPEC       PF_UNSPEC
+#define AF_LOCAL        PF_LOCAL
+#define AF_UNIX         AF_LOCAL
+#define AF_FILE         AF_LOCAL
+#define AF_INET         PF_INET
+#define AF_AX25         PF_AX25
+#define AF_IPX          PF_IPX
+#define AF_APPLETALK    PF_APPLETALK
+#define AF_NETROM       PF_NETROM
+#define AF_BRIDGE       PF_BRIDGE
+#define AF_ATMPVC       PF_ATMPVC
+#define AF_X25          PF_X25
+#define AF_INET6        PF_INET6
+#define AF_ROSE         PF_ROSE
+#define AF_DECnet       PF_DECnet
+#define AF_NETBEUI      PF_NETBEUI
+#define AF_SECURITY     PF_SECURITY
+#define AF_KEY          PF_KEY
+#define AF_NETLINK      PF_NETLINK
+#define AF_ROUTE        PF_ROUTE
+#define AF_PACKET       PF_PACKET
+#define AF_ASH          PF_ASH
+#define AF_ECONET       PF_ECONET
+#define AF_ATMSVC       PF_ATMSVC
+#define AF_RDS          PF_RDS
+#define AF_SNA          PF_SNA
+#define AF_IRDA         PF_IRDA
+#define AF_PPPOX        PF_PPPOX
+#define AF_WANPIPE      PF_WANPIPE
+#define AF_LLC          PF_LLC
+#define AF_IB           PF_IB
+#define AF_MPLS         PF_MPLS
+#define AF_CAN          PF_CAN
+#define AF_TIPC         PF_TIPC
+#define AF_BLUETOOTH    PF_BLUETOOTH
+#define AF_IUCV         PF_IUCV
+#define AF_RXRPC        PF_RXRPC
+#define AF_ISDN         PF_ISDN
+#define AF_PHONET       PF_PHONET
+#define AF_IEEE802154   PF_IEEE802154
+#define AF_CAIF         PF_CAIF
+#define AF_ALG          PF_ALG
+#define AF_NFC          PF_NFC
+#define AF_VSOCK        PF_VSOCK
+#define AF_KCM          PF_KCM
+#define AF_QIPCRTR      PF_QIPCRTR
+#define AF_SMC          PF_SMC
+#define AF_XDP          PF_XDP
+#define AF_MAX          PF_MAX
+
+#ifndef SO_DEBUG
+#define SO_DEBUG        1
+#define SO_REUSEADDR    2
+#define SO_TYPE         3
+#define SO_ERROR        4
+#define SO_DONTROUTE    5
+#define SO_BROADCAST    6
+#define SO_SNDBUF       7
+#define SO_RCVBUF       8
+#define SO_KEEPALIVE    9
+#define SO_OOBINLINE    10
+#define SO_NO_CHECK     11
+#define SO_PRIORITY     12
+#define SO_LINGER       13
+#define SO_BSDCOMPAT    14
+#define SO_REUSEPORT    15
+#define SO_PASSCRED     16
+#define SO_PEERCRED     17
+#define SO_RCVLOWAT     18
+#define SO_SNDLOWAT     19
+#define SO_ACCEPTCONN   30
+#define SO_PEERSEC      31
+#define SO_SNDBUFFORCE  32
+#define SO_RCVBUFFORCE  33
+#define SO_PROTOCOL     38
+#define SO_DOMAIN       39
+#endif
+
+#ifndef SO_RCVTIMEO
+#if __LONG_MAX == 0x7fffffff
+#define SO_RCVTIMEO     66
+#define SO_SNDTIMEO     67
+#else
+#define SO_RCVTIMEO     20
+#define SO_SNDTIMEO     21
+#endif
+#endif
+
+#ifndef SO_TIMESTAMP
+#if __LONG_MAX == 0x7fffffff
+#define SO_TIMESTAMP    63
+#define SO_TIMESTAMPNS  64
+#define SO_TIMESTAMPING 65
+#else
+#define SO_TIMESTAMP    29
+#define SO_TIMESTAMPNS  35
+#define SO_TIMESTAMPING 37
+#endif
+#endif
+
+#define SO_SECURITY_AUTHENTICATION              22
+#define SO_SECURITY_ENCRYPTION_TRANSPORT        23
+#define SO_SECURITY_ENCRYPTION_NETWORK          24
+
+#define SO_BINDTODEVICE 25
+
+#define SO_ATTACH_FILTER        26
+#define SO_DETACH_FILTER        27
+#define SO_GET_FILTER           SO_ATTACH_FILTER
+
+#define SO_PEERNAME             28
+#define SCM_TIMESTAMP           SO_TIMESTAMP
+#define SO_PASSSEC              34
+#define SCM_TIMESTAMPNS         SO_TIMESTAMPNS
+#define SO_MARK                 36
+#define SCM_TIMESTAMPING        SO_TIMESTAMPING
+#define SO_RXQ_OVFL             40
+#define SO_WIFI_STATUS          41
+#define SCM_WIFI_STATUS         SO_WIFI_STATUS
+#define SO_PEEK_OFF             42
+#define SO_NOFCS                43
+#define SO_LOCK_FILTER          44
+#define SO_SELECT_ERR_QUEUE     45
+#define SO_BUSY_POLL            46
+#define SO_MAX_PACING_RATE      47
+#define SO_BPF_EXTENSIONS       48
+#define SO_INCOMING_CPU         49
+#define SO_ATTACH_BPF           50
+#define SO_DETACH_BPF           SO_DETACH_FILTER
+#define SO_ATTACH_REUSEPORT_CBPF 51
+#define SO_ATTACH_REUSEPORT_EBPF 52
+#define SO_CNX_ADVICE           53
+#define SCM_TIMESTAMPING_OPT_STATS 54
+#define SO_MEMINFO              55
+#define SO_INCOMING_NAPI_ID     56
+#define SO_COOKIE               57
+#define SCM_TIMESTAMPING_PKTINFO 58
+#define SO_PEERGROUPS           59
+#define SO_ZEROCOPY             60
+#define SO_TXTIME               61
+#define SCM_TXTIME              SO_TXTIME
+#define SO_BINDTOIFINDEX        62
+#define SO_DETACH_REUSEPORT_BPF 68
+
+#ifndef SOL_SOCKET
+#define SOL_SOCKET      1
+#endif
+
+#define SOL_IP          0
+#define SOL_IPV6        41
+#define SOL_ICMPV6      58
+
+#define SOL_RAW         255
+#define SOL_DECNET      261
+#define SOL_X25         262
+#define SOL_PACKET      263
+#define SOL_ATM         264
+#define SOL_AAL         265
+#define SOL_IRDA        266
+#define SOL_NETBEUI     267
+#define SOL_LLC         268
+#define SOL_DCCP        269
+#define SOL_NETLINK     270
+#define SOL_TIPC        271
+#define SOL_RXRPC       272
+#define SOL_PPPOL2TP    273
+#define SOL_BLUETOOTH   274
+#define SOL_PNPIPE      275
+#define SOL_RDS         276
+#define SOL_IUCV        277
+#define SOL_CAIF        278
+#define SOL_ALG         279
+#define SOL_NFC         280
+#define SOL_KCM         281
+#define SOL_TLS         282
+#define SOL_XDP         283
+
+#define SOMAXCONN       128
+
+#define MSG_OOB       0x0001
+#define MSG_PEEK      0x0002
+#define MSG_DONTROUTE 0x0004
+#define MSG_CTRUNC    0x0008
+#define MSG_PROXY     0x0010
+#define MSG_TRUNC     0x0020
+#define MSG_DONTWAIT  0x0040
+#define MSG_EOR       0x0080
+#define MSG_WAITALL   0x0100
+#define MSG_FIN       0x0200
+#define MSG_SYN       0x0400
+#define MSG_CONFIRM   0x0800
+#define MSG_RST       0x1000
+#define MSG_ERRQUEUE  0x2000
+#define MSG_NOSIGNAL  0x4000
+#define MSG_MORE      0x8000
+#define MSG_WAITFORONE 0x10000
+#define MSG_BATCH     0x40000
+#define MSG_ZEROCOPY  0x4000000
+#define MSG_FASTOPEN  0x20000000
+#define MSG_CMSG_CLOEXEC 0x40000000
+
+#define __CMSG_LEN(cmsg) (((cmsg)->cmsg_len + sizeof(long) - 1) & ~(long)(sizeof(long) - 1))
+#define __CMSG_NEXT(cmsg) ((unsigned char *)(cmsg) + __CMSG_LEN(cmsg))
+#define __MHDR_END(mhdr) ((unsigned char *)(mhdr)->msg_control + (mhdr)->msg_controllen)
+
+#define CMSG_DATA(cmsg) ((unsigned char *) (((struct cmsghdr *)(cmsg)) + 1))
+#define CMSG_NXTHDR(mhdr, cmsg) ((cmsg)->cmsg_len < sizeof (struct cmsghdr) || \
+	__CMSG_LEN(cmsg) + sizeof(struct cmsghdr) >= (size_t)(__MHDR_END(mhdr) - (unsigned char *)(cmsg)) \
+	? 0 : (struct cmsghdr *)__CMSG_NEXT(cmsg))
+#define CMSG_FIRSTHDR(mhdr) ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) 0)
+
+#define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) & (size_t) ~(sizeof (size_t) - 1))
+#define CMSG_SPACE(len) (CMSG_ALIGN (len) + CMSG_ALIGN (sizeof (struct cmsghdr)))
+#define CMSG_LEN(len)   (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len))
+
+#define SCM_RIGHTS      0x01
+#define SCM_CREDENTIALS 0x02
+
+struct sockaddr {
+	sa_family_t sa_family;
+	char sa_data[14];
+};
+
+struct sockaddr_storage {
+	sa_family_t ss_family;
+	char __ss_padding[128-sizeof(long)-sizeof(sa_family_t)];
+	unsigned long __ss_align;
+};
+
+int socket (int, int, int);
+int socketpair (int, int, int, int [2]);
+
+int shutdown (int, int);
+
+int bind (int, const struct sockaddr *, socklen_t);
+int connect (int, const struct sockaddr *, socklen_t);
+int listen (int, int);
+int accept (int, struct sockaddr *__restrict, socklen_t *__restrict);
+int accept4(int, struct sockaddr *__restrict, socklen_t *__restrict, int);
+
+int getsockname (int, struct sockaddr *__restrict, socklen_t *__restrict);
+int getpeername (int, struct sockaddr *__restrict, socklen_t *__restrict);
+
+ssize_t send (int, const void *, size_t, int);
+ssize_t recv (int, void *, size_t, int);
+ssize_t sendto (int, const void *, size_t, int, const struct sockaddr *, socklen_t);
+ssize_t recvfrom (int, void *__restrict, size_t, int, struct sockaddr *__restrict, socklen_t *__restrict);
+ssize_t sendmsg (int, const struct msghdr *, int);
+ssize_t recvmsg (int, struct msghdr *, int);
+
+int getsockopt (int, int, int, void *__restrict, socklen_t *__restrict);
+int setsockopt (int, int, int, const void *, socklen_t);
+
+int sockatmark (int);
+
+#if _REDIR_TIME64
+#ifdef _GNU_SOURCE
+__REDIR(recvmmsg, __recvmmsg_time64);
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/sys/soundcard.h b/x86_64-linux-musl/include/sys/soundcard.h
new file mode 100644
index 0000000..5ca7764
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/soundcard.h
@@ -0,0 +1 @@
+#include <bits/soundcard.h>
diff --git a/x86_64-linux-musl/include/sys/stat.h b/x86_64-linux-musl/include/sys/stat.h
new file mode 100644
index 0000000..10d446c
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/stat.h
@@ -0,0 +1,127 @@
+#ifndef	_SYS_STAT_H
+#define	_SYS_STAT_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_dev_t
+#define __NEED_ino_t
+#define __NEED_mode_t
+#define __NEED_nlink_t
+#define __NEED_uid_t
+#define __NEED_gid_t
+#define __NEED_off_t
+#define __NEED_time_t
+#define __NEED_blksize_t
+#define __NEED_blkcnt_t
+#define __NEED_struct_timespec
+
+#include <bits/alltypes.h>
+
+#include <bits/stat.h>
+
+#define st_atime st_atim.tv_sec
+#define st_mtime st_mtim.tv_sec
+#define st_ctime st_ctim.tv_sec
+
+#define S_IFMT  0170000
+
+#define S_IFDIR 0040000
+#define S_IFCHR 0020000
+#define S_IFBLK 0060000
+#define S_IFREG 0100000
+#define S_IFIFO 0010000
+#define S_IFLNK 0120000
+#define S_IFSOCK 0140000
+
+#define S_TYPEISMQ(buf)  0
+#define S_TYPEISSEM(buf) 0
+#define S_TYPEISSHM(buf) 0
+#define S_TYPEISTMO(buf) 0
+
+#define S_ISDIR(mode)  (((mode) & S_IFMT) == S_IFDIR)
+#define S_ISCHR(mode)  (((mode) & S_IFMT) == S_IFCHR)
+#define S_ISBLK(mode)  (((mode) & S_IFMT) == S_IFBLK)
+#define S_ISREG(mode)  (((mode) & S_IFMT) == S_IFREG)
+#define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFIFO)
+#define S_ISLNK(mode)  (((mode) & S_IFMT) == S_IFLNK)
+#define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK)
+
+#ifndef S_IRUSR
+#define S_ISUID 04000
+#define S_ISGID 02000
+#define S_ISVTX 01000
+#define S_IRUSR 0400
+#define S_IWUSR 0200
+#define S_IXUSR 0100
+#define S_IRWXU 0700
+#define S_IRGRP 0040
+#define S_IWGRP 0020
+#define S_IXGRP 0010
+#define S_IRWXG 0070
+#define S_IROTH 0004
+#define S_IWOTH 0002
+#define S_IXOTH 0001
+#define S_IRWXO 0007
+#endif
+
+#define UTIME_NOW  0x3fffffff
+#define UTIME_OMIT 0x3ffffffe
+
+int stat(const char *__restrict, struct stat *__restrict);
+int fstat(int, struct stat *);
+int lstat(const char *__restrict, struct stat *__restrict);
+int fstatat(int, const char *__restrict, struct stat *__restrict, int);
+int chmod(const char *, mode_t);
+int fchmod(int, mode_t);
+int fchmodat(int, const char *, mode_t, int);
+mode_t umask(mode_t);
+int mkdir(const char *, mode_t);
+int mkfifo(const char *, mode_t);
+int mkdirat(int, const char *, mode_t);
+int mkfifoat(int, const char *, mode_t);
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+int mknod(const char *, mode_t, dev_t);
+int mknodat(int, const char *, mode_t, dev_t);
+#endif
+
+int futimens(int, const struct timespec [2]);
+int utimensat(int, const char *, const struct timespec [2], int);
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+int lchmod(const char *, mode_t);
+#define S_IREAD S_IRUSR
+#define S_IWRITE S_IWUSR
+#define S_IEXEC S_IXUSR
+#endif
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define stat64 stat
+#define fstat64 fstat
+#define lstat64 lstat
+#define fstatat64 fstatat
+#define blkcnt64_t blkcnt_t
+#define fsblkcnt64_t fsblkcnt_t
+#define fsfilcnt64_t fsfilcnt_t
+#define ino64_t ino_t
+#define off64_t off_t
+#endif
+
+#if _REDIR_TIME64
+__REDIR(stat, __stat_time64);
+__REDIR(fstat, __fstat_time64);
+__REDIR(lstat, __lstat_time64);
+__REDIR(fstatat, __fstatat_time64);
+__REDIR(futimens, __futimens_time64);
+__REDIR(utimensat, __utimensat_time64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+
diff --git a/x86_64-linux-musl/include/sys/statfs.h b/x86_64-linux-musl/include/sys/statfs.h
new file mode 100644
index 0000000..6f4c623
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/statfs.h
@@ -0,0 +1,32 @@
+#ifndef	_SYS_STATFS_H
+#define	_SYS_STATFS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#include <sys/statvfs.h>
+
+typedef struct __fsid_t {
+	int __val[2];
+} fsid_t;
+
+#include <bits/statfs.h>
+
+int statfs (const char *, struct statfs *);
+int fstatfs (int, struct statfs *);
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define statfs64 statfs
+#define fstatfs64 fstatfs
+#define fsblkcnt64_t fsblkcnt_t
+#define fsfilcnt64_t fsfilcnt_t
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/statvfs.h b/x86_64-linux-musl/include/sys/statvfs.h
new file mode 100644
index 0000000..793490b
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/statvfs.h
@@ -0,0 +1,56 @@
+#ifndef	_SYS_STATVFS_H
+#define	_SYS_STATVFS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_fsblkcnt_t
+#define __NEED_fsfilcnt_t
+#include <bits/alltypes.h>
+
+struct statvfs {
+	unsigned long f_bsize, f_frsize;
+	fsblkcnt_t f_blocks, f_bfree, f_bavail;
+	fsfilcnt_t f_files, f_ffree, f_favail;
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+	unsigned long f_fsid;
+	unsigned :8*(2*sizeof(int)-sizeof(long));
+#else
+	unsigned :8*(2*sizeof(int)-sizeof(long));
+	unsigned long f_fsid;
+#endif
+	unsigned long f_flag, f_namemax;
+	int __reserved[6];
+};
+
+int statvfs (const char *__restrict, struct statvfs *__restrict);
+int fstatvfs (int, struct statvfs *);
+
+#define ST_RDONLY 1
+#define ST_NOSUID 2
+#define ST_NODEV  4
+#define ST_NOEXEC 8
+#define ST_SYNCHRONOUS 16
+#define ST_MANDLOCK    64
+#define ST_WRITE       128
+#define ST_APPEND      256
+#define ST_IMMUTABLE   512
+#define ST_NOATIME     1024
+#define ST_NODIRATIME  2048
+#define ST_RELATIME    4096
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define statvfs64 statvfs
+#define fstatvfs64 fstatvfs
+#define fsblkcnt64_t fsblkcnt_t
+#define fsfilcnt64_t fsfilcnt_t
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/stropts.h b/x86_64-linux-musl/include/sys/stropts.h
new file mode 100644
index 0000000..5b5bc02
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/stropts.h
@@ -0,0 +1 @@
+#include <stropts.h>
diff --git a/x86_64-linux-musl/include/sys/swap.h b/x86_64-linux-musl/include/sys/swap.h
new file mode 100644
index 0000000..11c0f92
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/swap.h
@@ -0,0 +1,21 @@
+#ifndef _SYS_SWAP_H
+#define _SYS_SWAP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define	SWAP_FLAG_PREFER        0x8000
+#define	SWAP_FLAG_PRIO_MASK     0x7fff
+#define	SWAP_FLAG_PRIO_SHIFT    0
+#define SWAP_FLAG_DISCARD       0x10000
+
+int swapon (const char *, int);
+int swapoff (const char *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/syscall.h b/x86_64-linux-musl/include/sys/syscall.h
new file mode 100644
index 0000000..24987dd
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/syscall.h
@@ -0,0 +1,6 @@
+#ifndef _SYS_SYSCALL_H
+#define _SYS_SYSCALL_H
+
+#include <bits/syscall.h>
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/sysinfo.h b/x86_64-linux-musl/include/sys/sysinfo.h
new file mode 100644
index 0000000..3b7d0e3
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/sysinfo.h
@@ -0,0 +1,36 @@
+#ifndef _SYS_SYSINFO_H
+#define _SYS_SYSINFO_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SI_LOAD_SHIFT 16
+
+struct sysinfo {
+	long uptime;
+	unsigned long loads[3];
+	unsigned long totalram;
+	unsigned long freeram;
+	unsigned long sharedram;
+	unsigned long bufferram;
+	unsigned long totalswap;
+	unsigned long freeswap;
+	unsigned short procs, pad;
+	unsigned long totalhigh;
+	unsigned long freehigh;
+	unsigned mem_unit;
+	char __reserved[256];
+};
+
+int sysinfo (struct sysinfo *);
+int get_nprocs_conf (void);
+int get_nprocs (void);
+long get_phys_pages (void);
+long get_avphys_pages (void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/syslog.h b/x86_64-linux-musl/include/sys/syslog.h
new file mode 100644
index 0000000..7761ece
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/syslog.h
@@ -0,0 +1 @@
+#include <syslog.h>
diff --git a/x86_64-linux-musl/include/sys/sysmacros.h b/x86_64-linux-musl/include/sys/sysmacros.h
new file mode 100644
index 0000000..07a3ef1
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/sysmacros.h
@@ -0,0 +1,15 @@
+#ifndef _SYS_SYSMACROS_H
+#define _SYS_SYSMACROS_H
+
+#define major(x) \
+	((unsigned)( (((x)>>31>>1) & 0xfffff000) | (((x)>>8) & 0x00000fff) ))
+#define minor(x) \
+	((unsigned)( (((x)>>12) & 0xffffff00) | ((x) & 0x000000ff) ))
+
+#define makedev(x,y) ( \
+        (((x)&0xfffff000ULL) << 32) | \
+	(((x)&0x00000fffULL) << 8) | \
+        (((y)&0xffffff00ULL) << 12) | \
+	(((y)&0x000000ffULL)) )
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/termios.h b/x86_64-linux-musl/include/sys/termios.h
new file mode 100644
index 0000000..f5f751f
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/termios.h
@@ -0,0 +1,2 @@
+#warning redirecting incorrect #include <sys/termios.h> to <termios.h>
+#include <termios.h>
diff --git a/x86_64-linux-musl/include/sys/time.h b/x86_64-linux-musl/include/sys/time.h
new file mode 100644
index 0000000..cdc67ef
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/time.h
@@ -0,0 +1,76 @@
+#ifndef _SYS_TIME_H
+#define _SYS_TIME_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#include <sys/select.h>
+
+int gettimeofday (struct timeval *__restrict, void *__restrict);
+
+#define ITIMER_REAL    0
+#define ITIMER_VIRTUAL 1
+#define ITIMER_PROF    2
+
+struct itimerval {
+	struct timeval it_interval;
+	struct timeval it_value;
+};
+
+int getitimer (int, struct itimerval *);
+int setitimer (int, const struct itimerval *__restrict, struct itimerval *__restrict);
+int utimes (const char *, const struct timeval [2]);
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+struct timezone {
+	int tz_minuteswest;
+	int tz_dsttime;
+};
+int futimes(int, const struct timeval [2]);
+int futimesat(int, const char *, const struct timeval [2]);
+int lutimes(const char *, const struct timeval [2]);
+int settimeofday(const struct timeval *, const struct timezone *);
+int adjtime (const struct timeval *, struct timeval *);
+#define timerisset(t) ((t)->tv_sec || (t)->tv_usec)
+#define timerclear(t) ((t)->tv_sec = (t)->tv_usec = 0)
+#define timercmp(s,t,op) ((s)->tv_sec == (t)->tv_sec ? \
+	(s)->tv_usec op (t)->tv_usec : (s)->tv_sec op (t)->tv_sec)
+#define timeradd(s,t,a) (void) ( (a)->tv_sec = (s)->tv_sec + (t)->tv_sec, \
+	((a)->tv_usec = (s)->tv_usec + (t)->tv_usec) >= 1000000 && \
+	((a)->tv_usec -= 1000000, (a)->tv_sec++) )
+#define timersub(s,t,a) (void) ( (a)->tv_sec = (s)->tv_sec - (t)->tv_sec, \
+	((a)->tv_usec = (s)->tv_usec - (t)->tv_usec) < 0 && \
+	((a)->tv_usec += 1000000, (a)->tv_sec--) )
+#endif
+
+#if defined(_GNU_SOURCE)
+#define TIMEVAL_TO_TIMESPEC(tv, ts) ( \
+	(ts)->tv_sec = (tv)->tv_sec, \
+	(ts)->tv_nsec = (tv)->tv_usec * 1000, \
+	(void)0 )
+#define TIMESPEC_TO_TIMEVAL(tv, ts) ( \
+	(tv)->tv_sec = (ts)->tv_sec, \
+	(tv)->tv_usec = (ts)->tv_nsec / 1000, \
+	(void)0 )
+#endif
+
+#if _REDIR_TIME64
+__REDIR(gettimeofday, __gettimeofday_time64);
+__REDIR(getitimer, __getitimer_time64);
+__REDIR(setitimer, __setitimer_time64);
+__REDIR(utimes, __utimes_time64);
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+__REDIR(futimes, __futimes_time64);
+__REDIR(futimesat, __futimesat_time64);
+__REDIR(lutimes, __lutimes_time64);
+__REDIR(settimeofday, __settimeofday_time64);
+__REDIR(adjtime, __adjtime64);
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/sys/timeb.h b/x86_64-linux-musl/include/sys/timeb.h
new file mode 100644
index 0000000..628239b
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/timeb.h
@@ -0,0 +1,28 @@
+#ifndef _SYS_TIMEB_H
+#define _SYS_TIMEB_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_time_t
+
+#include <bits/alltypes.h>
+
+struct timeb {
+	time_t time;
+	unsigned short millitm;
+	short timezone, dstflag;
+};
+
+int ftime(struct timeb *);
+
+#if _REDIR_TIME64
+__REDIR(ftime, __ftime64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/sys/timerfd.h b/x86_64-linux-musl/include/sys/timerfd.h
new file mode 100644
index 0000000..1b832cd
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/timerfd.h
@@ -0,0 +1,32 @@
+#ifndef _SYS_TIMERFD_H
+#define _SYS_TIMERFD_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <time.h>
+#include <fcntl.h>
+
+#define TFD_NONBLOCK O_NONBLOCK
+#define TFD_CLOEXEC O_CLOEXEC
+
+#define TFD_TIMER_ABSTIME 1
+#define TFD_TIMER_CANCEL_ON_SET (1 << 1)
+
+struct itimerspec;
+
+int timerfd_create(int, int);
+int timerfd_settime(int, int, const struct itimerspec *, struct itimerspec *);
+int timerfd_gettime(int, struct itimerspec *);
+
+#if _REDIR_TIME64
+__REDIR(timerfd_settime, __timerfd_settime64);
+__REDIR(timerfd_gettime, __timerfd_gettime64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/times.h b/x86_64-linux-musl/include/sys/times.h
new file mode 100644
index 0000000..80a5052
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/times.h
@@ -0,0 +1,25 @@
+#ifndef	_SYS_TIMES_H
+#define	_SYS_TIMES_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __NEED_clock_t
+#include <bits/alltypes.h>
+
+struct tms {
+	clock_t tms_utime;
+	clock_t tms_stime;
+	clock_t tms_cutime;
+	clock_t tms_cstime;
+};
+
+clock_t times (struct tms *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/x86_64-linux-musl/include/sys/timex.h b/x86_64-linux-musl/include/sys/timex.h
new file mode 100644
index 0000000..8b417e1
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/timex.h
@@ -0,0 +1,103 @@
+#ifndef _SYS_TIMEX_H
+#define _SYS_TIMEX_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __NEED_clockid_t
+
+#include <bits/alltypes.h>
+
+#include <sys/time.h>
+
+struct ntptimeval {
+	struct timeval time;
+	long maxerror, esterror;
+};
+
+struct timex {
+	unsigned modes;
+	long offset, freq, maxerror, esterror;
+	int status;
+	long constant, precision, tolerance;
+	struct timeval time;
+	long tick, ppsfreq, jitter;
+	int shift;
+	long stabil, jitcnt, calcnt, errcnt, stbcnt;
+	int tai;
+	int __padding[11];
+};
+
+#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_CLKB	ADJ_TICK
+#define MOD_CLKA	ADJ_OFFSET_SINGLESHOT
+#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
+
+#define MAXTC		6
+
+int adjtimex(struct timex *);
+int clock_adjtime(clockid_t, struct timex *);
+
+#if _REDIR_TIME64
+__REDIR(adjtimex, __adjtimex_time64);
+__REDIR(clock_adjtime, __clock_adjtime64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/ttydefaults.h b/x86_64-linux-musl/include/sys/ttydefaults.h
new file mode 100644
index 0000000..edb55bc
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/ttydefaults.h
@@ -0,0 +1,34 @@
+#ifndef _SYS_TTYDEFAULTS_H
+#define _SYS_TTYDEFAULTS_H
+
+#define TTYDEF_IFLAG (BRKINT | ISTRIP | ICRNL | IMAXBEL | IXON | IXANY)
+#define TTYDEF_OFLAG (OPOST | ONLCR | XTABS)
+#define TTYDEF_LFLAG (ECHO | ICANON | ISIG | IEXTEN | ECHOE|ECHOKE|ECHOCTL)
+#define TTYDEF_CFLAG (CREAD | CS7 | PARENB | HUPCL)
+#define TTYDEF_SPEED (B9600)
+#define CTRL(x) ((x)&037)
+#define CEOF CTRL('d')
+
+#define CEOL '\0'
+#define CSTATUS '\0'
+
+#define CERASE 0177
+#define CINTR CTRL('c')
+#define CKILL CTRL('u')
+#define CMIN 1
+#define CQUIT 034
+#define CSUSP CTRL('z')
+#define CTIME 0
+#define CDSUSP CTRL('y')
+#define CSTART CTRL('q')
+#define CSTOP CTRL('s')
+#define CLNEXT CTRL('v')
+#define CDISCARD CTRL('o')
+#define CWERASE CTRL('w')
+#define CREPRINT CTRL('r')
+#define CEOT CEOF
+#define CBRK CEOL
+#define CRPRNT CREPRINT
+#define CFLUSH CDISCARD
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/types.h b/x86_64-linux-musl/include/sys/types.h
new file mode 100644
index 0000000..0c35541
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/types.h
@@ -0,0 +1,85 @@
+#ifndef	_SYS_TYPES_H
+#define	_SYS_TYPES_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_ino_t
+#define __NEED_dev_t
+#define __NEED_uid_t
+#define __NEED_gid_t
+#define __NEED_mode_t
+#define __NEED_nlink_t
+#define __NEED_off_t
+#define __NEED_pid_t
+#define __NEED_size_t
+#define __NEED_ssize_t
+#define __NEED_time_t
+#define __NEED_timer_t
+#define __NEED_clockid_t
+
+#define __NEED_blkcnt_t
+#define __NEED_fsblkcnt_t
+#define __NEED_fsfilcnt_t
+
+#define __NEED_id_t
+#define __NEED_key_t
+#define __NEED_clock_t
+#define __NEED_suseconds_t
+#define __NEED_blksize_t
+
+#define __NEED_pthread_t
+#define __NEED_pthread_attr_t
+#define __NEED_pthread_mutexattr_t
+#define __NEED_pthread_condattr_t
+#define __NEED_pthread_rwlockattr_t
+#define __NEED_pthread_barrierattr_t
+#define __NEED_pthread_mutex_t
+#define __NEED_pthread_cond_t
+#define __NEED_pthread_rwlock_t
+#define __NEED_pthread_barrier_t
+#define __NEED_pthread_spinlock_t
+#define __NEED_pthread_key_t
+#define __NEED_pthread_once_t
+#define __NEED_useconds_t
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define __NEED_int8_t
+#define __NEED_int16_t
+#define __NEED_int32_t
+#define __NEED_int64_t
+#define __NEED_u_int64_t
+#define __NEED_register_t
+#endif
+
+#include <bits/alltypes.h>
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+typedef unsigned char u_int8_t;
+typedef unsigned short u_int16_t;
+typedef unsigned u_int32_t;
+typedef char *caddr_t;
+typedef unsigned char u_char;
+typedef unsigned short u_short, ushort;
+typedef unsigned u_int, uint;
+typedef unsigned long u_long, ulong;
+typedef long long quad_t;
+typedef unsigned long long u_quad_t;
+#include <endian.h>
+#include <sys/select.h>
+#endif
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define blkcnt64_t blkcnt_t
+#define fsblkcnt64_t fsblkcnt_t
+#define fsfilcnt64_t fsfilcnt_t
+#define ino64_t ino_t
+#define off64_t off_t
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/sys/ucontext.h b/x86_64-linux-musl/include/sys/ucontext.h
new file mode 100644
index 0000000..5fdbd63
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/ucontext.h
@@ -0,0 +1 @@
+#include <ucontext.h>
diff --git a/x86_64-linux-musl/include/sys/uio.h b/x86_64-linux-musl/include/sys/uio.h
new file mode 100644
index 0000000..00f73a2
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/uio.h
@@ -0,0 +1,48 @@
+#ifndef _SYS_UIO_H
+#define _SYS_UIO_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_size_t
+#define __NEED_ssize_t
+#define __NEED_struct_iovec
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define __NEED_off_t
+#endif
+
+#ifdef _GNU_SOURCE
+#define __NEED_pid_t
+#endif
+
+#include <bits/alltypes.h>
+
+#define UIO_MAXIOV 1024
+
+ssize_t readv (int, const struct iovec *, int);
+ssize_t writev (int, const struct iovec *, int);
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+ssize_t preadv (int, const struct iovec *, int, off_t);
+ssize_t pwritev (int, const struct iovec *, int, off_t);
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define preadv64 preadv
+#define pwritev64 pwritev
+#define off64_t off_t
+#endif
+#endif
+
+#ifdef _GNU_SOURCE
+ssize_t process_vm_writev(pid_t, const struct iovec *, unsigned long, const struct iovec *, unsigned long, unsigned long);
+ssize_t process_vm_readv(pid_t, const struct iovec *, unsigned long, const struct iovec *, unsigned long, unsigned long);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/un.h b/x86_64-linux-musl/include/sys/un.h
new file mode 100644
index 0000000..1a3193a
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/un.h
@@ -0,0 +1,31 @@
+#ifndef	_SYS_UN_H
+#define	_SYS_UN_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_sa_family_t
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define __NEED_size_t
+#endif
+
+#include <bits/alltypes.h>
+
+struct sockaddr_un {
+	sa_family_t sun_family;
+	char sun_path[108];
+};
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+size_t strlen(const char *);
+#define SUN_LEN(s) (2+strlen((s)->sun_path))
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/user.h b/x86_64-linux-musl/include/sys/user.h
new file mode 100644
index 0000000..96a0340
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/user.h
@@ -0,0 +1,16 @@
+#ifndef _SYS_USER_H
+#define _SYS_USER_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <limits.h>
+#include <stdint.h>
+#include <unistd.h>
+
+#include <bits/user.h>
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/sys/utsname.h b/x86_64-linux-musl/include/sys/utsname.h
new file mode 100644
index 0000000..2c80fb5
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/utsname.h
@@ -0,0 +1,29 @@
+#ifndef	_SYS_UTSNAME_H
+#define	_SYS_UTSNAME_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+struct utsname {
+	char sysname[65];
+	char nodename[65];
+	char release[65];
+	char version[65];
+	char machine[65];
+#ifdef _GNU_SOURCE
+	char domainname[65];
+#else
+	char __domainname[65];
+#endif
+};
+
+int uname (struct utsname *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/sys/vfs.h b/x86_64-linux-musl/include/sys/vfs.h
new file mode 100644
index 0000000..a899db2
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/vfs.h
@@ -0,0 +1 @@
+#include <sys/statfs.h>
diff --git a/x86_64-linux-musl/include/sys/vt.h b/x86_64-linux-musl/include/sys/vt.h
new file mode 100644
index 0000000..5000de4
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/vt.h
@@ -0,0 +1 @@
+#include <bits/vt.h>
diff --git a/x86_64-linux-musl/include/sys/wait.h b/x86_64-linux-musl/include/sys/wait.h
new file mode 100644
index 0000000..d4b1f2e
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/wait.h
@@ -0,0 +1,67 @@
+#ifndef	_SYS_WAIT_H
+#define	_SYS_WAIT_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_pid_t
+#define __NEED_id_t
+#include <bits/alltypes.h>
+
+typedef enum {
+	P_ALL = 0,
+	P_PID = 1,
+	P_PGID = 2,
+	P_PIDFD = 3
+} idtype_t;
+
+pid_t wait (int *);
+pid_t waitpid (pid_t, int *, int );
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+#include <signal.h>
+int waitid (idtype_t, id_t, siginfo_t *, int);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#include <sys/resource.h>
+pid_t wait3 (int *, int, struct rusage *);
+pid_t wait4 (pid_t, int *, int, struct rusage *);
+#endif
+
+#define WNOHANG    1
+#define WUNTRACED  2
+
+#define WSTOPPED   2
+#define WEXITED    4
+#define WCONTINUED 8
+#define WNOWAIT    0x1000000
+
+#define __WNOTHREAD 0x20000000
+#define __WALL      0x40000000
+#define __WCLONE    0x80000000
+
+#define WEXITSTATUS(s) (((s) & 0xff00) >> 8)
+#define WTERMSIG(s) ((s) & 0x7f)
+#define WSTOPSIG(s) WEXITSTATUS(s)
+#define WCOREDUMP(s) ((s) & 0x80)
+#define WIFEXITED(s) (!WTERMSIG(s))
+#define WIFSTOPPED(s) ((short)((((s)&0xffff)*0x10001)>>8) > 0x7f00)
+#define WIFSIGNALED(s) (((s)&0xffff)-1U < 0xffu)
+#define WIFCONTINUED(s) ((s) == 0xffff)
+
+#if _REDIR_TIME64
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+__REDIR(wait3, __wait3_time64);
+__REDIR(wait4, __wait4_time64);
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/sys/xattr.h b/x86_64-linux-musl/include/sys/xattr.h
new file mode 100644
index 0000000..eeeaafc
--- /dev/null
+++ b/x86_64-linux-musl/include/sys/xattr.h
@@ -0,0 +1,32 @@
+#ifndef	_SYS_XATTR_H
+#define	_SYS_XATTR_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __NEED_ssize_t
+#define __NEED_size_t
+#include <bits/alltypes.h>
+
+#define XATTR_CREATE 1
+#define XATTR_REPLACE 2
+
+ssize_t getxattr(const char *, const char *, void *, size_t);
+ssize_t lgetxattr(const char *, const char *, void *, size_t);
+ssize_t fgetxattr(int, const char *, void *, size_t);
+ssize_t listxattr(const char *, char *, size_t);
+ssize_t llistxattr(const char *, char *, size_t);
+ssize_t flistxattr(int, char *, size_t);
+int setxattr(const char *, const char *, const void *, size_t, int);
+int lsetxattr(const char *, const char *, const void *, size_t, int);
+int fsetxattr(int, const char *, const void *, size_t, int);
+int removexattr(const char *, const char *);
+int lremovexattr(const char *, const char *);
+int fremovexattr(int, const char *);
+
+#define __UAPI_DEF_XATTR        0
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/syscall.h b/x86_64-linux-musl/include/syscall.h
new file mode 100644
index 0000000..4c30578
--- /dev/null
+++ b/x86_64-linux-musl/include/syscall.h
@@ -0,0 +1 @@
+#include <sys/syscall.h>
diff --git a/x86_64-linux-musl/include/sysexits.h b/x86_64-linux-musl/include/sysexits.h
new file mode 100644
index 0000000..16eeb41
--- /dev/null
+++ b/x86_64-linux-musl/include/sysexits.h
@@ -0,0 +1,21 @@
+#ifndef	_SYSEXITS_H
+#define _SYSEXITS_H
+#define EX_OK 0
+#define EX__BASE 64
+#define EX_USAGE 64
+#define EX_DATAERR 65
+#define EX_NOINPUT 66
+#define EX_NOUSER 67
+#define EX_NOHOST 68
+#define EX_UNAVAILABLE 69
+#define EX_SOFTWARE 70
+#define EX_OSERR 71
+#define EX_OSFILE 72
+#define EX_CANTCREAT 73
+#define EX_IOERR 74
+#define EX_TEMPFAIL 75
+#define EX_PROTOCOL 76
+#define EX_NOPERM 77
+#define EX_CONFIG 78
+#define EX__MAX 78
+#endif
diff --git a/x86_64-linux-musl/include/syslog.h b/x86_64-linux-musl/include/syslog.h
new file mode 100644
index 0000000..5b4d296
--- /dev/null
+++ b/x86_64-linux-musl/include/syslog.h
@@ -0,0 +1,100 @@
+#ifndef _SYSLOG_H
+#define _SYSLOG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define LOG_EMERG   0
+#define LOG_ALERT   1
+#define LOG_CRIT    2
+#define LOG_ERR     3
+#define LOG_WARNING 4
+#define LOG_NOTICE  5
+#define LOG_INFO    6
+#define LOG_DEBUG   7
+
+#define LOG_PRIMASK 7
+#define LOG_PRI(p) ((p)&LOG_PRIMASK)
+#define	LOG_MAKEPRI(f, p) (((f)<<3)|(p))
+
+#define LOG_MASK(p) (1<<(p))
+#define LOG_UPTO(p) ((1<<((p)+1))-1)
+
+#define LOG_KERN     (0<<3)
+#define LOG_USER     (1<<3)
+#define LOG_MAIL     (2<<3)
+#define LOG_DAEMON   (3<<3)
+#define LOG_AUTH     (4<<3)
+#define LOG_SYSLOG   (5<<3)
+#define LOG_LPR      (6<<3)
+#define LOG_NEWS     (7<<3)
+#define LOG_UUCP     (8<<3)
+#define LOG_CRON     (9<<3)
+#define	LOG_AUTHPRIV (10<<3)
+#define	LOG_FTP      (11<<3)
+
+#define LOG_LOCAL0   (16<<3)
+#define LOG_LOCAL1   (17<<3)
+#define LOG_LOCAL2   (18<<3)
+#define LOG_LOCAL3   (19<<3)
+#define LOG_LOCAL4   (20<<3)
+#define LOG_LOCAL5   (21<<3)
+#define LOG_LOCAL6   (22<<3)
+#define LOG_LOCAL7   (23<<3)
+
+#define LOG_NFACILITIES 24
+#define LOG_FACMASK 0x3f8
+#define LOG_FAC(p) (((p)&LOG_FACMASK)>>3)
+
+#define LOG_PID    0x01
+#define LOG_CONS   0x02
+#define LOG_ODELAY 0x04
+#define LOG_NDELAY 0x08
+#define LOG_NOWAIT 0x10
+#define LOG_PERROR 0x20
+
+void closelog (void);
+void openlog (const char *, int, int);
+int setlogmask (int);
+void syslog (int, const char *, ...);
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define _PATH_LOG "/dev/log"
+#define __NEED_va_list
+#include <bits/alltypes.h>
+void vsyslog (int, const char *, va_list);
+#if defined(SYSLOG_NAMES)
+#define	INTERNAL_NOPRI 0x10
+#define	INTERNAL_MARK (LOG_NFACILITIES<<3)
+typedef struct {
+	char *c_name;
+	int c_val;
+} CODE;
+#define prioritynames ((CODE *)(const CODE []){ \
+	{ "alert", LOG_ALERT }, { "crit", LOG_CRIT }, { "debug", LOG_DEBUG }, \
+	{ "emerg", LOG_EMERG }, { "err", LOG_ERR }, { "error", LOG_ERR }, \
+	{ "info", LOG_INFO }, { "none", INTERNAL_NOPRI }, \
+	{ "notice", LOG_NOTICE }, { "panic", LOG_EMERG }, \
+	{ "warn", LOG_WARNING }, { "warning", LOG_WARNING }, { 0, -1 } })
+#define facilitynames ((CODE *)(const CODE []){ \
+	{ "auth", LOG_AUTH }, { "authpriv", LOG_AUTHPRIV }, \
+	{ "cron", LOG_CRON }, { "daemon", LOG_DAEMON }, { "ftp", LOG_FTP }, \
+	{ "kern", LOG_KERN }, { "lpr", LOG_LPR }, { "mail", LOG_MAIL }, \
+	{ "mark", INTERNAL_MARK }, { "news", LOG_NEWS }, \
+	{ "security", LOG_AUTH }, { "syslog", LOG_SYSLOG }, \
+	{ "user", LOG_USER }, { "uucp", LOG_UUCP }, \
+	{ "local0", LOG_LOCAL0 }, { "local1", LOG_LOCAL1 }, \
+	{ "local2", LOG_LOCAL2 }, { "local3", LOG_LOCAL3 }, \
+	{ "local4", LOG_LOCAL4 }, { "local5", LOG_LOCAL5 }, \
+	{ "local6", LOG_LOCAL6 }, { "local7", LOG_LOCAL7 }, { 0, -1 } })
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/tar.h b/x86_64-linux-musl/include/tar.h
new file mode 100644
index 0000000..be58984
--- /dev/null
+++ b/x86_64-linux-musl/include/tar.h
@@ -0,0 +1,33 @@
+#ifndef	_TAR_H
+#define	_TAR_H
+
+#define TSUID   04000
+#define TSGID   02000
+#define TSVTX   01000
+#define TUREAD  00400
+#define TUWRITE 00200
+#define TUEXEC  00100
+#define TGREAD  00040
+#define TGWRITE 00020
+#define TGEXEC  00010
+#define TOREAD  00004
+#define TOWRITE 00002
+#define TOEXEC  00001
+
+#define REGTYPE  '0'
+#define AREGTYPE '\0'
+#define LNKTYPE  '1'
+#define SYMTYPE  '2'
+#define CHRTYPE  '3'
+#define BLKTYPE  '4'
+#define DIRTYPE  '5'
+#define FIFOTYPE '6'
+#define CONTTYPE '7'
+
+#define TMAGIC "ustar"
+#define TMAGLEN 6
+
+#define TVERSION "00"
+#define TVERSLEN 2
+
+#endif
diff --git a/x86_64-linux-musl/include/termios.h b/x86_64-linux-musl/include/termios.h
new file mode 100644
index 0000000..cbb5330
--- /dev/null
+++ b/x86_64-linux-musl/include/termios.h
@@ -0,0 +1,50 @@
+#ifndef	_TERMIOS_H
+#define	_TERMIOS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_pid_t
+#define __NEED_struct_winsize
+
+#include <bits/alltypes.h>
+
+typedef unsigned char cc_t;
+typedef unsigned int speed_t;
+typedef unsigned int tcflag_t;
+
+#define NCCS 32
+
+#include <bits/termios.h>
+
+speed_t cfgetospeed (const struct termios *);
+speed_t cfgetispeed (const struct termios *);
+int cfsetospeed (struct termios *, speed_t);
+int cfsetispeed (struct termios *, speed_t);
+
+int tcgetattr (int, struct termios *);
+int tcsetattr (int, int, const struct termios *);
+
+int tcgetwinsize (int, struct winsize *);
+int tcsetwinsize (int, const struct winsize *);
+
+int tcsendbreak (int, int);
+int tcdrain (int);
+int tcflush (int, int);
+int tcflow (int, int);
+
+pid_t tcgetsid (int);
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+void cfmakeraw(struct termios *);
+int cfsetspeed(struct termios *, speed_t);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/tgmath.h b/x86_64-linux-musl/include/tgmath.h
new file mode 100644
index 0000000..e41ccac
--- /dev/null
+++ b/x86_64-linux-musl/include/tgmath.h
@@ -0,0 +1,270 @@
+#ifndef _TGMATH_H
+#define _TGMATH_H
+
+/*
+the return types are only correct with gcc (__GNUC__)
+otherwise they are long double or long double complex
+
+the long double version of a function is never chosen when
+sizeof(double) == sizeof(long double)
+(but the return type is set correctly with gcc)
+*/
+
+#include <math.h>
+#include <complex.h>
+
+#define __IS_FP(x) (sizeof((x)+1ULL) == sizeof((x)+1.0f))
+#define __IS_CX(x) (__IS_FP(x) && sizeof(x) == sizeof((x)+I))
+#define __IS_REAL(x) (__IS_FP(x) && 2*sizeof(x) == sizeof((x)+I))
+
+#define __FLT(x) (__IS_REAL(x) && sizeof(x) == sizeof(float))
+#define __LDBL(x) (__IS_REAL(x) && sizeof(x) == sizeof(long double) && sizeof(long double) != sizeof(double))
+
+#define __FLTCX(x) (__IS_CX(x) && sizeof(x) == sizeof(float complex))
+#define __DBLCX(x) (__IS_CX(x) && sizeof(x) == sizeof(double complex))
+#define __LDBLCX(x) (__IS_CX(x) && sizeof(x) == sizeof(long double complex) && sizeof(long double) != sizeof(double))
+
+/* return type */
+
+#ifdef __GNUC__
+/*
+the result must be casted to the right type
+(otherwise the result type is determined by the conversion
+rules applied to all the function return types so it is long
+double or long double complex except for integral functions)
+
+this cannot be done in c99, so the typeof gcc extension is
+used and that the type of ?: depends on wether an operand is
+a null pointer constant or not
+(in c11 _Generic can be used)
+
+the c arguments below must be integer constant expressions
+so they can be in null pointer constants
+(__IS_FP above was carefully chosen this way)
+*/
+/* if c then t else void */
+#define __type1(c,t) __typeof__(*(0?(t*)0:(void*)!(c)))
+/* if c then t1 else t2 */
+#define __type2(c,t1,t2) __typeof__(*(0?(__type1(c,t1)*)0:(__type1(!(c),t2)*)0))
+/* cast to double when x is integral, otherwise use typeof(x) */
+#define __RETCAST(x) ( \
+	__type2(__IS_FP(x), __typeof__(x), double))
+/* 2 args case, should work for complex types (cpow) */
+#define __RETCAST_2(x, y) ( \
+	__type2(__IS_FP(x) && __IS_FP(y), \
+		__typeof__((x)+(y)), \
+		__typeof__((x)+(y)+1.0)))
+/* 3 args case (fma only) */
+#define __RETCAST_3(x, y, z) ( \
+	__type2(__IS_FP(x) && __IS_FP(y) && __IS_FP(z), \
+		__typeof__((x)+(y)+(z)), \
+		__typeof__((x)+(y)+(z)+1.0)))
+/* drop complex from the type of x */
+/* TODO: wrong when sizeof(long double)==sizeof(double) */
+#define __RETCAST_REAL(x) (  \
+	__type2(__IS_FP(x) && sizeof((x)+I) == sizeof(float complex), float, \
+	__type2(sizeof((x)+1.0+I) == sizeof(double complex), double, \
+		long double)))
+/* add complex to the type of x */
+#define __RETCAST_CX(x) (__typeof__(__RETCAST(x)0+I))
+#else
+#define __RETCAST(x)
+#define __RETCAST_2(x, y)
+#define __RETCAST_3(x, y, z)
+#define __RETCAST_REAL(x)
+#define __RETCAST_CX(x)
+#endif
+
+/* function selection */
+
+#define __tg_real_nocast(fun, x) ( \
+	__FLT(x) ? fun ## f (x) : \
+	__LDBL(x) ? fun ## l (x) : \
+	fun(x) )
+
+#define __tg_real(fun, x) (__RETCAST(x)__tg_real_nocast(fun, x))
+
+#define __tg_real_2_1(fun, x, y) (__RETCAST(x)( \
+	__FLT(x) ? fun ## f (x, y) : \
+	__LDBL(x) ? fun ## l (x, y) : \
+	fun(x, y) ))
+
+#define __tg_real_2(fun, x, y) (__RETCAST_2(x, y)( \
+	__FLT(x) && __FLT(y) ? fun ## f (x, y) : \
+	__LDBL((x)+(y)) ? fun ## l (x, y) : \
+	fun(x, y) ))
+
+#define __tg_complex(fun, x) (__RETCAST_CX(x)( \
+	__FLTCX((x)+I) && __IS_FP(x) ? fun ## f (x) : \
+	__LDBLCX((x)+I) ? fun ## l (x) : \
+	fun(x) ))
+
+#define __tg_complex_retreal(fun, x) (__RETCAST_REAL(x)( \
+	__FLTCX((x)+I) && __IS_FP(x) ? fun ## f (x) : \
+	__LDBLCX((x)+I) ? fun ## l (x) : \
+	fun(x) ))
+
+#define __tg_real_complex(fun, x) (__RETCAST(x)( \
+	__FLTCX(x) ? c ## fun ## f (x) : \
+	__DBLCX(x) ? c ## fun (x) : \
+	__LDBLCX(x) ? c ## fun ## l (x) : \
+	__FLT(x) ? fun ## f (x) : \
+	__LDBL(x) ? fun ## l (x) : \
+	fun(x) ))
+
+/* special cases */
+
+#define __tg_real_remquo(x, y, z) (__RETCAST_2(x, y)( \
+	__FLT(x) && __FLT(y) ? remquof(x, y, z) : \
+	__LDBL((x)+(y)) ? remquol(x, y, z) : \
+	remquo(x, y, z) ))
+
+#define __tg_real_fma(x, y, z) (__RETCAST_3(x, y, z)( \
+	__FLT(x) && __FLT(y) && __FLT(z) ? fmaf(x, y, z) : \
+	__LDBL((x)+(y)+(z)) ? fmal(x, y, z) : \
+	fma(x, y, z) ))
+
+#define __tg_real_complex_pow(x, y) (__RETCAST_2(x, y)( \
+	__FLTCX((x)+(y)) && __IS_FP(x) && __IS_FP(y) ? cpowf(x, y) : \
+	__FLTCX((x)+(y)) ? cpow(x, y) : \
+	__DBLCX((x)+(y)) ? cpow(x, y) : \
+	__LDBLCX((x)+(y)) ? cpowl(x, y) : \
+	__FLT(x) && __FLT(y) ? powf(x, y) : \
+	__LDBL((x)+(y)) ? powl(x, y) : \
+	pow(x, y) ))
+
+#define __tg_real_complex_fabs(x) (__RETCAST_REAL(x)( \
+	__FLTCX(x) ? cabsf(x) : \
+	__DBLCX(x) ? cabs(x) : \
+	__LDBLCX(x) ? cabsl(x) : \
+	__FLT(x) ? fabsf(x) : \
+	__LDBL(x) ? fabsl(x) : \
+	fabs(x) ))
+
+/* suppress any macros in math.h or complex.h */
+
+#undef acos
+#undef acosh
+#undef asin
+#undef asinh
+#undef atan
+#undef atan2
+#undef atanh
+#undef carg
+#undef cbrt
+#undef ceil
+#undef cimag
+#undef conj
+#undef copysign
+#undef cos
+#undef cosh
+#undef cproj
+#undef creal
+#undef erf
+#undef erfc
+#undef exp
+#undef exp2
+#undef expm1
+#undef fabs
+#undef fdim
+#undef floor
+#undef fma
+#undef fmax
+#undef fmin
+#undef fmod
+#undef frexp
+#undef hypot
+#undef ilogb
+#undef ldexp
+#undef lgamma
+#undef llrint
+#undef llround
+#undef log
+#undef log10
+#undef log1p
+#undef log2
+#undef logb
+#undef lrint
+#undef lround
+#undef nearbyint
+#undef nextafter
+#undef nexttoward
+#undef pow
+#undef remainder
+#undef remquo
+#undef rint
+#undef round
+#undef scalbln
+#undef scalbn
+#undef sin
+#undef sinh
+#undef sqrt
+#undef tan
+#undef tanh
+#undef tgamma
+#undef trunc
+
+/* tg functions */
+
+#define acos(x)         __tg_real_complex(acos, (x))
+#define acosh(x)        __tg_real_complex(acosh, (x))
+#define asin(x)         __tg_real_complex(asin, (x))
+#define asinh(x)        __tg_real_complex(asinh, (x))
+#define atan(x)         __tg_real_complex(atan, (x))
+#define atan2(x,y)      __tg_real_2(atan2, (x), (y))
+#define atanh(x)        __tg_real_complex(atanh, (x))
+#define carg(x)         __tg_complex_retreal(carg, (x))
+#define cbrt(x)         __tg_real(cbrt, (x))
+#define ceil(x)         __tg_real(ceil, (x))
+#define cimag(x)        __tg_complex_retreal(cimag, (x))
+#define conj(x)         __tg_complex(conj, (x))
+#define copysign(x,y)   __tg_real_2(copysign, (x), (y))
+#define cos(x)          __tg_real_complex(cos, (x))
+#define cosh(x)         __tg_real_complex(cosh, (x))
+#define cproj(x)        __tg_complex(cproj, (x))
+#define creal(x)        __tg_complex_retreal(creal, (x))
+#define erf(x)          __tg_real(erf, (x))
+#define erfc(x)         __tg_real(erfc, (x))
+#define exp(x)          __tg_real_complex(exp, (x))
+#define exp2(x)         __tg_real(exp2, (x))
+#define expm1(x)        __tg_real(expm1, (x))
+#define fabs(x)         __tg_real_complex_fabs(x)
+#define fdim(x,y)       __tg_real_2(fdim, (x), (y))
+#define floor(x)        __tg_real(floor, (x))
+#define fma(x,y,z)      __tg_real_fma((x), (y), (z))
+#define fmax(x,y)       __tg_real_2(fmax, (x), (y))
+#define fmin(x,y)       __tg_real_2(fmin, (x), (y))
+#define fmod(x,y)       __tg_real_2(fmod, (x), (y))
+#define frexp(x,y)      __tg_real_2_1(frexp, (x), (y))
+#define hypot(x,y)      __tg_real_2(hypot, (x), (y))
+#define ilogb(x)        __tg_real_nocast(ilogb, (x))
+#define ldexp(x,y)      __tg_real_2_1(ldexp, (x), (y))
+#define lgamma(x)       __tg_real(lgamma, (x))
+#define llrint(x)       __tg_real_nocast(llrint, (x))
+#define llround(x)      __tg_real_nocast(llround, (x))
+#define log(x)          __tg_real_complex(log, (x))
+#define log10(x)        __tg_real(log10, (x))
+#define log1p(x)        __tg_real(log1p, (x))
+#define log2(x)         __tg_real(log2, (x))
+#define logb(x)         __tg_real(logb, (x))
+#define lrint(x)        __tg_real_nocast(lrint, (x))
+#define lround(x)       __tg_real_nocast(lround, (x))
+#define nearbyint(x)    __tg_real(nearbyint, (x))
+#define nextafter(x,y)  __tg_real_2(nextafter, (x), (y))
+#define nexttoward(x,y) __tg_real_2(nexttoward, (x), (y))
+#define pow(x,y)        __tg_real_complex_pow((x), (y))
+#define remainder(x,y)  __tg_real_2(remainder, (x), (y))
+#define remquo(x,y,z)   __tg_real_remquo((x), (y), (z))
+#define rint(x)         __tg_real(rint, (x))
+#define round(x)        __tg_real(round, (x))
+#define scalbln(x,y)    __tg_real_2_1(scalbln, (x), (y))
+#define scalbn(x,y)     __tg_real_2_1(scalbn, (x), (y))
+#define sin(x)          __tg_real_complex(sin, (x))
+#define sinh(x)         __tg_real_complex(sinh, (x))
+#define sqrt(x)         __tg_real_complex(sqrt, (x))
+#define tan(x)          __tg_real_complex(tan, (x))
+#define tanh(x)         __tg_real_complex(tanh, (x))
+#define tgamma(x)       __tg_real(tgamma, (x))
+#define trunc(x)        __tg_real(trunc, (x))
+
+#endif
diff --git a/x86_64-linux-musl/include/threads.h b/x86_64-linux-musl/include/threads.h
new file mode 100644
index 0000000..52ec310
--- /dev/null
+++ b/x86_64-linux-musl/include/threads.h
@@ -0,0 +1,93 @@
+#ifndef _THREADS_H
+#define _THREADS_H
+
+#include <features.h>
+#include <time.h>
+
+#ifdef __cplusplus
+extern "C" {
+typedef unsigned long thrd_t;
+#else
+typedef struct __pthread *thrd_t;
+#define thread_local _Thread_local
+#endif
+
+typedef int once_flag;
+typedef unsigned tss_t;
+typedef int (*thrd_start_t)(void *);
+typedef void (*tss_dtor_t)(void *);
+
+#define __NEED_cnd_t
+#define __NEED_mtx_t
+
+#include <bits/alltypes.h>
+
+#define TSS_DTOR_ITERATIONS 4
+
+enum {
+	thrd_success  = 0,
+	thrd_busy     = 1,
+	thrd_error    = 2,
+	thrd_nomem    = 3,
+	thrd_timedout = 4,
+};
+
+enum {
+	mtx_plain     = 0,
+	mtx_recursive = 1,
+	mtx_timed     = 2,
+};
+
+#define ONCE_FLAG_INIT 0
+
+int thrd_create(thrd_t *, thrd_start_t, void *);
+_Noreturn void thrd_exit(int);
+
+int thrd_detach(thrd_t);
+int thrd_join(thrd_t, int *);
+
+int thrd_sleep(const struct timespec *, struct timespec *);
+void thrd_yield(void);
+
+thrd_t thrd_current(void);
+int thrd_equal(thrd_t, thrd_t);
+#ifndef __cplusplus
+#define thrd_equal(A, B) ((A) == (B))
+#endif
+
+void call_once(once_flag *, void (*)(void));
+
+int mtx_init(mtx_t *, int);
+void mtx_destroy(mtx_t *);
+
+int mtx_lock(mtx_t *);
+int mtx_timedlock(mtx_t *__restrict, const struct timespec *__restrict);
+int mtx_trylock(mtx_t *);
+int mtx_unlock(mtx_t *);
+
+int cnd_init(cnd_t *);
+void cnd_destroy(cnd_t *);
+
+int cnd_broadcast(cnd_t *);
+int cnd_signal(cnd_t *);
+
+int cnd_timedwait(cnd_t *__restrict, mtx_t *__restrict, const struct timespec *__restrict);
+int cnd_wait(cnd_t *, mtx_t *);
+
+int tss_create(tss_t *, tss_dtor_t);
+void tss_delete(tss_t);
+
+int tss_set(tss_t, void *);
+void *tss_get(tss_t);
+
+#if _REDIR_TIME64
+__REDIR(thrd_sleep, __thrd_sleep_time64);
+__REDIR(mtx_timedlock, __mtx_timedlock_time64);
+__REDIR(cnd_timedwait, __cnd_timedwait_time64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/time.h b/x86_64-linux-musl/include/time.h
new file mode 100644
index 0000000..3d94837
--- /dev/null
+++ b/x86_64-linux-musl/include/time.h
@@ -0,0 +1,168 @@
+#ifndef	_TIME_H
+#define _TIME_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#if __cplusplus >= 201103L
+#define NULL nullptr
+#elif defined(__cplusplus)
+#define NULL 0L
+#else
+#define NULL ((void*)0)
+#endif
+
+
+#define __NEED_size_t
+#define __NEED_time_t
+#define __NEED_clock_t
+#define __NEED_struct_timespec
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+#define __NEED_clockid_t
+#define __NEED_timer_t
+#define __NEED_pid_t
+#define __NEED_locale_t
+#endif
+
+#include <bits/alltypes.h>
+
+#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
+#define __tm_gmtoff tm_gmtoff
+#define __tm_zone tm_zone
+#endif
+
+struct tm {
+	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;
+	long __tm_gmtoff;
+	const char *__tm_zone;
+};
+
+clock_t clock (void);
+time_t time (time_t *);
+double difftime (time_t, time_t);
+time_t mktime (struct tm *);
+size_t strftime (char *__restrict, size_t, const char *__restrict, const struct tm *__restrict);
+struct tm *gmtime (const time_t *);
+struct tm *localtime (const time_t *);
+char *asctime (const struct tm *);
+char *ctime (const time_t *);
+int timespec_get(struct timespec *, int);
+
+#define CLOCKS_PER_SEC 1000000L
+
+#define TIME_UTC 1
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+
+size_t strftime_l (char *  __restrict, size_t, const char *  __restrict, const struct tm *  __restrict, locale_t);
+
+struct tm *gmtime_r (const time_t *__restrict, struct tm *__restrict);
+struct tm *localtime_r (const time_t *__restrict, struct tm *__restrict);
+char *asctime_r (const struct tm *__restrict, char *__restrict);
+char *ctime_r (const time_t *, char *);
+
+void tzset (void);
+
+struct itimerspec {
+	struct timespec it_interval;
+	struct timespec it_value;
+};
+
+#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 TIMER_ABSTIME 1
+
+int nanosleep (const struct timespec *, struct timespec *);
+int clock_getres (clockid_t, struct timespec *);
+int clock_gettime (clockid_t, struct timespec *);
+int clock_settime (clockid_t, const struct timespec *);
+int clock_nanosleep (clockid_t, int, const struct timespec *, struct timespec *);
+int clock_getcpuclockid (pid_t, clockid_t *);
+
+struct sigevent;
+int timer_create (clockid_t, struct sigevent *__restrict, timer_t *__restrict);
+int timer_delete (timer_t);
+int timer_settime (timer_t, int, const struct itimerspec *__restrict, struct itimerspec *__restrict);
+int timer_gettime (timer_t, struct itimerspec *);
+int timer_getoverrun (timer_t);
+
+extern char *tzname[2];
+
+#endif
+
+
+#if defined(_XOPEN_SOURCE) || defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
+char *strptime (const char *__restrict, const char *__restrict, struct tm *__restrict);
+extern int daylight;
+extern long timezone;
+extern int getdate_err;
+struct tm *getdate (const char *);
+#endif
+
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+int stime(const time_t *);
+time_t timegm(struct tm *);
+#endif
+
+#if _REDIR_TIME64
+__REDIR(time, __time64);
+__REDIR(difftime, __difftime64);
+__REDIR(mktime, __mktime64);
+__REDIR(gmtime, __gmtime64);
+__REDIR(localtime, __localtime64);
+__REDIR(ctime, __ctime64);
+__REDIR(timespec_get, __timespec_get_time64);
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+__REDIR(gmtime_r, __gmtime64_r);
+__REDIR(localtime_r, __localtime64_r);
+__REDIR(ctime_r, __ctime64_r);
+__REDIR(nanosleep, __nanosleep_time64);
+__REDIR(clock_getres, __clock_getres_time64);
+__REDIR(clock_gettime, __clock_gettime64);
+__REDIR(clock_settime, __clock_settime64);
+__REDIR(clock_nanosleep, __clock_nanosleep_time64);
+__REDIR(timer_settime, __timer_settime64);
+__REDIR(timer_gettime, __timer_gettime64);
+#endif
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+__REDIR(stime, __stime64);
+__REDIR(timegm, __timegm_time64);
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif
diff --git a/x86_64-linux-musl/include/uchar.h b/x86_64-linux-musl/include/uchar.h
new file mode 100644
index 0000000..7e5c4d4
--- /dev/null
+++ b/x86_64-linux-musl/include/uchar.h
@@ -0,0 +1,29 @@
+#ifndef _UCHAR_H
+#define _UCHAR_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if __cplusplus < 201103L
+typedef unsigned short char16_t;
+typedef unsigned char32_t;
+#endif
+
+#define __NEED_mbstate_t
+#define __NEED_size_t
+
+#include <features.h>
+#include <bits/alltypes.h>
+
+size_t c16rtomb(char *__restrict, char16_t, mbstate_t *__restrict);
+size_t mbrtoc16(char16_t *__restrict, const char *__restrict, size_t, mbstate_t *__restrict);
+
+size_t c32rtomb(char *__restrict, char32_t, mbstate_t *__restrict);
+size_t mbrtoc32(char32_t *__restrict, const char *__restrict, size_t, mbstate_t *__restrict);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/ucontext.h b/x86_64-linux-musl/include/ucontext.h
new file mode 100644
index 0000000..0f75712
--- /dev/null
+++ b/x86_64-linux-musl/include/ucontext.h
@@ -0,0 +1,25 @@
+#ifndef _UCONTEXT_H
+#define _UCONTEXT_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#include <signal.h>
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define NGREG (sizeof(gregset_t)/sizeof(greg_t))
+#endif
+
+struct __ucontext;
+
+int  getcontext(struct __ucontext *);
+void makecontext(struct __ucontext *, void (*)(), int, ...);
+int  setcontext(const struct __ucontext *);
+int  swapcontext(struct __ucontext *, const struct __ucontext *);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/x86_64-linux-musl/include/ulimit.h b/x86_64-linux-musl/include/ulimit.h
new file mode 100644
index 0000000..efdcd31
--- /dev/null
+++ b/x86_64-linux-musl/include/ulimit.h
@@ -0,0 +1,17 @@
+#ifndef _ULIMIT_H
+#define _ULIMIT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define UL_GETFSIZE 1
+#define UL_SETFSIZE 2
+
+long ulimit (int, ...);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/unistd.h b/x86_64-linux-musl/include/unistd.h
new file mode 100644
index 0000000..212263a
--- /dev/null
+++ b/x86_64-linux-musl/include/unistd.h
@@ -0,0 +1,475 @@
+#ifndef	_UNISTD_H
+#define	_UNISTD_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define STDIN_FILENO  0
+#define STDOUT_FILENO 1
+#define STDERR_FILENO 2
+
+#define SEEK_SET 0
+#define SEEK_CUR 1
+#define SEEK_END 2
+#define SEEK_DATA 3
+#define SEEK_HOLE 4
+
+#if __cplusplus >= 201103L
+#define NULL nullptr
+#elif defined(__cplusplus)
+#define NULL 0L
+#else
+#define NULL ((void*)0)
+#endif
+
+#define __NEED_size_t
+#define __NEED_ssize_t
+#define __NEED_uid_t
+#define __NEED_gid_t
+#define __NEED_off_t
+#define __NEED_pid_t
+#define __NEED_intptr_t
+#define __NEED_useconds_t
+
+#include <bits/alltypes.h>
+
+int pipe(int [2]);
+int pipe2(int [2], int);
+int close(int);
+int posix_close(int, int);
+int dup(int);
+int dup2(int, int);
+int dup3(int, int, int);
+off_t lseek(int, off_t, int);
+int fsync(int);
+int fdatasync(int);
+
+ssize_t read(int, void *, size_t);
+ssize_t write(int, const void *, size_t);
+ssize_t pread(int, void *, size_t, off_t);
+ssize_t pwrite(int, const void *, size_t, off_t);
+
+int chown(const char *, uid_t, gid_t);
+int fchown(int, uid_t, gid_t);
+int lchown(const char *, uid_t, gid_t);
+int fchownat(int, const char *, uid_t, gid_t, int);
+
+int link(const char *, const char *);
+int linkat(int, const char *, int, const char *, int);
+int symlink(const char *, const char *);
+int symlinkat(const char *, int, const char *);
+ssize_t readlink(const char *__restrict, char *__restrict, size_t);
+ssize_t readlinkat(int, const char *__restrict, char *__restrict, size_t);
+int unlink(const char *);
+int unlinkat(int, const char *, int);
+int rmdir(const char *);
+int truncate(const char *, off_t);
+int ftruncate(int, off_t);
+
+#define F_OK 0
+#define R_OK 4
+#define W_OK 2
+#define X_OK 1
+
+int access(const char *, int);
+int faccessat(int, const char *, int, int);
+
+int chdir(const char *);
+int fchdir(int);
+char *getcwd(char *, size_t);
+
+unsigned alarm(unsigned);
+unsigned sleep(unsigned);
+int pause(void);
+
+pid_t fork(void);
+pid_t _Fork(void);
+int execve(const char *, char *const [], char *const []);
+int execv(const char *, char *const []);
+int execle(const char *, const char *, ...);
+int execl(const char *, const char *, ...);
+int execvp(const char *, char *const []);
+int execlp(const char *, const char *, ...);
+int fexecve(int, char *const [], char *const []);
+_Noreturn void _exit(int);
+
+pid_t getpid(void);
+pid_t getppid(void);
+pid_t getpgrp(void);
+pid_t getpgid(pid_t);
+int setpgid(pid_t, pid_t);
+pid_t setsid(void);
+pid_t getsid(pid_t);
+char *ttyname(int);
+int ttyname_r(int, char *, size_t);
+int isatty(int);
+pid_t tcgetpgrp(int);
+int tcsetpgrp(int, pid_t);
+
+uid_t getuid(void);
+uid_t geteuid(void);
+gid_t getgid(void);
+gid_t getegid(void);
+int getgroups(int, gid_t []);
+int setuid(uid_t);
+int seteuid(uid_t);
+int setgid(gid_t);
+int setegid(gid_t);
+
+char *getlogin(void);
+int getlogin_r(char *, size_t);
+int gethostname(char *, size_t);
+char *ctermid(char *);
+
+int getopt(int, char * const [], const char *);
+extern char *optarg;
+extern int optind, opterr, optopt;
+
+long pathconf(const char *, int);
+long fpathconf(int, int);
+long sysconf(int);
+size_t confstr(int, char *, size_t);
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define F_ULOCK 0
+#define F_LOCK  1
+#define F_TLOCK 2
+#define F_TEST  3
+int setreuid(uid_t, uid_t);
+int setregid(gid_t, gid_t);
+int lockf(int, int, off_t);
+long gethostid(void);
+int nice(int);
+void sync(void);
+pid_t setpgrp(void);
+char *crypt(const char *, const char *);
+void encrypt(char *, int);
+void swab(const void *__restrict, void *__restrict, ssize_t);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) \
+ || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700)
+int usleep(unsigned);
+unsigned ualarm(unsigned, unsigned);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define L_SET 0
+#define L_INCR 1
+#define L_XTND 2
+int brk(void *);
+void *sbrk(intptr_t);
+pid_t vfork(void);
+int vhangup(void);
+int chroot(const char *);
+int getpagesize(void);
+int getdtablesize(void);
+int sethostname(const char *, size_t);
+int getdomainname(char *, size_t);
+int setdomainname(const char *, size_t);
+int setgroups(size_t, const gid_t *);
+char *getpass(const char *);
+int daemon(int, int);
+void setusershell(void);
+void endusershell(void);
+char *getusershell(void);
+int acct(const char *);
+long syscall(long, ...);
+int execvpe(const char *, char *const [], char *const []);
+int issetugid(void);
+int getentropy(void *, size_t);
+extern int optreset;
+#endif
+
+#ifdef _GNU_SOURCE
+extern char **environ;
+int setresuid(uid_t, uid_t, uid_t);
+int setresgid(gid_t, gid_t, gid_t);
+int getresuid(uid_t *, uid_t *, uid_t *);
+int getresgid(gid_t *, gid_t *, gid_t *);
+char *get_current_dir_name(void);
+int syncfs(int);
+int euidaccess(const char *, int);
+int eaccess(const char *, int);
+ssize_t copy_file_range(int, off_t *, int, off_t *, size_t, unsigned);
+pid_t gettid(void);
+#endif
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define lseek64 lseek
+#define pread64 pread
+#define pwrite64 pwrite
+#define truncate64 truncate
+#define ftruncate64 ftruncate
+#define lockf64 lockf
+#define off64_t off_t
+#endif
+
+#define POSIX_CLOSE_RESTART     0
+
+#define _XOPEN_VERSION          700
+#define _XOPEN_UNIX             1
+#define _XOPEN_ENH_I18N         1
+
+#define _POSIX_VERSION          200809L
+#define _POSIX2_VERSION         _POSIX_VERSION
+
+#define _POSIX_ADVISORY_INFO    _POSIX_VERSION
+#define _POSIX_CHOWN_RESTRICTED 1
+#define _POSIX_IPV6             _POSIX_VERSION
+#define _POSIX_JOB_CONTROL      1
+#define _POSIX_MAPPED_FILES     _POSIX_VERSION
+#define _POSIX_MEMLOCK          _POSIX_VERSION
+#define _POSIX_MEMLOCK_RANGE    _POSIX_VERSION
+#define _POSIX_MEMORY_PROTECTION _POSIX_VERSION
+#define _POSIX_MESSAGE_PASSING  _POSIX_VERSION
+#define _POSIX_FSYNC            _POSIX_VERSION
+#define _POSIX_NO_TRUNC         1
+#define _POSIX_RAW_SOCKETS      _POSIX_VERSION
+#define _POSIX_REALTIME_SIGNALS _POSIX_VERSION
+#define _POSIX_REGEXP           1
+#define _POSIX_SAVED_IDS        1
+#define _POSIX_SHELL            1
+#define _POSIX_SPAWN            _POSIX_VERSION
+#define _POSIX_VDISABLE         0
+
+#define _POSIX_THREADS          _POSIX_VERSION
+#define _POSIX_THREAD_PROCESS_SHARED _POSIX_VERSION
+#define _POSIX_THREAD_SAFE_FUNCTIONS _POSIX_VERSION
+#define _POSIX_THREAD_ATTR_STACKADDR _POSIX_VERSION
+#define _POSIX_THREAD_ATTR_STACKSIZE _POSIX_VERSION
+#define _POSIX_THREAD_PRIORITY_SCHEDULING _POSIX_VERSION
+#define _POSIX_THREAD_CPUTIME   _POSIX_VERSION
+#define _POSIX_TIMERS           _POSIX_VERSION
+#define _POSIX_TIMEOUTS         _POSIX_VERSION
+#define _POSIX_MONOTONIC_CLOCK  _POSIX_VERSION
+#define _POSIX_CPUTIME          _POSIX_VERSION
+#define _POSIX_CLOCK_SELECTION  _POSIX_VERSION
+#define _POSIX_BARRIERS         _POSIX_VERSION
+#define _POSIX_SPIN_LOCKS       _POSIX_VERSION
+#define _POSIX_READER_WRITER_LOCKS _POSIX_VERSION
+#define _POSIX_ASYNCHRONOUS_IO  _POSIX_VERSION
+#define _POSIX_SEMAPHORES       _POSIX_VERSION
+#define _POSIX_SHARED_MEMORY_OBJECTS _POSIX_VERSION
+
+#define _POSIX2_C_BIND          _POSIX_VERSION
+
+#include <bits/posix.h>
+
+
+
+#define _PC_LINK_MAX	0
+#define _PC_MAX_CANON	1
+#define _PC_MAX_INPUT	2
+#define _PC_NAME_MAX	3
+#define _PC_PATH_MAX	4
+#define _PC_PIPE_BUF	5
+#define _PC_CHOWN_RESTRICTED	6
+#define _PC_NO_TRUNC	7
+#define _PC_VDISABLE	8
+#define _PC_SYNC_IO	9
+#define _PC_ASYNC_IO	10
+#define _PC_PRIO_IO	11
+#define _PC_SOCK_MAXBUF	12
+#define _PC_FILESIZEBITS	13
+#define _PC_REC_INCR_XFER_SIZE	14
+#define _PC_REC_MAX_XFER_SIZE	15
+#define _PC_REC_MIN_XFER_SIZE	16
+#define _PC_REC_XFER_ALIGN	17
+#define _PC_ALLOC_SIZE_MIN	18
+#define _PC_SYMLINK_MAX	19
+#define _PC_2_SYMLINKS	20
+
+#define _SC_ARG_MAX	0
+#define _SC_CHILD_MAX	1
+#define _SC_CLK_TCK	2
+#define _SC_NGROUPS_MAX	3
+#define _SC_OPEN_MAX	4
+#define _SC_STREAM_MAX	5
+#define _SC_TZNAME_MAX	6
+#define _SC_JOB_CONTROL	7
+#define _SC_SAVED_IDS	8
+#define _SC_REALTIME_SIGNALS	9
+#define _SC_PRIORITY_SCHEDULING	10
+#define _SC_TIMERS	11
+#define _SC_ASYNCHRONOUS_IO	12
+#define _SC_PRIORITIZED_IO	13
+#define _SC_SYNCHRONIZED_IO	14
+#define _SC_FSYNC	15
+#define _SC_MAPPED_FILES	16
+#define _SC_MEMLOCK	17
+#define _SC_MEMLOCK_RANGE	18
+#define _SC_MEMORY_PROTECTION	19
+#define _SC_MESSAGE_PASSING	20
+#define _SC_SEMAPHORES	21
+#define _SC_SHARED_MEMORY_OBJECTS	22
+#define _SC_AIO_LISTIO_MAX	23
+#define _SC_AIO_MAX	24
+#define _SC_AIO_PRIO_DELTA_MAX	25
+#define _SC_DELAYTIMER_MAX	26
+#define _SC_MQ_OPEN_MAX	27
+#define _SC_MQ_PRIO_MAX	28
+#define _SC_VERSION	29
+#define _SC_PAGE_SIZE	30
+#define _SC_PAGESIZE	30 /* !! */
+#define _SC_RTSIG_MAX	31
+#define _SC_SEM_NSEMS_MAX	32
+#define _SC_SEM_VALUE_MAX	33
+#define _SC_SIGQUEUE_MAX	34
+#define _SC_TIMER_MAX	35
+#define _SC_BC_BASE_MAX	36
+#define _SC_BC_DIM_MAX	37
+#define _SC_BC_SCALE_MAX	38
+#define _SC_BC_STRING_MAX	39
+#define _SC_COLL_WEIGHTS_MAX	40
+#define _SC_EXPR_NEST_MAX	42
+#define _SC_LINE_MAX	43
+#define _SC_RE_DUP_MAX	44
+#define _SC_2_VERSION	46
+#define _SC_2_C_BIND	47
+#define _SC_2_C_DEV	48
+#define _SC_2_FORT_DEV	49
+#define _SC_2_FORT_RUN	50
+#define _SC_2_SW_DEV	51
+#define _SC_2_LOCALEDEF	52
+#define _SC_UIO_MAXIOV	60 /* !! */
+#define _SC_IOV_MAX	60
+#define _SC_THREADS	67
+#define _SC_THREAD_SAFE_FUNCTIONS	68
+#define _SC_GETGR_R_SIZE_MAX	69
+#define _SC_GETPW_R_SIZE_MAX	70
+#define _SC_LOGIN_NAME_MAX	71
+#define _SC_TTY_NAME_MAX	72
+#define _SC_THREAD_DESTRUCTOR_ITERATIONS	73
+#define _SC_THREAD_KEYS_MAX	74
+#define _SC_THREAD_STACK_MIN	75
+#define _SC_THREAD_THREADS_MAX	76
+#define _SC_THREAD_ATTR_STACKADDR	77
+#define _SC_THREAD_ATTR_STACKSIZE	78
+#define _SC_THREAD_PRIORITY_SCHEDULING	79
+#define _SC_THREAD_PRIO_INHERIT	80
+#define _SC_THREAD_PRIO_PROTECT	81
+#define _SC_THREAD_PROCESS_SHARED	82
+#define _SC_NPROCESSORS_CONF	83
+#define _SC_NPROCESSORS_ONLN	84
+#define _SC_PHYS_PAGES	85
+#define _SC_AVPHYS_PAGES	86
+#define _SC_ATEXIT_MAX	87
+#define _SC_PASS_MAX	88
+#define _SC_XOPEN_VERSION	89
+#define _SC_XOPEN_XCU_VERSION	90
+#define _SC_XOPEN_UNIX	91
+#define _SC_XOPEN_CRYPT	92
+#define _SC_XOPEN_ENH_I18N	93
+#define _SC_XOPEN_SHM	94
+#define _SC_2_CHAR_TERM	95
+#define _SC_2_UPE	97
+#define _SC_XOPEN_XPG2	98
+#define _SC_XOPEN_XPG3	99
+#define _SC_XOPEN_XPG4	100
+#define _SC_NZERO	109
+#define _SC_XBS5_ILP32_OFF32	125
+#define _SC_XBS5_ILP32_OFFBIG	126
+#define _SC_XBS5_LP64_OFF64	127
+#define _SC_XBS5_LPBIG_OFFBIG	128
+#define _SC_XOPEN_LEGACY	129
+#define _SC_XOPEN_REALTIME	130
+#define _SC_XOPEN_REALTIME_THREADS	131
+#define _SC_ADVISORY_INFO	132
+#define _SC_BARRIERS	133
+#define _SC_CLOCK_SELECTION	137
+#define _SC_CPUTIME	138
+#define _SC_THREAD_CPUTIME	139
+#define _SC_MONOTONIC_CLOCK	149
+#define _SC_READER_WRITER_LOCKS	153
+#define _SC_SPIN_LOCKS	154
+#define _SC_REGEXP	155
+#define _SC_SHELL	157
+#define _SC_SPAWN	159
+#define _SC_SPORADIC_SERVER	160
+#define _SC_THREAD_SPORADIC_SERVER	161
+#define _SC_TIMEOUTS	164
+#define _SC_TYPED_MEMORY_OBJECTS	165
+#define _SC_2_PBS	168
+#define _SC_2_PBS_ACCOUNTING	169
+#define _SC_2_PBS_LOCATE	170
+#define _SC_2_PBS_MESSAGE	171
+#define _SC_2_PBS_TRACK	172
+#define _SC_SYMLOOP_MAX	173
+#define _SC_STREAMS	174
+#define _SC_2_PBS_CHECKPOINT	175
+#define _SC_V6_ILP32_OFF32	176
+#define _SC_V6_ILP32_OFFBIG	177
+#define _SC_V6_LP64_OFF64	178
+#define _SC_V6_LPBIG_OFFBIG	179
+#define _SC_HOST_NAME_MAX	180
+#define _SC_TRACE	181
+#define _SC_TRACE_EVENT_FILTER	182
+#define _SC_TRACE_INHERIT	183
+#define _SC_TRACE_LOG	184
+
+#define _SC_IPV6	235
+#define _SC_RAW_SOCKETS	236
+#define _SC_V7_ILP32_OFF32	237
+#define _SC_V7_ILP32_OFFBIG	238
+#define _SC_V7_LP64_OFF64	239
+#define _SC_V7_LPBIG_OFFBIG	240
+#define _SC_SS_REPL_MAX	241
+#define _SC_TRACE_EVENT_NAME_MAX	242
+#define _SC_TRACE_NAME_MAX	243
+#define _SC_TRACE_SYS_MAX	244
+#define _SC_TRACE_USER_EVENT_MAX	245
+#define _SC_XOPEN_STREAMS	246
+#define _SC_THREAD_ROBUST_PRIO_INHERIT	247
+#define _SC_THREAD_ROBUST_PRIO_PROTECT	248
+
+#define _CS_PATH	0
+#define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS	1
+#define _CS_GNU_LIBC_VERSION	2
+#define _CS_GNU_LIBPTHREAD_VERSION	3
+#define _CS_POSIX_V5_WIDTH_RESTRICTED_ENVS	4
+#define _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS	5
+
+#define _CS_POSIX_V6_ILP32_OFF32_CFLAGS	1116
+#define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS	1117
+#define _CS_POSIX_V6_ILP32_OFF32_LIBS	1118
+#define _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS	1119
+#define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS	1120
+#define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS	1121
+#define _CS_POSIX_V6_ILP32_OFFBIG_LIBS	1122
+#define _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS	1123
+#define _CS_POSIX_V6_LP64_OFF64_CFLAGS	1124
+#define _CS_POSIX_V6_LP64_OFF64_LDFLAGS	1125
+#define _CS_POSIX_V6_LP64_OFF64_LIBS	1126
+#define _CS_POSIX_V6_LP64_OFF64_LINTFLAGS	1127
+#define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS	1128
+#define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS	1129
+#define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS	1130
+#define _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS	1131
+#define _CS_POSIX_V7_ILP32_OFF32_CFLAGS	1132
+#define _CS_POSIX_V7_ILP32_OFF32_LDFLAGS	1133
+#define _CS_POSIX_V7_ILP32_OFF32_LIBS	1134
+#define _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS	1135
+#define _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS	1136
+#define _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS	1137
+#define _CS_POSIX_V7_ILP32_OFFBIG_LIBS	1138
+#define _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS	1139
+#define _CS_POSIX_V7_LP64_OFF64_CFLAGS	1140
+#define _CS_POSIX_V7_LP64_OFF64_LDFLAGS	1141
+#define _CS_POSIX_V7_LP64_OFF64_LIBS	1142
+#define _CS_POSIX_V7_LP64_OFF64_LINTFLAGS	1143
+#define _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS	1144
+#define _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS	1145
+#define _CS_POSIX_V7_LPBIG_OFFBIG_LIBS	1146
+#define _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS	1147
+#define _CS_V6_ENV	1148
+#define _CS_V7_ENV	1149
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/utime.h b/x86_64-linux-musl/include/utime.h
new file mode 100644
index 0000000..5755bd5
--- /dev/null
+++ b/x86_64-linux-musl/include/utime.h
@@ -0,0 +1,29 @@
+#ifndef	_UTIME_H
+#define	_UTIME_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_time_t
+
+#include <bits/alltypes.h>
+
+struct utimbuf {
+	time_t actime;
+	time_t modtime;
+};
+
+int utime (const char *, const struct utimbuf *);
+
+#if _REDIR_TIME64
+__REDIR(utime, __utime64);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/utmp.h b/x86_64-linux-musl/include/utmp.h
new file mode 100644
index 0000000..48a400d
--- /dev/null
+++ b/x86_64-linux-musl/include/utmp.h
@@ -0,0 +1,52 @@
+#ifndef _UTMP_H
+#define _UTMP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <utmpx.h>
+
+#define ACCOUNTING 9
+#define UT_NAMESIZE 32
+#define UT_HOSTSIZE 256
+#define UT_LINESIZE 32
+
+struct lastlog {
+	time_t ll_time;
+	char ll_line[UT_LINESIZE];
+	char ll_host[UT_HOSTSIZE];
+};
+
+#define ut_time ut_tv.tv_sec
+#define ut_name ut_user
+#define ut_addr ut_addr_v6[0]
+#define utmp utmpx
+#define e_exit __e_exit
+#define e_termination __e_termination
+
+void         endutent(void);
+struct utmp *getutent(void);
+struct utmp *getutid(const struct utmp *);
+struct utmp *getutline(const struct utmp *);
+struct utmp *pututline(const struct utmp *);
+void         setutent(void);
+
+void updwtmp(const char *, const struct utmp *);
+int utmpname(const char *);
+
+int login_tty(int);
+
+#define _PATH_UTMP "/dev/null/utmp"
+#define _PATH_WTMP "/dev/null/wtmp"
+
+#define UTMP_FILE _PATH_UTMP
+#define WTMP_FILE _PATH_WTMP
+#define UTMP_FILENAME _PATH_UTMP
+#define WTMP_FILENAME _PATH_WTMP
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/utmpx.h b/x86_64-linux-musl/include/utmpx.h
new file mode 100644
index 0000000..b293f42
--- /dev/null
+++ b/x86_64-linux-musl/include/utmpx.h
@@ -0,0 +1,67 @@
+#ifndef _UTMPX_H
+#define _UTMPX_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_pid_t
+#define __NEED_time_t
+#define __NEED_suseconds_t
+#define __NEED_struct_timeval
+
+#include <bits/alltypes.h>
+
+struct utmpx {
+	short ut_type;
+	short __ut_pad1;
+	pid_t ut_pid;
+	char ut_line[32];
+	char ut_id[4];
+	char ut_user[32];
+	char ut_host[256];
+	struct {
+		short __e_termination;
+		short __e_exit;
+	} ut_exit;
+#if __BYTE_ORDER == 1234
+	int ut_session, __ut_pad2;
+#else
+	int __ut_pad2, ut_session;
+#endif
+	struct timeval ut_tv;
+	unsigned ut_addr_v6[4];
+	char __unused[20];
+};
+
+void          endutxent(void);
+struct utmpx *getutxent(void);
+struct utmpx *getutxid(const struct utmpx *);
+struct utmpx *getutxline(const struct utmpx *);
+struct utmpx *pututxline(const struct utmpx *);
+void          setutxent(void);
+
+#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
+#define e_exit __e_exit
+#define e_termination __e_termination
+void updwtmpx(const char *, const struct utmpx *);
+int utmpxname(const char *);
+#endif
+
+#define EMPTY           0
+#define RUN_LVL         1
+#define BOOT_TIME       2
+#define NEW_TIME        3
+#define OLD_TIME        4
+#define INIT_PROCESS    5
+#define LOGIN_PROCESS   6
+#define USER_PROCESS    7
+#define DEAD_PROCESS    8
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/values.h b/x86_64-linux-musl/include/values.h
new file mode 100644
index 0000000..fe4949f
--- /dev/null
+++ b/x86_64-linux-musl/include/values.h
@@ -0,0 +1,39 @@
+#ifndef _VALUES_H
+#define _VALUES_H
+
+#include <limits.h>
+
+#define CHARBITS   (sizeof(char)   * 8)
+#define SHORTBITS  (sizeof(short)  * 8)
+#define INTBITS    (sizeof(int)    * 8)
+#define LONGBITS   (sizeof(long)   * 8)
+#define PTRBITS    (sizeof(char *) * 8)
+#define DOUBLEBITS (sizeof(double) * 8)
+#define FLOATBITS  (sizeof(float)  * 8)
+
+#define MINSHORT SHRT_MIN
+#define MININT   INT_MIN
+#define MINLONG  LONG_MIN
+
+#define MAXSHORT SHRT_MAX
+#define MAXINT   INT_MAX
+#define MAXLONG  LONG_MAX
+
+#define HIBITS   MINSHORT
+#define HIBITL   MINLONG
+
+#include <float.h>
+
+#define MAXDOUBLE DBL_MAX
+#undef  MAXFLOAT
+#define MAXFLOAT  FLT_MAX
+#define MINDOUBLE DBL_MIN
+#define MINFLOAT  FLT_MIN
+#define DMINEXP   DBL_MIN_EXP
+#define FMINEXP   FLT_MIN_EXP
+#define DMAXEXP   DBL_MAX_EXP
+#define FMAXEXP   FLT_MAX_EXP
+
+#define BITSPERBYTE CHAR_BIT
+
+#endif
diff --git a/x86_64-linux-musl/include/video/edid.h b/x86_64-linux-musl/include/video/edid.h
new file mode 100644
index 0000000..0269d64
--- /dev/null
+++ b/x86_64-linux-musl/include/video/edid.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_video_edid_h__
+#define _UAPI__linux_video_edid_h__
+struct edid_info {
+  unsigned char dummy[128];
+};
+#endif
diff --git a/x86_64-linux-musl/include/video/sisfb.h b/x86_64-linux-musl/include/video/sisfb.h
new file mode 100644
index 0000000..1feeda0
--- /dev/null
+++ b/x86_64-linux-musl/include/video/sisfb.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_LINUX_SISFB_H_
+#define _UAPI_LINUX_SISFB_H_
+#include <linux/types.h>
+#include <asm/ioctl.h>
+#define CRT2_DEFAULT 0x00000001
+#define CRT2_LCD 0x00000002
+#define CRT2_TV 0x00000004
+#define CRT2_VGA 0x00000008
+#define TV_NTSC 0x00000010
+#define TV_PAL 0x00000020
+#define TV_HIVISION 0x00000040
+#define TV_YPBPR 0x00000080
+#define TV_AVIDEO 0x00000100
+#define TV_SVIDEO 0x00000200
+#define TV_SCART 0x00000400
+#define TV_PALM 0x00001000
+#define TV_PALN 0x00002000
+#define TV_NTSCJ 0x00001000
+#define TV_CHSCART 0x00008000
+#define TV_CHYPBPR525I 0x00010000
+#define CRT1_VGA 0x00000000
+#define CRT1_LCDA 0x00020000
+#define VGA2_CONNECTED 0x00040000
+#define VB_DISPTYPE_CRT1 0x00080000
+#define VB_SINGLE_MODE 0x20000000
+#define VB_MIRROR_MODE 0x40000000
+#define VB_DUALVIEW_MODE 0x80000000
+#define CRT2_ENABLE (CRT2_LCD | CRT2_TV | CRT2_VGA)
+#define TV_STANDARD (TV_NTSC | TV_PAL | TV_PALM | TV_PALN | TV_NTSCJ)
+#define TV_INTERFACE (TV_AVIDEO | TV_SVIDEO | TV_SCART | TV_HIVISION | TV_YPBPR | TV_CHSCART | TV_CHYPBPR525I)
+#define TV_YPBPR525I TV_NTSC
+#define TV_YPBPR525P TV_PAL
+#define TV_YPBPR750P TV_PALM
+#define TV_YPBPR1080I TV_PALN
+#define TV_YPBPRALL (TV_YPBPR525I | TV_YPBPR525P | TV_YPBPR750P | TV_YPBPR1080I)
+#define VB_DISPTYPE_DISP2 CRT2_ENABLE
+#define VB_DISPTYPE_CRT2 CRT2_ENABLE
+#define VB_DISPTYPE_DISP1 VB_DISPTYPE_CRT1
+#define VB_DISPMODE_SINGLE VB_SINGLE_MODE
+#define VB_DISPMODE_MIRROR VB_MIRROR_MODE
+#define VB_DISPMODE_DUAL VB_DUALVIEW_MODE
+#define VB_DISPLAY_MODE (SINGLE_MODE | MIRROR_MODE | DUALVIEW_MODE)
+struct sisfb_info {
+  __u32 sisfb_id;
+#ifndef SISFB_ID
+#define SISFB_ID 0x53495346
+#endif
+  __u32 chip_id;
+  __u32 memory;
+  __u32 heapstart;
+  __u8 fbvidmode;
+  __u8 sisfb_version;
+  __u8 sisfb_revision;
+  __u8 sisfb_patchlevel;
+  __u8 sisfb_caps;
+  __u32 sisfb_tqlen;
+  __u32 sisfb_pcibus;
+  __u32 sisfb_pcislot;
+  __u32 sisfb_pcifunc;
+  __u8 sisfb_lcdpdc;
+  __u8 sisfb_lcda;
+  __u32 sisfb_vbflags;
+  __u32 sisfb_currentvbflags;
+  __u32 sisfb_scalelcd;
+  __u32 sisfb_specialtiming;
+  __u8 sisfb_haveemi;
+  __u8 sisfb_emi30, sisfb_emi31, sisfb_emi32, sisfb_emi33;
+  __u8 sisfb_haveemilcd;
+  __u8 sisfb_lcdpdca;
+  __u16 sisfb_tvxpos, sisfb_tvypos;
+  __u32 sisfb_heapsize;
+  __u32 sisfb_videooffset;
+  __u32 sisfb_curfstn;
+  __u32 sisfb_curdstn;
+  __u16 sisfb_pci_vendor;
+  __u32 sisfb_vbflags2;
+  __u8 sisfb_can_post;
+  __u8 sisfb_card_posted;
+  __u8 sisfb_was_boot_device;
+  __u8 reserved[183];
+};
+#define SISFB_CMD_GETVBFLAGS 0x55AA0001
+#define SISFB_CMD_SWITCHCRT1 0x55AA0010
+#define SISFB_CMD_ERR_OK 0x80000000
+#define SISFB_CMD_ERR_LOCKED 0x80000001
+#define SISFB_CMD_ERR_EARLY 0x80000002
+#define SISFB_CMD_ERR_NOVB 0x80000003
+#define SISFB_CMD_ERR_NOCRT2 0x80000004
+#define SISFB_CMD_ERR_UNKNOWN 0x8000ffff
+#define SISFB_CMD_ERR_OTHER 0x80010000
+struct sisfb_cmd {
+  __u32 sisfb_cmd;
+  __u32 sisfb_arg[16];
+  __u32 sisfb_result[4];
+};
+#define SISFB_GET_INFO_SIZE _IOR(0xF3, 0x00, __u32)
+#define SISFB_GET_INFO _IOR(0xF3, 0x01, struct sisfb_info)
+#define SISFB_GET_VBRSTATUS _IOR(0xF3, 0x02, __u32)
+#define SISFB_GET_AUTOMAXIMIZE _IOR(0xF3, 0x03, __u32)
+#define SISFB_SET_AUTOMAXIMIZE _IOW(0xF3, 0x03, __u32)
+#define SISFB_GET_TVPOSOFFSET _IOR(0xF3, 0x04, __u32)
+#define SISFB_SET_TVPOSOFFSET _IOW(0xF3, 0x04, __u32)
+#define SISFB_COMMAND _IOWR(0xF3, 0x05, struct sisfb_cmd)
+#define SISFB_SET_LOCK _IOW(0xF3, 0x06, __u32)
+#define SISFB_GET_INFO_OLD _IOR('n', 0xF8, __u32)
+#define SISFB_GET_VBRSTATUS_OLD _IOR('n', 0xF9, __u32)
+#define SISFB_GET_AUTOMAXIMIZE_OLD _IOR('n', 0xFA, __u32)
+#define SISFB_SET_AUTOMAXIMIZE_OLD _IOW('n', 0xFA, __u32)
+struct sis_memreq {
+  __u32 offset;
+  __u32 size;
+};
+#endif
diff --git a/x86_64-linux-musl/include/video/uvesafb.h b/x86_64-linux-musl/include/video/uvesafb.h
new file mode 100644
index 0000000..d0dca96
--- /dev/null
+++ b/x86_64-linux-musl/include/video/uvesafb.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_UVESAFB_H
+#define _UAPI_UVESAFB_H
+#include <linux/types.h>
+struct v86_regs {
+  __u32 ebx;
+  __u32 ecx;
+  __u32 edx;
+  __u32 esi;
+  __u32 edi;
+  __u32 ebp;
+  __u32 eax;
+  __u32 eip;
+  __u32 eflags;
+  __u32 esp;
+  __u16 cs;
+  __u16 ss;
+  __u16 es;
+  __u16 ds;
+  __u16 fs;
+  __u16 gs;
+};
+#define TF_VBEIB 0x01
+#define TF_BUF_ESDI 0x02
+#define TF_BUF_ESBX 0x04
+#define TF_BUF_RET 0x08
+#define TF_EXIT 0x10
+struct uvesafb_task {
+  __u8 flags;
+  int buf_len;
+  struct v86_regs regs;
+};
+#define VBE_CAP_CAN_SWITCH_DAC 0x01
+#define VBE_CAP_VGACOMPAT 0x02
+struct vbe_ib {
+  char vbe_signature[4];
+  __u16 vbe_version;
+  __u32 oem_string_ptr;
+  __u32 capabilities;
+  __u32 mode_list_ptr;
+  __u16 total_memory;
+  __u16 oem_software_rev;
+  __u32 oem_vendor_name_ptr;
+  __u32 oem_product_name_ptr;
+  __u32 oem_product_rev_ptr;
+  __u8 reserved[222];
+  char oem_data[256];
+  char misc_data[512];
+} __attribute__((packed));
+#endif
diff --git a/x86_64-linux-musl/include/wait.h b/x86_64-linux-musl/include/wait.h
new file mode 100644
index 0000000..98396e2
--- /dev/null
+++ b/x86_64-linux-musl/include/wait.h
@@ -0,0 +1,2 @@
+#warning redirecting incorrect #include <wait.h> to <sys/wait.h>
+#include <sys/wait.h>
diff --git a/x86_64-linux-musl/include/wchar.h b/x86_64-linux-musl/include/wchar.h
new file mode 100644
index 0000000..ed5d774
--- /dev/null
+++ b/x86_64-linux-musl/include/wchar.h
@@ -0,0 +1,207 @@
+#ifndef _WCHAR_H
+#define _WCHAR_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_FILE
+#define __NEED___isoc_va_list
+#define __NEED_size_t
+#define __NEED_wchar_t
+#define __NEED_wint_t
+#define __NEED_mbstate_t
+
+#if __STDC_VERSION__ < 201112L
+#define __NEED_struct__IO_FILE
+#endif
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define __NEED_locale_t
+#define __NEED_va_list
+#endif
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define __NEED_wctype_t
+#endif
+
+#include <bits/alltypes.h>
+
+#if L'\0'-1 > 0
+#define WCHAR_MAX (0xffffffffu+L'\0')
+#define WCHAR_MIN (0+L'\0')
+#else
+#define WCHAR_MAX (0x7fffffff+L'\0')
+#define WCHAR_MIN (-1-0x7fffffff+L'\0')
+#endif
+
+#if __cplusplus >= 201103L
+#define NULL nullptr
+#elif defined(__cplusplus)
+#define NULL 0L
+#else
+#define NULL ((void*)0)
+#endif
+
+#undef WEOF
+#define WEOF 0xffffffffU
+
+wchar_t *wcscpy (wchar_t *__restrict, const wchar_t *__restrict);
+wchar_t *wcsncpy (wchar_t *__restrict, const wchar_t *__restrict, size_t);
+
+wchar_t *wcscat (wchar_t *__restrict, const wchar_t *__restrict);
+wchar_t *wcsncat (wchar_t *__restrict, const wchar_t *__restrict, size_t);
+
+int wcscmp (const wchar_t *, const wchar_t *);
+int wcsncmp (const wchar_t *, const wchar_t *, size_t);
+
+int wcscoll(const wchar_t *, const wchar_t *);
+size_t wcsxfrm (wchar_t *__restrict, const wchar_t *__restrict, size_t);
+
+wchar_t *wcschr (const wchar_t *, wchar_t);
+wchar_t *wcsrchr (const wchar_t *, wchar_t);
+
+size_t wcscspn (const wchar_t *, const wchar_t *);
+size_t wcsspn (const wchar_t *, const wchar_t *);
+wchar_t *wcspbrk (const wchar_t *, const wchar_t *);
+
+wchar_t *wcstok (wchar_t *__restrict, const wchar_t *__restrict, wchar_t **__restrict);
+
+size_t wcslen (const wchar_t *);
+
+wchar_t *wcsstr (const wchar_t *__restrict, const wchar_t *__restrict);
+wchar_t *wcswcs (const wchar_t *, const wchar_t *);
+
+wchar_t *wmemchr (const wchar_t *, wchar_t, size_t);
+int wmemcmp (const wchar_t *, const wchar_t *, size_t);
+wchar_t *wmemcpy (wchar_t *__restrict, const wchar_t *__restrict, size_t);
+wchar_t *wmemmove (wchar_t *, const wchar_t *, size_t);
+wchar_t *wmemset (wchar_t *, wchar_t, size_t);
+
+wint_t btowc (int);
+int wctob (wint_t);
+
+int mbsinit (const mbstate_t *);
+size_t mbrtowc (wchar_t *__restrict, const char *__restrict, size_t, mbstate_t *__restrict);
+size_t wcrtomb (char *__restrict, wchar_t, mbstate_t *__restrict);
+
+size_t mbrlen (const char *__restrict, size_t, mbstate_t *__restrict);
+
+size_t mbsrtowcs (wchar_t *__restrict, const char **__restrict, size_t, mbstate_t *__restrict);
+size_t wcsrtombs (char *__restrict, const wchar_t **__restrict, size_t, mbstate_t *__restrict);
+
+float wcstof (const wchar_t *__restrict, wchar_t **__restrict);
+double wcstod (const wchar_t *__restrict, wchar_t **__restrict);
+long double wcstold (const wchar_t *__restrict, wchar_t **__restrict);
+
+long wcstol (const wchar_t *__restrict, wchar_t **__restrict, int);
+unsigned long wcstoul (const wchar_t *__restrict, wchar_t **__restrict, int);
+
+long long wcstoll (const wchar_t *__restrict, wchar_t **__restrict, int);
+unsigned long long wcstoull (const wchar_t *__restrict, wchar_t **__restrict, int);
+
+
+
+int fwide (FILE *, int);
+
+
+int wprintf (const wchar_t *__restrict, ...);
+int fwprintf (FILE *__restrict, const wchar_t *__restrict, ...);
+int swprintf (wchar_t *__restrict, size_t, const wchar_t *__restrict, ...);
+
+int vwprintf (const wchar_t *__restrict, __isoc_va_list);
+int vfwprintf (FILE *__restrict, const wchar_t *__restrict, __isoc_va_list);
+int vswprintf (wchar_t *__restrict, size_t, const wchar_t *__restrict, __isoc_va_list);
+
+int wscanf (const wchar_t *__restrict, ...);
+int fwscanf (FILE *__restrict, const wchar_t *__restrict, ...);
+int swscanf (const wchar_t *__restrict, const wchar_t *__restrict, ...);
+
+int vwscanf (const wchar_t *__restrict, __isoc_va_list);
+int vfwscanf (FILE *__restrict, const wchar_t *__restrict, __isoc_va_list);
+int vswscanf (const wchar_t *__restrict, const wchar_t *__restrict, __isoc_va_list);
+
+wint_t fgetwc (FILE *);
+wint_t getwc (FILE *);
+wint_t getwchar (void);
+
+wint_t fputwc (wchar_t, FILE *);
+wint_t putwc (wchar_t, FILE *);
+wint_t putwchar (wchar_t);
+
+wchar_t *fgetws (wchar_t *__restrict, int, FILE *__restrict);
+int fputws (const wchar_t *__restrict, FILE *__restrict);
+
+wint_t ungetwc (wint_t, FILE *);
+
+struct tm;
+size_t wcsftime (wchar_t *__restrict, size_t, const wchar_t *__restrict, const struct tm *__restrict);
+
+#undef iswdigit
+
+#if defined(_GNU_SOURCE)
+wint_t fgetwc_unlocked (FILE *);
+wint_t getwc_unlocked (FILE *);
+wint_t getwchar_unlocked (void);
+wint_t fputwc_unlocked (wchar_t, FILE *);
+wint_t putwc_unlocked (wchar_t, FILE *);
+wint_t putwchar_unlocked (wchar_t);
+wchar_t *fgetws_unlocked (wchar_t *__restrict, int, FILE *__restrict);
+int fputws_unlocked (const wchar_t *__restrict, FILE *__restrict);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+size_t wcsftime_l (wchar_t *__restrict, size_t, const wchar_t *__restrict, const struct tm *__restrict, locale_t);
+#endif
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)  || defined(_BSD_SOURCE)
+FILE *open_wmemstream(wchar_t **, size_t *);
+size_t mbsnrtowcs(wchar_t *__restrict, const char **__restrict, size_t, size_t, mbstate_t *__restrict);
+size_t wcsnrtombs(char *__restrict, const wchar_t **__restrict, size_t, size_t, mbstate_t *__restrict);
+wchar_t *wcsdup(const wchar_t *);
+size_t wcsnlen (const wchar_t *, size_t);
+wchar_t *wcpcpy (wchar_t *__restrict, const wchar_t *__restrict);
+wchar_t *wcpncpy (wchar_t *__restrict, const wchar_t *__restrict, size_t);
+int wcscasecmp(const wchar_t *, const wchar_t *);
+int wcscasecmp_l(const wchar_t *, const wchar_t *, locale_t);
+int wcsncasecmp(const wchar_t *, const wchar_t *, size_t);
+int wcsncasecmp_l(const wchar_t *, const wchar_t *, size_t, locale_t);
+int wcscoll_l(const wchar_t *, const wchar_t *, locale_t);
+size_t wcsxfrm_l(wchar_t *__restrict, const wchar_t *__restrict, size_t, locale_t);
+#endif
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+int wcwidth (wchar_t);
+int wcswidth (const wchar_t *, size_t);
+int       iswalnum(wint_t);
+int       iswalpha(wint_t);
+int       iswblank(wint_t);
+int       iswcntrl(wint_t);
+int       iswdigit(wint_t);
+int       iswgraph(wint_t);
+int       iswlower(wint_t);
+int       iswprint(wint_t);
+int       iswpunct(wint_t);
+int       iswspace(wint_t);
+int       iswupper(wint_t);
+int       iswxdigit(wint_t);
+int       iswctype(wint_t, wctype_t);
+wint_t    towlower(wint_t);
+wint_t    towupper(wint_t);
+wctype_t  wctype(const char *);
+
+#ifndef __cplusplus
+#undef iswdigit
+#define iswdigit(a) (0 ? iswdigit(a) : ((unsigned)(a)-'0') < 10)
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/wctype.h b/x86_64-linux-musl/include/wctype.h
new file mode 100644
index 0000000..bc2420d
--- /dev/null
+++ b/x86_64-linux-musl/include/wctype.h
@@ -0,0 +1,79 @@
+#ifndef _WCTYPE_H
+#define _WCTYPE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_wint_t
+#define __NEED_wctype_t
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define __NEED_locale_t
+#endif
+
+#include <bits/alltypes.h>
+
+typedef const int * wctrans_t;
+
+#undef WEOF
+#define WEOF 0xffffffffU
+
+#undef iswdigit
+
+int       iswalnum(wint_t);
+int       iswalpha(wint_t);
+int       iswblank(wint_t);
+int       iswcntrl(wint_t);
+int       iswdigit(wint_t);
+int       iswgraph(wint_t);
+int       iswlower(wint_t);
+int       iswprint(wint_t);
+int       iswpunct(wint_t);
+int       iswspace(wint_t);
+int       iswupper(wint_t);
+int       iswxdigit(wint_t);
+int       iswctype(wint_t, wctype_t);
+wint_t    towctrans(wint_t, wctrans_t);
+wint_t    towlower(wint_t);
+wint_t    towupper(wint_t);
+wctrans_t wctrans(const char *);
+wctype_t  wctype(const char *);
+
+#ifndef __cplusplus
+#undef iswdigit
+#define iswdigit(a) (0 ? iswdigit(a) : ((unsigned)(a)-'0') < 10)
+#endif
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+
+int iswalnum_l(wint_t, locale_t);
+int iswalpha_l(wint_t, locale_t);
+int iswblank_l(wint_t, locale_t);
+int iswcntrl_l(wint_t, locale_t);
+int iswdigit_l(wint_t, locale_t);
+int iswgraph_l(wint_t, locale_t);
+int iswlower_l(wint_t, locale_t);
+int iswprint_l(wint_t, locale_t);
+int iswpunct_l(wint_t, locale_t);
+int iswspace_l(wint_t, locale_t);
+int iswupper_l(wint_t, locale_t);
+int iswxdigit_l(wint_t, locale_t);
+int iswctype_l(wint_t, wctype_t, locale_t);
+wint_t towlower_l(wint_t, locale_t);
+wint_t towupper_l(wint_t, locale_t);
+wint_t towctrans_l(wint_t, wctrans_t, locale_t);
+wctrans_t wctrans_l(const char *, locale_t);
+wctype_t  wctype_l(const char *, locale_t);
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/wordexp.h b/x86_64-linux-musl/include/wordexp.h
new file mode 100644
index 0000000..5460002
--- /dev/null
+++ b/x86_64-linux-musl/include/wordexp.h
@@ -0,0 +1,41 @@
+#ifndef	_WORDEXP_H
+#define	_WORDEXP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#define __NEED_size_t
+
+#include <bits/alltypes.h>
+
+#define WRDE_DOOFFS  1
+#define WRDE_APPEND  2
+#define WRDE_NOCMD   4
+#define WRDE_REUSE   8
+#define WRDE_SHOWERR 16
+#define WRDE_UNDEF   32
+
+typedef struct {
+	size_t we_wordc;
+	char **we_wordv;
+	size_t we_offs;
+} wordexp_t;
+
+#define WRDE_NOSYS   -1
+#define WRDE_NOSPACE 1
+#define WRDE_BADCHAR 2
+#define WRDE_BADVAL  3
+#define WRDE_CMDSUB  4
+#define WRDE_SYNTAX  5
+
+int wordexp (const char *__restrict, wordexp_t *__restrict, int);
+void wordfree (wordexp_t *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/x86_64-linux-musl/include/xen/evtchn.h b/x86_64-linux-musl/include/xen/evtchn.h
new file mode 100644
index 0000000..aa4aaaf
--- /dev/null
+++ b/x86_64-linux-musl/include/xen/evtchn.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 __LINUX_PUBLIC_EVTCHN_H__
+#define __LINUX_PUBLIC_EVTCHN_H__
+#define IOCTL_EVTCHN_BIND_VIRQ _IOC(_IOC_NONE, 'E', 0, sizeof(struct ioctl_evtchn_bind_virq))
+struct ioctl_evtchn_bind_virq {
+  unsigned int virq;
+};
+#define IOCTL_EVTCHN_BIND_INTERDOMAIN _IOC(_IOC_NONE, 'E', 1, sizeof(struct ioctl_evtchn_bind_interdomain))
+struct ioctl_evtchn_bind_interdomain {
+  unsigned int remote_domain, remote_port;
+};
+#define IOCTL_EVTCHN_BIND_UNBOUND_PORT _IOC(_IOC_NONE, 'E', 2, sizeof(struct ioctl_evtchn_bind_unbound_port))
+struct ioctl_evtchn_bind_unbound_port {
+  unsigned int remote_domain;
+};
+#define IOCTL_EVTCHN_UNBIND _IOC(_IOC_NONE, 'E', 3, sizeof(struct ioctl_evtchn_unbind))
+struct ioctl_evtchn_unbind {
+  unsigned int port;
+};
+#define IOCTL_EVTCHN_NOTIFY _IOC(_IOC_NONE, 'E', 4, sizeof(struct ioctl_evtchn_notify))
+struct ioctl_evtchn_notify {
+  unsigned int port;
+};
+#define IOCTL_EVTCHN_RESET _IOC(_IOC_NONE, 'E', 5, 0)
+#define IOCTL_EVTCHN_RESTRICT_DOMID _IOC(_IOC_NONE, 'E', 6, sizeof(struct ioctl_evtchn_restrict_domid))
+struct ioctl_evtchn_restrict_domid {
+  domid_t domid;
+};
+#endif
diff --git a/x86_64-linux-musl/include/xen/gntalloc.h b/x86_64-linux-musl/include/xen/gntalloc.h
new file mode 100644
index 0000000..d306b22
--- /dev/null
+++ b/x86_64-linux-musl/include/xen/gntalloc.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_PUBLIC_GNTALLOC_H__
+#define __LINUX_PUBLIC_GNTALLOC_H__
+#include <linux/types.h>
+#define IOCTL_GNTALLOC_ALLOC_GREF _IOC(_IOC_NONE, 'G', 5, sizeof(struct ioctl_gntalloc_alloc_gref))
+struct ioctl_gntalloc_alloc_gref {
+  __u16 domid;
+  __u16 flags;
+  __u32 count;
+  __u64 index;
+  __u32 gref_ids[1];
+};
+#define GNTALLOC_FLAG_WRITABLE 1
+#define IOCTL_GNTALLOC_DEALLOC_GREF _IOC(_IOC_NONE, 'G', 6, sizeof(struct ioctl_gntalloc_dealloc_gref))
+struct ioctl_gntalloc_dealloc_gref {
+  __u64 index;
+  __u32 count;
+};
+#define IOCTL_GNTALLOC_SET_UNMAP_NOTIFY _IOC(_IOC_NONE, 'G', 7, sizeof(struct ioctl_gntalloc_unmap_notify))
+struct ioctl_gntalloc_unmap_notify {
+  __u64 index;
+  __u32 action;
+  __u32 event_channel_port;
+};
+#define UNMAP_NOTIFY_CLEAR_BYTE 0x1
+#define UNMAP_NOTIFY_SEND_EVENT 0x2
+#endif
diff --git a/x86_64-linux-musl/include/xen/gntdev.h b/x86_64-linux-musl/include/xen/gntdev.h
new file mode 100644
index 0000000..1e78ac3
--- /dev/null
+++ b/x86_64-linux-musl/include/xen/gntdev.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_PUBLIC_GNTDEV_H__
+#define __LINUX_PUBLIC_GNTDEV_H__
+#include <linux/types.h>
+struct ioctl_gntdev_grant_ref {
+  __u32 domid;
+  __u32 ref;
+};
+#define IOCTL_GNTDEV_MAP_GRANT_REF _IOC(_IOC_NONE, 'G', 0, sizeof(struct ioctl_gntdev_map_grant_ref))
+struct ioctl_gntdev_map_grant_ref {
+  __u32 count;
+  __u32 pad;
+  __u64 index;
+  struct ioctl_gntdev_grant_ref refs[1];
+};
+#define IOCTL_GNTDEV_UNMAP_GRANT_REF _IOC(_IOC_NONE, 'G', 1, sizeof(struct ioctl_gntdev_unmap_grant_ref))
+struct ioctl_gntdev_unmap_grant_ref {
+  __u64 index;
+  __u32 count;
+  __u32 pad;
+};
+#define IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR _IOC(_IOC_NONE, 'G', 2, sizeof(struct ioctl_gntdev_get_offset_for_vaddr))
+struct ioctl_gntdev_get_offset_for_vaddr {
+  __u64 vaddr;
+  __u64 offset;
+  __u32 count;
+  __u32 pad;
+};
+#define IOCTL_GNTDEV_SET_MAX_GRANTS _IOC(_IOC_NONE, 'G', 3, sizeof(struct ioctl_gntdev_set_max_grants))
+struct ioctl_gntdev_set_max_grants {
+  __u32 count;
+};
+#define IOCTL_GNTDEV_SET_UNMAP_NOTIFY _IOC(_IOC_NONE, 'G', 7, sizeof(struct ioctl_gntdev_unmap_notify))
+struct ioctl_gntdev_unmap_notify {
+  __u64 index;
+  __u32 action;
+  __u32 event_channel_port;
+};
+struct gntdev_grant_copy_segment {
+  union {
+    void __user * virt;
+    struct {
+      grant_ref_t ref;
+      __u16 offset;
+      domid_t domid;
+    } foreign;
+  } source, dest;
+  __u16 len;
+  __u16 flags;
+  __s16 status;
+};
+#define IOCTL_GNTDEV_GRANT_COPY _IOC(_IOC_NONE, 'G', 8, sizeof(struct ioctl_gntdev_grant_copy))
+struct ioctl_gntdev_grant_copy {
+  unsigned int count;
+  struct gntdev_grant_copy_segment __user * segments;
+};
+#define UNMAP_NOTIFY_CLEAR_BYTE 0x1
+#define UNMAP_NOTIFY_SEND_EVENT 0x2
+#define GNTDEV_DMA_FLAG_WC (1 << 0)
+#define GNTDEV_DMA_FLAG_COHERENT (1 << 1)
+#define IOCTL_GNTDEV_DMABUF_EXP_FROM_REFS _IOC(_IOC_NONE, 'G', 9, sizeof(struct ioctl_gntdev_dmabuf_exp_from_refs))
+struct ioctl_gntdev_dmabuf_exp_from_refs {
+  __u32 flags;
+  __u32 count;
+  __u32 fd;
+  __u32 domid;
+  __u32 refs[1];
+};
+#define IOCTL_GNTDEV_DMABUF_EXP_WAIT_RELEASED _IOC(_IOC_NONE, 'G', 10, sizeof(struct ioctl_gntdev_dmabuf_exp_wait_released))
+struct ioctl_gntdev_dmabuf_exp_wait_released {
+  __u32 fd;
+  __u32 wait_to_ms;
+};
+#define IOCTL_GNTDEV_DMABUF_IMP_TO_REFS _IOC(_IOC_NONE, 'G', 11, sizeof(struct ioctl_gntdev_dmabuf_imp_to_refs))
+struct ioctl_gntdev_dmabuf_imp_to_refs {
+  __u32 fd;
+  __u32 count;
+  __u32 domid;
+  __u32 reserved;
+  __u32 refs[1];
+};
+#define IOCTL_GNTDEV_DMABUF_IMP_RELEASE _IOC(_IOC_NONE, 'G', 12, sizeof(struct ioctl_gntdev_dmabuf_imp_release))
+struct ioctl_gntdev_dmabuf_imp_release {
+  __u32 fd;
+  __u32 reserved;
+};
+#endif
diff --git a/x86_64-linux-musl/include/xen/privcmd.h b/x86_64-linux-musl/include/xen/privcmd.h
new file mode 100644
index 0000000..145446b
--- /dev/null
+++ b/x86_64-linux-musl/include/xen/privcmd.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_PUBLIC_PRIVCMD_H__
+#define __LINUX_PUBLIC_PRIVCMD_H__
+#include <linux/types.h>
+#include <linux/compiler.h>
+#include <xen/interface/xen.h>
+struct privcmd_hypercall {
+  __u64 op;
+  __u64 arg[5];
+};
+struct privcmd_mmap_entry {
+  __u64 va;
+  __u64 mfn;
+  __u64 npages;
+};
+struct privcmd_mmap {
+  int num;
+  domid_t dom;
+  struct privcmd_mmap_entry __user * entry;
+};
+struct privcmd_mmapbatch {
+  int num;
+  domid_t dom;
+  __u64 addr;
+  xen_pfn_t __user * arr;
+};
+#define PRIVCMD_MMAPBATCH_MFN_ERROR 0xf0000000U
+#define PRIVCMD_MMAPBATCH_PAGED_ERROR 0x80000000U
+struct privcmd_mmapbatch_v2 {
+  unsigned int num;
+  domid_t dom;
+  __u64 addr;
+  const xen_pfn_t __user * arr;
+  int __user * err;
+};
+struct privcmd_dm_op_buf {
+  void __user * uptr;
+  size_t size;
+};
+struct privcmd_dm_op {
+  domid_t dom;
+  __u16 num;
+  const struct privcmd_dm_op_buf __user * ubufs;
+};
+struct privcmd_mmap_resource {
+  domid_t dom;
+  __u32 type;
+  __u32 id;
+  __u32 idx;
+  __u64 num;
+  __u64 addr;
+};
+#define IOCTL_PRIVCMD_HYPERCALL _IOC(_IOC_NONE, 'P', 0, sizeof(struct privcmd_hypercall))
+#define IOCTL_PRIVCMD_MMAP _IOC(_IOC_NONE, 'P', 2, sizeof(struct privcmd_mmap))
+#define IOCTL_PRIVCMD_MMAPBATCH _IOC(_IOC_NONE, 'P', 3, sizeof(struct privcmd_mmapbatch))
+#define IOCTL_PRIVCMD_MMAPBATCH_V2 _IOC(_IOC_NONE, 'P', 4, sizeof(struct privcmd_mmapbatch_v2))
+#define IOCTL_PRIVCMD_DM_OP _IOC(_IOC_NONE, 'P', 5, sizeof(struct privcmd_dm_op))
+#define IOCTL_PRIVCMD_RESTRICT _IOC(_IOC_NONE, 'P', 6, sizeof(domid_t))
+#define IOCTL_PRIVCMD_MMAP_RESOURCE _IOC(_IOC_NONE, 'P', 7, sizeof(struct privcmd_mmap_resource))
+#endif
diff --git a/x86_64-linux-musl/lib/Scrt1.o b/x86_64-linux-musl/lib/Scrt1.o
new file mode 100644
index 0000000..34c3323
--- /dev/null
+++ b/x86_64-linux-musl/lib/Scrt1.o
Binary files differ
diff --git a/x86_64-linux-musl/lib/crt1.o b/x86_64-linux-musl/lib/crt1.o
new file mode 100644
index 0000000..ca2bf9d
--- /dev/null
+++ b/x86_64-linux-musl/lib/crt1.o
Binary files differ
diff --git a/x86_64-linux-musl/lib/crti.o b/x86_64-linux-musl/lib/crti.o
new file mode 100644
index 0000000..8765452
--- /dev/null
+++ b/x86_64-linux-musl/lib/crti.o
Binary files differ
diff --git a/x86_64-linux-musl/lib/crtn.o b/x86_64-linux-musl/lib/crtn.o
new file mode 100644
index 0000000..7b5a01b
--- /dev/null
+++ b/x86_64-linux-musl/lib/crtn.o
Binary files differ
diff --git a/x86_64-linux-musl/lib/ld-musl.so.1 b/x86_64-linux-musl/lib/ld-musl.so.1
new file mode 100755
index 0000000..1e5539f
--- /dev/null
+++ b/x86_64-linux-musl/lib/ld-musl.so.1
Binary files differ
diff --git a/x86_64-linux-musl/lib/libc.a b/x86_64-linux-musl/lib/libc.a
new file mode 100644
index 0000000..715b95f
--- /dev/null
+++ b/x86_64-linux-musl/lib/libc.a
Binary files differ
diff --git a/x86_64-linux-musl/lib/libc.so b/x86_64-linux-musl/lib/libc.so
new file mode 100755
index 0000000..1e5539f
--- /dev/null
+++ b/x86_64-linux-musl/lib/libc.so
Binary files differ
diff --git a/x86_64-linux-musl/lib/libc_musl.so b/x86_64-linux-musl/lib/libc_musl.so
new file mode 100755
index 0000000..0ec563d
--- /dev/null
+++ b/x86_64-linux-musl/lib/libc_musl.so
Binary files differ
diff --git a/x86_64-linux-musl/lib/libc_musl_crtbegin_dynamic.o b/x86_64-linux-musl/lib/libc_musl_crtbegin_dynamic.o
new file mode 100644
index 0000000..655e10f
--- /dev/null
+++ b/x86_64-linux-musl/lib/libc_musl_crtbegin_dynamic.o
Binary files differ
diff --git a/x86_64-linux-musl/lib/libc_musl_crtbegin_so.o b/x86_64-linux-musl/lib/libc_musl_crtbegin_so.o
new file mode 100644
index 0000000..804a179
--- /dev/null
+++ b/x86_64-linux-musl/lib/libc_musl_crtbegin_so.o
Binary files differ
diff --git a/x86_64-linux-musl/lib/libc_musl_crtbegin_static.o b/x86_64-linux-musl/lib/libc_musl_crtbegin_static.o
new file mode 100644
index 0000000..633f0c0
--- /dev/null
+++ b/x86_64-linux-musl/lib/libc_musl_crtbegin_static.o
Binary files differ
diff --git a/x86_64-linux-musl/lib/libc_musl_crtend.o b/x86_64-linux-musl/lib/libc_musl_crtend.o
new file mode 100644
index 0000000..963a248
--- /dev/null
+++ b/x86_64-linux-musl/lib/libc_musl_crtend.o
Binary files differ
diff --git a/x86_64-linux-musl/lib/libcrypt.a b/x86_64-linux-musl/lib/libcrypt.a
new file mode 100644
index 0000000..8b277f0
--- /dev/null
+++ b/x86_64-linux-musl/lib/libcrypt.a
@@ -0,0 +1 @@
+!<arch>
diff --git a/x86_64-linux-musl/lib/libdl.a b/x86_64-linux-musl/lib/libdl.a
new file mode 100644
index 0000000..8b277f0
--- /dev/null
+++ b/x86_64-linux-musl/lib/libdl.a
@@ -0,0 +1 @@
+!<arch>
diff --git a/x86_64-linux-musl/lib/libm.a b/x86_64-linux-musl/lib/libm.a
new file mode 100644
index 0000000..8b277f0
--- /dev/null
+++ b/x86_64-linux-musl/lib/libm.a
@@ -0,0 +1 @@
+!<arch>
diff --git a/x86_64-linux-musl/lib/libpthread.a b/x86_64-linux-musl/lib/libpthread.a
new file mode 100644
index 0000000..8b277f0
--- /dev/null
+++ b/x86_64-linux-musl/lib/libpthread.a
@@ -0,0 +1 @@
+!<arch>
diff --git a/x86_64-linux-musl/lib/libresolv.a b/x86_64-linux-musl/lib/libresolv.a
new file mode 100644
index 0000000..8b277f0
--- /dev/null
+++ b/x86_64-linux-musl/lib/libresolv.a
@@ -0,0 +1 @@
+!<arch>
diff --git a/x86_64-linux-musl/lib/librt.a b/x86_64-linux-musl/lib/librt.a
new file mode 100644
index 0000000..8b277f0
--- /dev/null
+++ b/x86_64-linux-musl/lib/librt.a
@@ -0,0 +1 @@
+!<arch>
diff --git a/x86_64-linux-musl/lib/libutil.a b/x86_64-linux-musl/lib/libutil.a
new file mode 100644
index 0000000..8b277f0
--- /dev/null
+++ b/x86_64-linux-musl/lib/libutil.a
@@ -0,0 +1 @@
+!<arch>
diff --git a/x86_64-linux-musl/lib/libxnet.a b/x86_64-linux-musl/lib/libxnet.a
new file mode 100644
index 0000000..8b277f0
--- /dev/null
+++ b/x86_64-linux-musl/lib/libxnet.a
@@ -0,0 +1 @@
+!<arch>
diff --git a/x86_64-linux-musl/lib/linker.script b/x86_64-linux-musl/lib/linker.script
new file mode 100755
index 0000000..ef7844c
--- /dev/null
+++ b/x86_64-linux-musl/lib/linker.script
@@ -0,0 +1,16 @@
+ENTRY(__dlwrap__start)
+SECTIONS {
+  .linker_r 0x1000 : {
+    KEEP(*(.linker_r));
+  }
+  .linker_rx 0x4deb4 : {
+    KEEP(*(.linker_rx));
+  }
+  .linker_rw 0x116e00 : {
+    KEEP(*(.linker_rw));
+  }
+  .linker_rw2 0x1184d0 : {
+    KEEP(*(.linker_rw2));
+  }
+}
+INSERT BEFORE .note.android.embedded_linker;
diff --git a/x86_64-linux-musl/lib/rcrt1.o b/x86_64-linux-musl/lib/rcrt1.o
new file mode 100644
index 0000000..af90848
--- /dev/null
+++ b/x86_64-linux-musl/lib/rcrt1.o
Binary files differ