diff options
author | Petri Latvala <petri.latvala@intel.com> | 2017-10-30 13:04:37 +0200 |
---|---|---|
committer | Petri Latvala <petri.latvala@intel.com> | 2017-10-30 13:04:37 +0200 |
commit | e468e03dbe017e22b46a6d1a799648ce79718e9d (patch) | |
tree | 98b0f395e64cd5d6ef2288d7da83976f3d27dc32 | |
parent | 548cff4d89272ad95cc0f90cfc9adee44f77c477 (diff) |
owatch: Catch all (standard) signalsowatch-ng
Also print which one is killing us when killed by a signal.
Signed-off-by: Petri Latvala <petri.latvala@intel.com>
-rw-r--r-- | utils/owatch/owatch.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/utils/owatch/owatch.c b/utils/owatch/owatch.c index aef7f5e..9eeb9f2 100644 --- a/utils/owatch/owatch.c +++ b/utils/owatch/owatch.c @@ -89,9 +89,9 @@ void init_wd() /* make sure the watchdog are closed when exiting */ atexit(wd_close_atexit); - signal(SIGTERM, wd_close); - signal(SIGINT, wd_close); - signal(SIGQUIT, wd_close); + for (i = 1; i <= 15; ++i) { + signal(i, wd_close); + } } int wd_settimeout(int timeout) @@ -149,6 +149,7 @@ void wd_heartbeat() void wd_close(int signal) { int i; + char buf[255]; for (i = 0; i < NUM_WDS; ++i) { if (_watchdogfd[i] < 0) @@ -160,6 +161,18 @@ void wd_close(int signal) if (!signal) log_msg("/dev/watchdog%d closed\n", i); } + + if (signal) { + strcpy(buf, "owatch: killed by signal "); + i = strlen(buf); + if (signal >= 10) { + buf[i++] = '0' + signal / 10; + } + buf[i++] = '0' + signal % 10; + buf[i++] = '\n'; + buf[i] = '\0'; + write(2, buf, i); + } } void wd_close_atexit() |