summaryrefslogtreecommitdiffstats
path: root/chromium/docs/website/site/nativeclient/how-tos/exception-handling-interface/index.md
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/docs/website/site/nativeclient/how-tos/exception-handling-interface/index.md')
-rw-r--r--chromium/docs/website/site/nativeclient/how-tos/exception-handling-interface/index.md93
1 files changed, 0 insertions, 93 deletions
diff --git a/chromium/docs/website/site/nativeclient/how-tos/exception-handling-interface/index.md b/chromium/docs/website/site/nativeclient/how-tos/exception-handling-interface/index.md
deleted file mode 100644
index a0d49016546..00000000000
--- a/chromium/docs/website/site/nativeclient/how-tos/exception-handling-interface/index.md
+++ /dev/null
@@ -1,93 +0,0 @@
----
-breadcrumbs:
-- - /nativeclient
- - Native Client
-- - /nativeclient/how-tos
- - '2: How Tos'
-page_name: exception-handling-interface
-title: Exception Handling Interface
----
-
-## Introduction
-
-Hardware exceptions (invalid memory accesses, division by zero and etc) can not
-be caught in the standard C/C++. Different OS provide different mechanisms to
-catch hardware exception. POSIX standardizes hardware exception handling via
-signals. Native Client doesn't support signals but it provides somewhat similar
-interface. The main difference is that Native Client doesn't allow to resume
-execution from the failed instruction. Note, that exception handling is disabled
-for PNaCl because exception handling interface uses platform-dependent register
-context.
-
-## Retrieving Hardware Exception Handling Interface
-
-#include <irt.h>
-
-struct nacl_irt_exception_handling exception_handling_interface;
-
-size_t interface_size = nacl_interface_query(
-
-NACL_IRT_EXCEPTION_HANDLING_v0_1,
-
-&exception_handling_interface,
-
-sizeof(exception_handling_interface));
-
-if (interface_size != sizeof(exception_handling_interface)) {
-
-/\* error \*/
-
-}
-
-## Using nacl_exception Library
-
-An alternative way to access hardware exception handling interface is via
-nacl_exception library (it is part of libc). Add -lnacl_exception flag and use
-functions from `nacl/nacl_exception.h` header. They have the same parameters and
-their names are just prefixed with `nacl_exception`.
-
-## Handling Hardware Exceptions
-
-Hardware exception handlers are declared as
-
-`typedef void (*NaClExceptionHandler)(struct NaClExceptionContext *context);`
-
-in irt.h. They receive platform-dependent hardware exception context which
-contains the register state. This function should not return since there is
-nowhere to return to. Once exception handler is called, the exception handling
-is disabled on this thread. You must call
-
-`int exception_clear_flag(void);`
-
-if you need to reenable it (you want to handle hardware exceptions inside
-hardware exception handler for example). This function returns 0 on success and
-error code on error (exception handling is disabled). If hardware exception
-happens on a thread where exception handling is disabled, the whole NaCl process
-is terminated.
-
-The definition of `NaClExceptionContext` can be found in `nacl/nacl_exception.h`
-header.
-
-NaCl supports only one exception handler per process. The exception handler is
-set with
-
-`int exception_handler(NaClExceptionHandler handler,`
-
-` NaClExceptionHandler *old_handler);`
-
-This function returns 0 on success, or error code on error (exception handling
-is disabled, handler is not aligned to the bundle size or outside of code
-region, exception handler thread is failed to start). Old exception handler is
-returned via old_handler parameter. In order to disable exception handling, pass
-`NULL` exception handler.
-
-Exception handler is called on current thread stack by default. If you want to
-set alternative stack (to handle stack overflows for example) for exception
-handler, use
-
-`int exception_stack(void *stack, size_t size);`
-
-The alternative stack is set per thread. The function returns 0 on success and
-error code on error (stack location is outside of NaCl address space). If you
-want to disable alternative stack, call this function with `NULL` stack pointer
-and zero size. \ No newline at end of file