|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Embedded-pv-devel] [PATCH RFC 07/18] tools/misc: Modify Xen watchdog daemon
From: Viktor Kleinik <viktor.kleinik@xxxxxxxxxxxxxxx>
This change allows watchdog daemon to work thru watchdog device
on the file system.
Signed-off-by: Viktor Kleinik <viktor.kleinik@xxxxxxxxxxxxxxx>
---
tools/misc/xenwatchdogd.c | 52 +++++++++++------------------------------------
1 file changed, 12 insertions(+), 40 deletions(-)
diff --git a/tools/misc/xenwatchdogd.c b/tools/misc/xenwatchdogd.c
index 254117b..4b27628 100644
--- a/tools/misc/xenwatchdogd.c
+++ b/tools/misc/xenwatchdogd.c
@@ -1,17 +1,17 @@
-
#include <err.h>
#include <limits.h>
-#include "xenctrl.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
-#include <signal.h>
#include <stdio.h>
+#include <sys/ioctl.h>
+#include <linux/watchdog.h>
+
+#define DEV_NAME "/dev/watchdog"
-xc_interface *h;
-int id = 0;
+int fd = -1;
void daemonize(void)
{
@@ -36,20 +36,6 @@ void daemonize(void)
err(1, "reopen stderr");
}
-void catch_exit(int sig)
-{
- if (id)
- xc_watchdog(h, id, 300);
- exit(0);
-}
-
-void catch_usr1(int sig)
-{
- if (id)
- xc_watchdog(h, id, 0);
- exit(0);
-}
-
int main(int argc, char **argv)
{
int t, s;
@@ -60,9 +46,9 @@ int main(int argc, char **argv)
daemonize();
- h = xc_interface_open(NULL, NULL, 0);
- if (h == NULL)
- err(1, "xc_interface_open");
+ fd = open(DEV_NAME, O_RDWR);
+ if (fd < 0)
+ err(1, "xenwatchdogd: Failed to open %s\n", DEV_NAME);
t = strtoul(argv[1], NULL, 0);
if (t == ULONG_MAX)
@@ -75,25 +61,11 @@ int main(int argc, char **argv)
err(1, "strtoul");
}
- if (signal(SIGHUP, &catch_exit) == SIG_ERR)
- err(1, "signal");
- if (signal(SIGINT, &catch_exit) == SIG_ERR)
- err(1, "signal");
- if (signal(SIGQUIT, &catch_exit) == SIG_ERR)
- err(1, "signal");
- if (signal(SIGTERM, &catch_exit) == SIG_ERR)
- err(1, "signal");
- if (signal(SIGUSR1, &catch_usr1) == SIG_ERR)
- err(1, "signal");
-
- id = xc_watchdog(h, 0, t);
- if (id <= 0)
- err(1, "xc_watchdog setup");
-
for (;;) {
+ ret = ioctl(fd, WDIOC_KEEPALIVE);
+ if (ret)
+ err(1, "xenwatchdogd: Failed to kick watchdog\n");
+
sleep(s);
- ret = xc_watchdog(h, id, t);
- if (ret != 0)
- err(1, "xc_watchdog");
}
}
--
2.8.2
_______________________________________________
Embedded-pv-devel mailing list
Embedded-pv-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/embedded-pv-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |