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

Unified Diff: src/include/nacl/nacl_signal.h

Issue 1212613002: Non-SFI mode: Add Linux asynchronous signal support (Closed) Base URL: https://chromium.googlesource.com/native_client/src/native_client.git@master
Patch Set: Created 5 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: src/include/nacl/nacl_signal.h
diff --git a/src/include/nacl/nacl_signal.h b/src/include/nacl/nacl_signal.h
new file mode 100644
index 0000000000000000000000000000000000000000..0e285c806181e031f83590dd4c0bac8ad057e722
--- /dev/null
+++ b/src/include/nacl/nacl_signal.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2015 The Native Client Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+/*
+ * NaCl Async Signal Support
+ */
+
+#ifndef __NATIVE_CLIENT_SRC_SERVICE_RUNTIME_INCLUDE_SYS_NACL_SIGNAL_H__
+#define __NATIVE_CLIENT_SRC_SERVICE_RUNTIME_INCLUDE_SYS_NACL_SIGNAL_H__ 1
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+struct NaClExceptionContext;
+typedef void (*nacl_signal_handler_t)(struct NaClExceptionContext *context);
+
+/*
+ * Sets the global signal handler.
+ *
+ * NaCl applications can register a single, global signal handler that will be
+ * invoked on the thread that receives the signal. As opposed to POSIX, the
+ * signal mask is not changed upon entering/exiting the handler, so it is
+ * possible for the signal handler to be interrupted by itself, even on the same
+ * thread. Furthermore, the signal handler will run in the same thread in which
+ * the signal is delivered in the same stack. This function is not
+ * async-signal-safe, and should not be used within a signal handler.
+ * @return 0 on success. A positive errno value on error.
+ */
+int nacl_signal_set_handler(nacl_signal_handler_t handler);
+
+/*
+ * Asynchronously delivers a signal to a thread.
+ *
+ * This function delivers a signal to the thread identified by |tid| within the
+ * same thread group as the caller. This function requires
+ * |nacl_signal_set_handler| to be called first, otherwise it will fail with
+ * ESRCH. |tid| must be a valid thread identifier obtained when creating the
+ * thread, or 0 to refer to the main thread. Using an invalid |tid| will result
+ * in undefined behavior. This function is async-signal-safe, and can be used
+ * within a signal handler.
+ * @return 0 on success. A positive errno value on error.
+ */
+int nacl_signal_send_async_signal(uintptr_t tid);
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __NATIVE_CLIENT_SRC_SERVICE_RUNTIME_INCLUDE_SYS_NACL_SIGNAL_H__ */
« no previous file with comments | « SConstruct ('k') | src/nonsfi/irt/irt.gyp » ('j') | src/nonsfi/irt/irt_interfaces.c » ('J')

Powered by Google App Engine
This is Rietveld 408576698