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 }