diff options
Diffstat (limited to 'sandbox/linux/services/android_arm_ucontext.h')
-rw-r--r-- | sandbox/linux/services/android_arm_ucontext.h | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/sandbox/linux/services/android_arm_ucontext.h b/sandbox/linux/services/android_arm_ucontext.h index 0c21e20..c4d748e 100644 --- a/sandbox/linux/services/android_arm_ucontext.h +++ b/sandbox/linux/services/android_arm_ucontext.h @@ -5,10 +5,20 @@ #ifndef SANDBOX_LINUX_SERVICES_ANDROID_ARM_UCONTEXT_H_ #define SANDBOX_LINUX_SERVICES_ANDROID_ARM_UCONTEXT_H_ +#if !defined(__BIONIC_HAVE_UCONTEXT_T) #include <asm/sigcontext.h> -typedef long int greg_t; -typedef unsigned long sigset_t; +// We also need greg_t for the sandbox, include it in this header as well. +typedef unsigned long greg_t; + +// sigset_t from arch/arm/include/asm/signal.h in the Linux kernel. +typedef struct { + unsigned long sig[64 / 8 / sizeof(long)]; // Always 64 bits (yes we assume + // 8 bits per char). +} android_header_sigset_t; // Change name to avoid collissions if sigset_t + // gets defined in newer Android headers. + +//typedef unsigned long sigset_t; typedef struct ucontext { unsigned long uc_flags; struct ucontext *uc_link; @@ -16,9 +26,14 @@ typedef struct ucontext { struct sigcontext uc_mcontext; sigset_t uc_sigmask; /* Allow for uc_sigmask growth. Glibc uses a 1024-bit sigset_t. */ - int __not_used[32 - (sizeof (sigset_t) / sizeof (int))]; + int __not_used[32 - (sizeof (android_header_sigset_t) / sizeof (int))]; /* Last for extensibility. Eight byte aligned because some coprocessors require eight byte alignment. */ unsigned long uc_regspace[128] __attribute__((__aligned__(8))); } ucontext_t; + +#else +#include <sys/ucontext.h> +#endif // __BIONIC_HAVE_UCONTEXT_T + #endif // SANDBOX_LINUX_SERVICES_ANDROID_ARM_UCONTEXT_H_ |