You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2020/09/11 02:41:36 UTC

[incubator-nuttx] 03/03: signal: add SIGQUIT & SIGTERM support

This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit f428160dcc44b39774c6f36810a979de4ff88f24
Author: ligd <li...@xiaomi.com>
AuthorDate: Tue Jul 14 11:21:03 2020 +0800

    signal: add SIGQUIT & SIGTERM support
    
    SIGQUIT SIGTERM are equal with SIGINT now
    
    Change-Id: Iefc084d58db28003dc40a17f1ff3fbd7a0b716ed
---
 include/signal.h                 |  2 ++
 libs/libc/string/lib_strsignal.c | 10 ++++++++++
 sched/Kconfig                    | 18 +++++++++++++++++-
 sched/signal/sig_default.c       |  2 ++
 4 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/include/signal.h b/include/signal.h
index 5697bbb..1846df2 100644
--- a/include/signal.h
+++ b/include/signal.h
@@ -175,6 +175,8 @@
 #ifdef CONFIG_SIG_SIGKILL_ACTION
 #  define SIGKILL     CONFIG_SIG_KILL
 #  define SIGINT      CONFIG_SIG_INT
+#  define SIGQUIT     CONFIG_SIG_QUIT
+#  define SIGTERM     CONFIG_SIG_TERM
 #endif
 
 #ifndef CONFIG_SIG_SIGPIPE
diff --git a/libs/libc/string/lib_strsignal.c b/libs/libc/string/lib_strsignal.c
index 53b3b54..9b8b3e1 100644
--- a/libs/libc/string/lib_strsignal.c
+++ b/libs/libc/string/lib_strsignal.c
@@ -163,6 +163,16 @@ FAR char *strsignal(int signum)
         return (FAR char *)"SIGINT";
 #endif
 
+#ifdef SIGQUIT
+      case SIGQUIT:
+        return (FAR char *)"SIGQUIT";
+#endif
+
+#ifdef SIGTERM
+      case SIGTERM:
+        return (FAR char *)"SIGTERM";
+#endif
+
       /* Non-standard signals */
 
 #ifdef SIGCONDTIMEDOUT
diff --git a/sched/Kconfig b/sched/Kconfig
index 1c94c69..f2cb415 100644
--- a/sched/Kconfig
+++ b/sched/Kconfig
@@ -1353,7 +1353,7 @@ config SIG_SIGSTOP_ACTION
 		task) and SIGCONT (resume the task).
 
 config SIG_SIGKILL_ACTION
-	bool "SIGINT and SIGKILL"
+	bool "SIGINT SIGKILL SIGQUIT and SIGTERM"
 	default y
 	---help---
 		Enable the default action for SIGINT and SIGKILL (terminate the
@@ -1449,6 +1449,22 @@ config SIG_INT
 		The SIGINT signal is sent to cause a task termination event.
 		SIGINT may be ignored or caught by the receiving task.
 
+config SIG_QUIT
+	int "SIGQUIT"
+	default 11
+	depends on SIG_SIGKILL_ACTION
+	---help---
+		The SIGINT signal is sent to cause a task termination event.
+		SIGQUIT may be ignored or caught by the receiving task.
+
+config SIG_TERM
+	int "SIGTERM"
+	default 12
+	depends on SIG_SIGKILL_ACTION
+	---help---
+		The SIGINT signal is sent to cause a task termination event.
+		SIGTERM may be ignored or caught by the receiving task.
+
 endif # SIG_DEFAULT
 
 config SIG_PIPE
diff --git a/sched/signal/sig_default.c b/sched/signal/sig_default.c
index 70a2238..5dd018a 100644
--- a/sched/signal/sig_default.c
+++ b/sched/signal/sig_default.c
@@ -140,6 +140,8 @@ static const struct nxsig_defaction_s g_defactions[] =
 #ifdef CONFIG_SIG_SIGKILL_ACTION
   { SIGINT,  0,                nxsig_abnormal_termination },
   { SIGKILL, SIG_FLAG_NOCATCH, nxsig_abnormal_termination },
+  { SIGQUIT, 0,                nxsig_abnormal_termination },
+  { SIGTERM, 0,                nxsig_abnormal_termination },
 #endif
 #ifdef CONFIG_SIG_SIGPIPE_ACTION
   { SIGPIPE, 0,                nxsig_abnormal_termination }