diff options
Diffstat (limited to 'meta-phosphor/common/recipes-core/systemd/systemd/0001-watchdog-allow-a-device-path-to-be-specified.patch')
-rw-r--r-- | meta-phosphor/common/recipes-core/systemd/systemd/0001-watchdog-allow-a-device-path-to-be-specified.patch | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/meta-phosphor/common/recipes-core/systemd/systemd/0001-watchdog-allow-a-device-path-to-be-specified.patch b/meta-phosphor/common/recipes-core/systemd/systemd/0001-watchdog-allow-a-device-path-to-be-specified.patch new file mode 100644 index 000000000..7dddd6172 --- /dev/null +++ b/meta-phosphor/common/recipes-core/systemd/systemd/0001-watchdog-allow-a-device-path-to-be-specified.patch @@ -0,0 +1,73 @@ +From 9d1f2858cd2ba49066ca319164b4e3e2769fc0fb Mon Sep 17 00:00:00 2001 +From: "Edward A. James" <eajames@us.ibm.com> +Date: Fri, 8 Dec 2017 11:26:30 -0600 +Subject: [PATCH 1/3] watchdog: allow a device path to be specified + +Currently systemd hardcodes the use of /dev/watchdog. This is a legacy +chardev that points to watchdog0 in the system. + +Modify the watchdog API to allow a different device path to be passed +and stored. Opening the watchdog defaults to /dev/watchdog, maintaining +existing behavior. +--- + src/shared/watchdog.c | 9 ++++++++- + src/shared/watchdog.h | 5 +++++ + 2 files changed, 13 insertions(+), 1 deletion(-) + +diff --git a/src/shared/watchdog.c b/src/shared/watchdog.c +index 4f3e012..8068e95 100644 +--- a/src/shared/watchdog.c ++++ b/src/shared/watchdog.c +@@ -26,10 +26,12 @@ + + #include "fd-util.h" + #include "log.h" ++#include "string-util.h" + #include "time-util.h" + #include "watchdog.h" + + static int watchdog_fd = -1; ++static char *watchdog_device = NULL; + static usec_t watchdog_timeout = USEC_INFINITY; + + static int update_timeout(void) { +@@ -83,7 +85,8 @@ static int open_watchdog(void) { + if (watchdog_fd >= 0) + return 0; + +- watchdog_fd = open("/dev/watchdog", O_WRONLY|O_CLOEXEC); ++ watchdog_fd = open(watchdog_device ?: "/dev/watchdog", ++ O_WRONLY|O_CLOEXEC); + if (watchdog_fd < 0) + return -errno; + +@@ -95,6 +98,10 @@ static int open_watchdog(void) { + return update_timeout(); + } + ++int watchdog_set_device(char *path) { ++ return free_and_strdup(&watchdog_device, path); ++} ++ + int watchdog_set_timeout(usec_t *usec) { + int r; + +diff --git a/src/shared/watchdog.h b/src/shared/watchdog.h +index f6ec178..90a075a 100644 +--- a/src/shared/watchdog.h ++++ b/src/shared/watchdog.h +@@ -24,6 +24,11 @@ + #include "time-util.h" + #include "util.h" + ++int watchdog_set_device(char *path); + int watchdog_set_timeout(usec_t *usec); + int watchdog_ping(void); + void watchdog_close(bool disarm); ++ ++static inline void watchdog_free_device(void) { ++ (void) watchdog_set_device(NULL); ++} +-- +1.8.3.1 + |