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

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: Fixed a small window where signals could corrupt the stack Created 5 years, 5 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
+
Mark Seaborn 2015/07/16 23:21:16 For documentation, could you add a text file in do
Luis Héctor Chávez 2015/07/20 18:13:46 Done.
+struct NaClExceptionContext;
+typedef void (*nacl_signal_handler_t)(struct NaClExceptionContext *context);
+
+/*
+ * Sets the global signal handler.
Mark Seaborn 2015/07/16 23:21:16 Generally, everywhere you say "signal" (in comment
Luis Héctor Chávez 2015/07/20 18:13:46 Merged the docs with unrusted/irt/irt.h
+ *
+ * NaCl applications can register a single, global signal handler that will be
Mark Seaborn 2015/07/16 23:21:16 These comments are duplicating those in irt.h. Ho
Luis Héctor Chávez 2015/07/20 18:13:46 Done.
+ * 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);
Mark Seaborn 2015/07/16 23:21:16 The way you've currently got these functions defin
Luis Héctor Chávez 2015/07/20 18:13:46 Done.
+
+/*
+ * 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