OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef SANDBOX_LINUX_SERVICES_ANDROID_ARM_UCONTEXT_H_ | 5 #ifndef SANDBOX_LINUX_SERVICES_ANDROID_ARM_UCONTEXT_H_ |
6 #define SANDBOX_LINUX_SERVICES_ANDROID_ARM_UCONTEXT_H_ | 6 #define SANDBOX_LINUX_SERVICES_ANDROID_ARM_UCONTEXT_H_ |
7 | 7 |
8 #if !defined(__BIONIC_HAVE_UCONTEXT_T) | 8 #if !defined(__BIONIC_HAVE_UCONTEXT_T) |
9 #include <asm/sigcontext.h> | 9 #include <asm/sigcontext.h> |
10 | 10 |
11 // We also need greg_t for the sandbox, include it in this header as well. | 11 // We also need greg_t for the sandbox, include it in this header as well. |
12 typedef unsigned long greg_t; | 12 typedef unsigned long greg_t; |
13 | 13 |
14 // sigset_t from arch/arm/include/asm/signal.h in the Linux kernel. | |
15 typedef struct { | |
16 unsigned long sig[64 / 8 / sizeof(long)]; // Always 64 bits (yes we assume | |
17 // 8 bits per char). | |
18 } android_header_sigset_t; // Change name to avoid collissions if sigset_t | |
19 // gets defined in newer Android headers. | |
20 | |
21 //typedef unsigned long sigset_t; | 14 //typedef unsigned long sigset_t; |
22 typedef struct ucontext { | 15 typedef struct ucontext { |
23 unsigned long uc_flags; | 16 unsigned long uc_flags; |
24 struct ucontext *uc_link; | 17 struct ucontext *uc_link; |
25 stack_t uc_stack; | 18 stack_t uc_stack; |
26 struct sigcontext uc_mcontext; | 19 struct sigcontext uc_mcontext; |
27 sigset_t uc_sigmask; | 20 sigset_t uc_sigmask; |
28 /* Allow for uc_sigmask growth. Glibc uses a 1024-bit sigset_t. */ | 21 /* Allow for uc_sigmask growth. Glibc uses a 1024-bit sigset_t. */ |
29 int __not_used[32 - (sizeof (android_header_sigset_t) / sizeof (int))]; | 22 int __not_used[32 - (sizeof (sigset_t) / sizeof (int))]; |
30 /* Last for extensibility. Eight byte aligned because some | 23 /* Last for extensibility. Eight byte aligned because some |
31 coprocessors require eight byte alignment. */ | 24 coprocessors require eight byte alignment. */ |
32 unsigned long uc_regspace[128] __attribute__((__aligned__(8))); | 25 unsigned long uc_regspace[128] __attribute__((__aligned__(8))); |
33 } ucontext_t; | 26 } ucontext_t; |
34 | 27 |
35 #else | 28 #else |
36 #include <sys/ucontext.h> | 29 #include <sys/ucontext.h> |
37 #endif // __BIONIC_HAVE_UCONTEXT_T | 30 #endif // __BIONIC_HAVE_UCONTEXT_T |
38 | 31 |
39 #endif // SANDBOX_LINUX_SERVICES_ANDROID_ARM_UCONTEXT_H_ | 32 #endif // SANDBOX_LINUX_SERVICES_ANDROID_ARM_UCONTEXT_H_ |
OLD | NEW |