X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fprocd.git;a=blobdiff_plain;f=watchdog.c;h=d927c53f42672734bd63706f46a5a7ddaa8c4aa4;hp=e4b82f5a8fc2526b8b14954251ca3f3a4892a61d;hb=824a4b3da2c0be19ccf54a48dcd4c10677b82c1a;hpb=89eec0d61e15bd3c3cd83d24a17fa5894ae984c1 diff --git a/watchdog.c b/watchdog.c index e4b82f5..d927c53 100644 --- a/watchdog.c +++ b/watchdog.c @@ -91,10 +91,12 @@ char* watchdog_fd(void) return fd_buf; } -void watchdog_init(void) +void watchdog_init(int preinit) { char *env = getenv("WDTFD"); + if (wdt_fd >= 0) + return; wdt_timeout.cb = watchdog_timeout_cb; if (env) { @@ -104,9 +106,13 @@ void watchdog_init(void) } else { wdt_fd = open("/dev/watchdog", O_WRONLY); } + if (wdt_fd < 0) return; - fcntl(wdt_fd, F_SETFD, fcntl(wdt_fd, F_GETFD) | FD_CLOEXEC); + + if (!preinit) + fcntl(wdt_fd, F_SETFD, fcntl(wdt_fd, F_GETFD) | FD_CLOEXEC); + LOG("- watchdog -\n"); watchdog_timeout(30); watchdog_timeout_cb(&wdt_timeout);