Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: src/include/nacl/nacl_exception.h

Issue 14876015: Add wrapper library for the nacl_irt_exception_handling IRT interface (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: Cleanup + remove minidump_generator.gyp for now because of pthread.h problem in Gyp build Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « site_scons/site_tools/library_deps.py ('k') | src/untrusted/crash_dump/untrusted_crash_dump.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The Native Client Authors. All rights reserved. 2 * Copyright (c) 2012 The Native Client Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be 3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file. 4 * found in the LICENSE file.
5 */ 5 */
6 6
7 /* 7 /*
8 * NaCl Exception Context 8 * NaCl Exception Context
9 */ 9 */
10 10
11 #ifndef __NATIVE_CLIENT_SRC_SERVICE_RUNTIME_INCLUDE_SYS_NACL_EXCEPTION_H__ 11 #ifndef __NATIVE_CLIENT_SRC_SERVICE_RUNTIME_INCLUDE_SYS_NACL_EXCEPTION_H__
12 #define __NATIVE_CLIENT_SRC_SERVICE_RUNTIME_INCLUDE_SYS_NACL_EXCEPTION_H__ 1 12 #define __NATIVE_CLIENT_SRC_SERVICE_RUNTIME_INCLUDE_SYS_NACL_EXCEPTION_H__ 1
13 13
14 #include <stdlib.h>
15
14 #if defined(__native_client__) 16 #if defined(__native_client__)
15 # include <stdint.h> 17 # include <stdint.h>
16 #else 18 #else
17 # include "native_client/src/include/portability.h" 19 # include "native_client/src/include/portability.h"
18 #endif 20 #endif
19 21
22 #if defined(__cplusplus)
23 extern "C" {
24 #endif
25
20 /* 26 /*
21 * NaClUserRegisterState is similar to NaClSignalContext except that: 27 * NaClUserRegisterState is similar to NaClSignalContext except that:
22 * 28 *
23 * - It does not contain x86 segment register state that we don't 29 * - It does not contain x86 segment register state that we don't
24 * want to report to untrusted code. 30 * want to report to untrusted code.
25 * 31 *
26 * - We provide all architectures' definitions side by side so that, 32 * - We provide all architectures' definitions side by side so that,
27 * for example, a multiarch crash dump processor can use these to 33 * for example, a multiarch crash dump processor can use these to
28 * interpret register state for all architectures. 34 * interpret register state for all architectures.
29 * 35 *
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 }; 232 };
227 233
228 #if defined(__native_client__) 234 #if defined(__native_client__)
229 static inline struct NaClExceptionPortableContext * 235 static inline struct NaClExceptionPortableContext *
230 nacl_exception_context_get_portable(struct NaClExceptionContext *context) { 236 nacl_exception_context_get_portable(struct NaClExceptionContext *context) {
231 return (struct NaClExceptionPortableContext *) 237 return (struct NaClExceptionPortableContext *)
232 ((uintptr_t) context + context->portable_context_offset); 238 ((uintptr_t) context + context->portable_context_offset);
233 } 239 }
234 #endif 240 #endif
235 241
242 typedef void (*nacl_exception_handler_t)(struct NaClExceptionContext *context);
243
244 /*
245 * The following functions return 0 on success or an errno value on
246 * failure.
247 */
248
249 /*
250 * Set the exception handler function. This applies to all threads in
251 * the process. In this regard, this API is similar to signal() or
252 * sigaction() in POSIX.
253 */
254 int nacl_exception_set_handler(nacl_exception_handler_t handler);
255
256 /*
257 * Set the stack that the exception handler will run on. This applies
258 * to the current thread only. This API is similar to sigaltstack()
259 * in POSIX.
260 */
261 int nacl_exception_set_stack(void *stack, size_t size);
262
263 /*
264 * Clear the current thread's exception flag.
265 *
266 * The purpose of the exception flag is to prevent the exception
267 * handler from being re-entered if an exception occurs while handling
268 * an exception. If an exception occurs on a thread while the
269 * thread's exception flag is set, the process is terminated. The
270 * exception flag is set when an exception occurs and the exception
271 * handler is invoked.
272 *
273 * The exception flag is similar to signal masks in POSIX.
274 * nacl_exception_clear_flag() is similar to sigprocmask() in POSIX.
275 */
276 int nacl_exception_clear_flag(void);
277
278 #if defined(__cplusplus)
279 }
280 #endif
281
236 #endif /* __NATIVE_CLIENT_SRC_SERVICE_RUNTIME_INCLUDE_SYS_NACL_EXCEPTION_H__ */ 282 #endif /* __NATIVE_CLIENT_SRC_SERVICE_RUNTIME_INCLUDE_SYS_NACL_EXCEPTION_H__ */
OLDNEW
« no previous file with comments | « site_scons/site_tools/library_deps.py ('k') | src/untrusted/crash_dump/untrusted_crash_dump.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698