diff options
author | Andrew Hsieh <andrewhsieh@google.com> | 2014-02-05 03:50:03 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-02-05 03:50:03 +0000 |
commit | 733874f3f5180fc248286514eac91100b9b9b4e2 (patch) | |
tree | dc4b411bb33b749b9770be917037de1d76e1111f /9 | |
parent | 2960d0ccf06afda5e0e389acb6d4f8226088a8d2 (diff) | |
parent | 25e8269fe70d5fd56328eb85a7a094d28e771396 (diff) | |
download | prebuilts_ndk-733874f3f5180fc248286514eac91100b9b9b4e2.zip prebuilts_ndk-733874f3f5180fc248286514eac91100b9b9b4e2.tar.gz prebuilts_ndk-733874f3f5180fc248286514eac91100b9b9b4e2.tar.bz2 |
Merge "Refresh headers for arm64/x86_64"
Diffstat (limited to '9')
12 files changed, 772 insertions, 130 deletions
diff --git a/9/platforms/android-19/arch-arm64/usr/include/fcntl.h b/9/platforms/android-19/arch-arm64/usr/include/fcntl.h index f6a89ef..b7b91f2 100644 --- a/9/platforms/android-19/arch-arm64/usr/include/fcntl.h +++ b/9/platforms/android-19/arch-arm64/usr/include/fcntl.h @@ -41,11 +41,15 @@ __BEGIN_DECLS #define O_ASYNC FASYNC #endif -extern int open(const char* path, int mode, ...); -extern int openat(int fd, const char* path, int mode, ...); -extern int unlinkat(int dirfd, const char *pathname, int flags); -extern int fcntl(int fd, int command, ...); -extern int creat(const char* path, mode_t mode); +extern int creat(const char*, mode_t); +extern int fallocate64(int, int, off64_t, off64_t); +extern int fallocate(int, int, off_t, off_t); +extern int fcntl(int, int, ...); +extern int openat(int, const char*, int, ...); +extern int open(const char*, int, ...); +extern int posix_fallocate64(int, off64_t, off64_t); +extern int posix_fallocate(int, off_t, off_t); +extern int unlinkat(int, const char*, int); #if defined(__BIONIC_FORTIFY) diff --git a/9/platforms/android-19/arch-arm64/usr/include/linux/binder.h b/9/platforms/android-19/arch-arm64/usr/include/linux/binder.h index 1472382..02101ab 100644 --- a/9/platforms/android-19/arch-arm64/usr/include/linux/binder.h +++ b/9/platforms/android-19/arch-arm64/usr/include/linux/binder.h @@ -36,136 +36,155 @@ enum { FLAT_BINDER_FLAG_ACCEPTS_FDS = 0x100, }; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifdef BINDER_IPC_32BIT +typedef __u32 binder_size_t; +typedef __u32 binder_uintptr_t; +#else +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef __u64 binder_size_t; +typedef __u64 binder_uintptr_t; +#endif struct flat_binder_object { - unsigned long type; - unsigned long flags; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 type; + __u32 flags; union { + binder_uintptr_t binder; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - void __user *binder; - signed long handle; + __u32 handle; }; - void __user *cookie; -/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + binder_uintptr_t cookie; }; -struct binder_write_read { - signed long write_size; - signed long write_consumed; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - unsigned long write_buffer; - signed long read_size; - signed long read_consumed; - unsigned long read_buffer; +struct binder_write_read { + binder_size_t write_size; + binder_size_t write_consumed; + binder_uintptr_t write_buffer; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + binder_size_t read_size; + binder_size_t read_consumed; + binder_uintptr_t read_buffer; }; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ struct binder_version { - signed long protocol_version; + __s32 protocol_version; }; +#ifdef BINDER_IPC_32BIT /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ #define BINDER_CURRENT_PROTOCOL_VERSION 7 +#else +#define BINDER_CURRENT_PROTOCOL_VERSION 8 +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ #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, size_t) -/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define BINDER_SET_MAX_THREADS _IOW('b', 5, __u32) #define BINDER_SET_IDLE_PRIORITY _IOW('b', 6, __s32) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ #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) -/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ enum transaction_flags { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ TF_ONE_WAY = 0x01, TF_ROOT_OBJECT = 0x04, TF_STATUS_CODE = 0x08, -/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ TF_ACCEPT_FDS = 0x10, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ }; struct binder_transaction_data { union { + __u32 handle; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - size_t handle; - void *ptr; + binder_uintptr_t ptr; } target; - void *cookie; + binder_uintptr_t cookie; + __u32 code; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - unsigned int code; - unsigned int flags; + __u32 flags; pid_t sender_pid; uid_t sender_euid; + binder_size_t data_size; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - size_t data_size; - size_t offsets_size; + binder_size_t offsets_size; union { struct { + binder_uintptr_t buffer; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - const void __user *buffer; - const void __user *offsets; + binder_uintptr_t offsets; } ptr; - uint8_t buf[8]; -/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u8 buf[8]; } data; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ }; struct binder_ptr_cookie { - void *ptr; + binder_uintptr_t ptr; + binder_uintptr_t cookie; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - void *cookie; }; +struct binder_handle_cookie { + __u32 handle; + binder_uintptr_t cookie; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +} __attribute__((packed)); struct binder_pri_desc { - int priority; + __s32 priority; + __u32 desc; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - int desc; }; struct binder_pri_ptr_cookie { - int priority; + __s32 priority; + binder_uintptr_t ptr; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - void *ptr; - void *cookie; + binder_uintptr_t cookie; }; enum binder_driver_return_protocol { + BR_ERROR = _IOR('r', 0, __s32), /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - BR_ERROR = _IOR('r', 0, int), BR_OK = _IO('r', 1), 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), /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - BR_ACQUIRE_RESULT = _IOR('r', 4, int), BR_DEAD_REPLY = _IO('r', 5), BR_TRANSACTION_COMPLETE = _IO('r', 6), BR_INCREFS = _IOR('r', 7, struct binder_ptr_cookie), -/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ BR_ACQUIRE = _IOR('r', 8, struct binder_ptr_cookie), +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 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), -/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ BR_NOOP = _IO('r', 12), +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ BR_SPAWN_LOOPER = _IO('r', 13), BR_FINISHED = _IO('r', 14), - BR_DEAD_BINDER = _IOR('r', 15, void *), + BR_DEAD_BINDER = _IOR('r', 15, binder_uintptr_t), + BR_CLEAR_DEATH_NOTIFICATION_DONE = _IOR('r', 16, binder_uintptr_t), /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - BR_CLEAR_DEATH_NOTIFICATION_DONE = _IOR('r', 16, void *), BR_FAILED_REPLY = _IO('r', 17), }; enum binder_driver_command_protocol { -/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ BC_TRANSACTION = _IOW('c', 0, struct binder_transaction_data), - BC_REPLY = _IOW('c', 1, struct binder_transaction_data), - BC_ACQUIRE_RESULT = _IOW('c', 2, int), - BC_FREE_BUFFER = _IOW('c', 3, int), /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - BC_INCREFS = _IOW('c', 4, int), - BC_ACQUIRE = _IOW('c', 5, int), - BC_RELEASE = _IOW('c', 6, int), - BC_DECREFS = _IOW('c', 7, int), + 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), /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + 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), +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 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), -/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ BC_ENTER_LOOPER = _IO('c', 12), +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ BC_EXIT_LOOPER = _IO('c', 13), - BC_REQUEST_DEATH_NOTIFICATION = _IOW('c', 14, struct binder_ptr_cookie), - BC_CLEAR_DEATH_NOTIFICATION = _IOW('c', 15, struct binder_ptr_cookie), + 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), /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - BC_DEAD_BINDER_DONE = _IOW('c', 16, void *), }; #endif diff --git a/9/platforms/android-19/arch-arm64/usr/include/sys/cdefs.h b/9/platforms/android-19/arch-arm64/usr/include/sys/cdefs.h index 7c8f7bf..1f7cfc8 100644 --- a/9/platforms/android-19/arch-arm64/usr/include/sys/cdefs.h +++ b/9/platforms/android-19/arch-arm64/usr/include/sys/cdefs.h @@ -546,7 +546,7 @@ #define __bos0(s) __builtin_object_size((s), 0) #define __BIONIC_FORTIFY_INLINE \ - extern inline \ + extern __inline__ \ __attribute__ ((always_inline)) \ __attribute__ ((gnu_inline)) #endif diff --git a/9/platforms/android-19/arch-arm64/usr/include/sys/ucontext.h b/9/platforms/android-19/arch-arm64/usr/include/sys/ucontext.h new file mode 100644 index 0000000..94b7a68 --- /dev/null +++ b/9/platforms/android-19/arch-arm64/usr/include/sys/ucontext.h @@ -0,0 +1,261 @@ +/* + * Copyright (C) 2014 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. + */ + +#ifndef _SYS_UCONTEXT_H_ +#define _SYS_UCONTEXT_H_ + +#include <signal.h> +#include <sys/user.h> + +__BEGIN_DECLS + +#if defined(__arm__) + +enum { + REG_R0 = 0, + REG_R1, + REG_R2, + REG_R3, + REG_R4, + REG_R5, + REG_R6, + REG_R7, + REG_R8, + REG_R9, + REG_R10, + REG_R11, + REG_R12, + REG_R13, + REG_R14, + REG_R15, +}; + +#define NGREG 18 /* Like glibc. */ + +typedef int greg_t; +typedef greg_t gregset_t[NGREG]; + +/* TODO: fpregset_t. */ + +#include <asm/sigcontext.h> +typedef struct sigcontext mcontext_t; + +typedef struct ucontext { + unsigned long uc_flags; + struct ucontext* uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; + /* TODO: uc_regspace */ +} ucontext_t; + +#elif defined(__aarch64__) + +/* TODO: gregset_t and fpregset_t. */ + +#include <asm/sigcontext.h> +typedef struct sigcontext mcontext_t; + +typedef struct ucontext { + unsigned long uc_flags; + struct ucontext *uc_link; + stack_t uc_stack; + sigset_t uc_sigmask; + mcontext_t uc_mcontext; +} ucontext_t; + +#elif defined(__i386__) + +enum { + REG_GS = 0, + REG_FS, + REG_ES, + REG_DS, + REG_EDI, + REG_ESI, + REG_EBP, + REG_ESP, + REG_EBX, + REG_EDX, + REG_ECX, + REG_EAX, + REG_TRAPNO, + REG_ERR, + REG_EIP, + REG_CS, + REG_EFL, + REG_UESP, + REG_SS, + NGREG +}; + +typedef int greg_t; +typedef greg_t gregset_t[NGREG]; + +struct _libc_fpreg { + unsigned short significand[4]; + unsigned short exponent; +}; + +struct _libc_fpstate { + unsigned long cw; + unsigned long sw; + unsigned long tag; + unsigned long ipoff; + unsigned long cssel; + unsigned long dataoff; + unsigned long datasel; + struct _libc_fpreg _st[8]; + unsigned long status; +}; + +typedef struct _libc_fpstate* fpregset_t; + +typedef struct { + gregset_t gregs; + fpregset_t fpregs; + unsigned long oldmask; + unsigned long cr2; +} mcontext_t; + +typedef struct ucontext { + unsigned long uc_flags; + struct ucontext* uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; + /* TODO: __fpregs_mem? */ +} ucontext_t; + +#elif defined(__mips__) + +/* glibc doesn't have names for MIPS registers. */ + +#define NGREG 32 +#define NFPREG 32 + +typedef unsigned long long greg_t; +typedef greg_t gregset_t[NGREG]; + +typedef struct fpregset { + union { + double fp_dregs[NFPREG]; + struct { + float _fp_fregs; + unsigned _fp_pad; + } fp_fregs[NFPREG]; + } fp_r; +} fpregset_t; + +typedef struct { + unsigned regmask; + unsigned status; + greg_t pc; + gregset_t gregs; + fpregset_t fpregs; + unsigned fp_owned; + unsigned fpc_csr; + unsigned fpc_eir; + unsigned used_math; + unsigned dsp; + greg_t mdhi; + greg_t mdlo; + unsigned long hi1; + unsigned long lo1; + unsigned long hi2; + unsigned long lo2; + unsigned long hi3; + unsigned long lo3; +} mcontext_t; + +typedef struct ucontext { + unsigned long uc_flags; + struct ucontext* uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; +} ucontext_t; + +#elif defined(__mips64__) + +#error TODO + +#elif defined(__x86_64__) + +enum { + REG_R8 = 0, + REG_R9, + REG_R10, + REG_R11, + REG_R12, + REG_R13, + REG_R14, + REG_R15, + REG_RDI, + REG_RSI, + REG_RBP, + REG_RBX, + REG_RDX, + REG_RAX, + REG_RCX, + REG_RSP, + REG_RIP, + REG_EFL, + REG_CSGSFS, + REG_ERR, + REG_TRAPNO, + REG_OLDMASK, + REG_CR2, + NGREG +}; + +typedef long greg_t; +typedef greg_t gregset_t[NGREG]; + +typedef struct user_i387_struct* fpregset_t; + +typedef struct { + gregset_t gregs; + fpregset_t fpregs; + /* TODO: reserved space? */ +} mcontext_t; + +typedef struct ucontext { + unsigned long uc_flags; + struct ucontext* uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; + /* TODO: __fpregs_mem? */ +} ucontext_t; + +#endif + +__END_DECLS + +#endif /* _SYS_UCONTEXT_H_ */ diff --git a/9/platforms/android-19/arch-arm64/usr/include/sys/user.h b/9/platforms/android-19/arch-arm64/usr/include/sys/user.h index 9f11a83..90cce80 100644 --- a/9/platforms/android-19/arch-arm64/usr/include/sys/user.h +++ b/9/platforms/android-19/arch-arm64/usr/include/sys/user.h @@ -181,7 +181,7 @@ struct user { #elif defined(__arm__) -struct user_fp { +struct user_fpregs { struct fp_reg { unsigned int sign1:1; unsigned int unused:15; @@ -196,6 +196,9 @@ struct user_fp { unsigned char ftype[8]; unsigned int init_flag; }; +struct user_regs { + unsigned long uregs[18]; +}; struct user_vfp { unsigned long long fpregs[32]; unsigned long fpscr; @@ -206,7 +209,7 @@ struct user_vfp_exc { unsigned long fpinst2; }; struct user { - struct pt_regs regs; + struct user_regs regs; int u_fpvalid; unsigned long int u_tsize; unsigned long int u_dsize; @@ -215,12 +218,12 @@ struct user { unsigned long start_stack; long int signal; int reserved; - unsigned long u_ar0; + struct user_regs* u_ar0; unsigned long magic; char u_comm[32]; int u_debugreg[8]; - struct user_fp u_fp; - struct user_fp_struct* u_fp0; + struct user_fpregs u_fp; + struct user_fpregs* u_fp0; }; #elif defined(__aarch64__) diff --git a/9/platforms/android-19/arch-arm64/usr/include/ucontext.h b/9/platforms/android-19/arch-arm64/usr/include/ucontext.h new file mode 100644 index 0000000..5ea2982 --- /dev/null +++ b/9/platforms/android-19/arch-arm64/usr/include/ucontext.h @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2014 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. + */ + +#ifndef _UCONTEXT_H_ +#define _UCONTEXT_H_ + +#include <sys/ucontext.h> + +#endif /* _UCONTEXT_H_ */ diff --git a/9/platforms/android-19/arch-x86_64/usr/include/fcntl.h b/9/platforms/android-19/arch-x86_64/usr/include/fcntl.h index f6a89ef..b7b91f2 100644 --- a/9/platforms/android-19/arch-x86_64/usr/include/fcntl.h +++ b/9/platforms/android-19/arch-x86_64/usr/include/fcntl.h @@ -41,11 +41,15 @@ __BEGIN_DECLS #define O_ASYNC FASYNC #endif -extern int open(const char* path, int mode, ...); -extern int openat(int fd, const char* path, int mode, ...); -extern int unlinkat(int dirfd, const char *pathname, int flags); -extern int fcntl(int fd, int command, ...); -extern int creat(const char* path, mode_t mode); +extern int creat(const char*, mode_t); +extern int fallocate64(int, int, off64_t, off64_t); +extern int fallocate(int, int, off_t, off_t); +extern int fcntl(int, int, ...); +extern int openat(int, const char*, int, ...); +extern int open(const char*, int, ...); +extern int posix_fallocate64(int, off64_t, off64_t); +extern int posix_fallocate(int, off_t, off_t); +extern int unlinkat(int, const char*, int); #if defined(__BIONIC_FORTIFY) diff --git a/9/platforms/android-19/arch-x86_64/usr/include/linux/binder.h b/9/platforms/android-19/arch-x86_64/usr/include/linux/binder.h index 1472382..02101ab 100644 --- a/9/platforms/android-19/arch-x86_64/usr/include/linux/binder.h +++ b/9/platforms/android-19/arch-x86_64/usr/include/linux/binder.h @@ -36,136 +36,155 @@ enum { FLAT_BINDER_FLAG_ACCEPTS_FDS = 0x100, }; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifdef BINDER_IPC_32BIT +typedef __u32 binder_size_t; +typedef __u32 binder_uintptr_t; +#else +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef __u64 binder_size_t; +typedef __u64 binder_uintptr_t; +#endif struct flat_binder_object { - unsigned long type; - unsigned long flags; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 type; + __u32 flags; union { + binder_uintptr_t binder; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - void __user *binder; - signed long handle; + __u32 handle; }; - void __user *cookie; -/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + binder_uintptr_t cookie; }; -struct binder_write_read { - signed long write_size; - signed long write_consumed; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - unsigned long write_buffer; - signed long read_size; - signed long read_consumed; - unsigned long read_buffer; +struct binder_write_read { + binder_size_t write_size; + binder_size_t write_consumed; + binder_uintptr_t write_buffer; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + binder_size_t read_size; + binder_size_t read_consumed; + binder_uintptr_t read_buffer; }; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ struct binder_version { - signed long protocol_version; + __s32 protocol_version; }; +#ifdef BINDER_IPC_32BIT /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ #define BINDER_CURRENT_PROTOCOL_VERSION 7 +#else +#define BINDER_CURRENT_PROTOCOL_VERSION 8 +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ #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, size_t) -/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define BINDER_SET_MAX_THREADS _IOW('b', 5, __u32) #define BINDER_SET_IDLE_PRIORITY _IOW('b', 6, __s32) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ #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) -/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ enum transaction_flags { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ TF_ONE_WAY = 0x01, TF_ROOT_OBJECT = 0x04, TF_STATUS_CODE = 0x08, -/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ TF_ACCEPT_FDS = 0x10, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ }; struct binder_transaction_data { union { + __u32 handle; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - size_t handle; - void *ptr; + binder_uintptr_t ptr; } target; - void *cookie; + binder_uintptr_t cookie; + __u32 code; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - unsigned int code; - unsigned int flags; + __u32 flags; pid_t sender_pid; uid_t sender_euid; + binder_size_t data_size; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - size_t data_size; - size_t offsets_size; + binder_size_t offsets_size; union { struct { + binder_uintptr_t buffer; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - const void __user *buffer; - const void __user *offsets; + binder_uintptr_t offsets; } ptr; - uint8_t buf[8]; -/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u8 buf[8]; } data; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ }; struct binder_ptr_cookie { - void *ptr; + binder_uintptr_t ptr; + binder_uintptr_t cookie; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - void *cookie; }; +struct binder_handle_cookie { + __u32 handle; + binder_uintptr_t cookie; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +} __attribute__((packed)); struct binder_pri_desc { - int priority; + __s32 priority; + __u32 desc; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - int desc; }; struct binder_pri_ptr_cookie { - int priority; + __s32 priority; + binder_uintptr_t ptr; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - void *ptr; - void *cookie; + binder_uintptr_t cookie; }; enum binder_driver_return_protocol { + BR_ERROR = _IOR('r', 0, __s32), /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - BR_ERROR = _IOR('r', 0, int), BR_OK = _IO('r', 1), 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), /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - BR_ACQUIRE_RESULT = _IOR('r', 4, int), BR_DEAD_REPLY = _IO('r', 5), BR_TRANSACTION_COMPLETE = _IO('r', 6), BR_INCREFS = _IOR('r', 7, struct binder_ptr_cookie), -/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ BR_ACQUIRE = _IOR('r', 8, struct binder_ptr_cookie), +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 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), -/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ BR_NOOP = _IO('r', 12), +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ BR_SPAWN_LOOPER = _IO('r', 13), BR_FINISHED = _IO('r', 14), - BR_DEAD_BINDER = _IOR('r', 15, void *), + BR_DEAD_BINDER = _IOR('r', 15, binder_uintptr_t), + BR_CLEAR_DEATH_NOTIFICATION_DONE = _IOR('r', 16, binder_uintptr_t), /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - BR_CLEAR_DEATH_NOTIFICATION_DONE = _IOR('r', 16, void *), BR_FAILED_REPLY = _IO('r', 17), }; enum binder_driver_command_protocol { -/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ BC_TRANSACTION = _IOW('c', 0, struct binder_transaction_data), - BC_REPLY = _IOW('c', 1, struct binder_transaction_data), - BC_ACQUIRE_RESULT = _IOW('c', 2, int), - BC_FREE_BUFFER = _IOW('c', 3, int), /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - BC_INCREFS = _IOW('c', 4, int), - BC_ACQUIRE = _IOW('c', 5, int), - BC_RELEASE = _IOW('c', 6, int), - BC_DECREFS = _IOW('c', 7, int), + 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), /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + 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), +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 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), -/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ BC_ENTER_LOOPER = _IO('c', 12), +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ BC_EXIT_LOOPER = _IO('c', 13), - BC_REQUEST_DEATH_NOTIFICATION = _IOW('c', 14, struct binder_ptr_cookie), - BC_CLEAR_DEATH_NOTIFICATION = _IOW('c', 15, struct binder_ptr_cookie), + 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), /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ - BC_DEAD_BINDER_DONE = _IOW('c', 16, void *), }; #endif diff --git a/9/platforms/android-19/arch-x86_64/usr/include/sys/cdefs.h b/9/platforms/android-19/arch-x86_64/usr/include/sys/cdefs.h index 7c8f7bf..1f7cfc8 100644 --- a/9/platforms/android-19/arch-x86_64/usr/include/sys/cdefs.h +++ b/9/platforms/android-19/arch-x86_64/usr/include/sys/cdefs.h @@ -546,7 +546,7 @@ #define __bos0(s) __builtin_object_size((s), 0) #define __BIONIC_FORTIFY_INLINE \ - extern inline \ + extern __inline__ \ __attribute__ ((always_inline)) \ __attribute__ ((gnu_inline)) #endif diff --git a/9/platforms/android-19/arch-x86_64/usr/include/sys/ucontext.h b/9/platforms/android-19/arch-x86_64/usr/include/sys/ucontext.h new file mode 100644 index 0000000..94b7a68 --- /dev/null +++ b/9/platforms/android-19/arch-x86_64/usr/include/sys/ucontext.h @@ -0,0 +1,261 @@ +/* + * Copyright (C) 2014 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. + */ + +#ifndef _SYS_UCONTEXT_H_ +#define _SYS_UCONTEXT_H_ + +#include <signal.h> +#include <sys/user.h> + +__BEGIN_DECLS + +#if defined(__arm__) + +enum { + REG_R0 = 0, + REG_R1, + REG_R2, + REG_R3, + REG_R4, + REG_R5, + REG_R6, + REG_R7, + REG_R8, + REG_R9, + REG_R10, + REG_R11, + REG_R12, + REG_R13, + REG_R14, + REG_R15, +}; + +#define NGREG 18 /* Like glibc. */ + +typedef int greg_t; +typedef greg_t gregset_t[NGREG]; + +/* TODO: fpregset_t. */ + +#include <asm/sigcontext.h> +typedef struct sigcontext mcontext_t; + +typedef struct ucontext { + unsigned long uc_flags; + struct ucontext* uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; + /* TODO: uc_regspace */ +} ucontext_t; + +#elif defined(__aarch64__) + +/* TODO: gregset_t and fpregset_t. */ + +#include <asm/sigcontext.h> +typedef struct sigcontext mcontext_t; + +typedef struct ucontext { + unsigned long uc_flags; + struct ucontext *uc_link; + stack_t uc_stack; + sigset_t uc_sigmask; + mcontext_t uc_mcontext; +} ucontext_t; + +#elif defined(__i386__) + +enum { + REG_GS = 0, + REG_FS, + REG_ES, + REG_DS, + REG_EDI, + REG_ESI, + REG_EBP, + REG_ESP, + REG_EBX, + REG_EDX, + REG_ECX, + REG_EAX, + REG_TRAPNO, + REG_ERR, + REG_EIP, + REG_CS, + REG_EFL, + REG_UESP, + REG_SS, + NGREG +}; + +typedef int greg_t; +typedef greg_t gregset_t[NGREG]; + +struct _libc_fpreg { + unsigned short significand[4]; + unsigned short exponent; +}; + +struct _libc_fpstate { + unsigned long cw; + unsigned long sw; + unsigned long tag; + unsigned long ipoff; + unsigned long cssel; + unsigned long dataoff; + unsigned long datasel; + struct _libc_fpreg _st[8]; + unsigned long status; +}; + +typedef struct _libc_fpstate* fpregset_t; + +typedef struct { + gregset_t gregs; + fpregset_t fpregs; + unsigned long oldmask; + unsigned long cr2; +} mcontext_t; + +typedef struct ucontext { + unsigned long uc_flags; + struct ucontext* uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; + /* TODO: __fpregs_mem? */ +} ucontext_t; + +#elif defined(__mips__) + +/* glibc doesn't have names for MIPS registers. */ + +#define NGREG 32 +#define NFPREG 32 + +typedef unsigned long long greg_t; +typedef greg_t gregset_t[NGREG]; + +typedef struct fpregset { + union { + double fp_dregs[NFPREG]; + struct { + float _fp_fregs; + unsigned _fp_pad; + } fp_fregs[NFPREG]; + } fp_r; +} fpregset_t; + +typedef struct { + unsigned regmask; + unsigned status; + greg_t pc; + gregset_t gregs; + fpregset_t fpregs; + unsigned fp_owned; + unsigned fpc_csr; + unsigned fpc_eir; + unsigned used_math; + unsigned dsp; + greg_t mdhi; + greg_t mdlo; + unsigned long hi1; + unsigned long lo1; + unsigned long hi2; + unsigned long lo2; + unsigned long hi3; + unsigned long lo3; +} mcontext_t; + +typedef struct ucontext { + unsigned long uc_flags; + struct ucontext* uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; +} ucontext_t; + +#elif defined(__mips64__) + +#error TODO + +#elif defined(__x86_64__) + +enum { + REG_R8 = 0, + REG_R9, + REG_R10, + REG_R11, + REG_R12, + REG_R13, + REG_R14, + REG_R15, + REG_RDI, + REG_RSI, + REG_RBP, + REG_RBX, + REG_RDX, + REG_RAX, + REG_RCX, + REG_RSP, + REG_RIP, + REG_EFL, + REG_CSGSFS, + REG_ERR, + REG_TRAPNO, + REG_OLDMASK, + REG_CR2, + NGREG +}; + +typedef long greg_t; +typedef greg_t gregset_t[NGREG]; + +typedef struct user_i387_struct* fpregset_t; + +typedef struct { + gregset_t gregs; + fpregset_t fpregs; + /* TODO: reserved space? */ +} mcontext_t; + +typedef struct ucontext { + unsigned long uc_flags; + struct ucontext* uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; + /* TODO: __fpregs_mem? */ +} ucontext_t; + +#endif + +__END_DECLS + +#endif /* _SYS_UCONTEXT_H_ */ diff --git a/9/platforms/android-19/arch-x86_64/usr/include/sys/user.h b/9/platforms/android-19/arch-x86_64/usr/include/sys/user.h index 9f11a83..90cce80 100644 --- a/9/platforms/android-19/arch-x86_64/usr/include/sys/user.h +++ b/9/platforms/android-19/arch-x86_64/usr/include/sys/user.h @@ -181,7 +181,7 @@ struct user { #elif defined(__arm__) -struct user_fp { +struct user_fpregs { struct fp_reg { unsigned int sign1:1; unsigned int unused:15; @@ -196,6 +196,9 @@ struct user_fp { unsigned char ftype[8]; unsigned int init_flag; }; +struct user_regs { + unsigned long uregs[18]; +}; struct user_vfp { unsigned long long fpregs[32]; unsigned long fpscr; @@ -206,7 +209,7 @@ struct user_vfp_exc { unsigned long fpinst2; }; struct user { - struct pt_regs regs; + struct user_regs regs; int u_fpvalid; unsigned long int u_tsize; unsigned long int u_dsize; @@ -215,12 +218,12 @@ struct user { unsigned long start_stack; long int signal; int reserved; - unsigned long u_ar0; + struct user_regs* u_ar0; unsigned long magic; char u_comm[32]; int u_debugreg[8]; - struct user_fp u_fp; - struct user_fp_struct* u_fp0; + struct user_fpregs u_fp; + struct user_fpregs* u_fp0; }; #elif defined(__aarch64__) diff --git a/9/platforms/android-19/arch-x86_64/usr/include/ucontext.h b/9/platforms/android-19/arch-x86_64/usr/include/ucontext.h new file mode 100644 index 0000000..5ea2982 --- /dev/null +++ b/9/platforms/android-19/arch-x86_64/usr/include/ucontext.h @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2014 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. + */ + +#ifndef _UCONTEXT_H_ +#define _UCONTEXT_H_ + +#include <sys/ucontext.h> + +#endif /* _UCONTEXT_H_ */ |