X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fprocd.git;a=blobdiff_plain;f=watchdog.c;h=399f6af7f1a9cff0be7d91dcdcb9e1d63e1b4ea7;hp=d927c53f42672734bd63706f46a5a7ddaa8c4aa4;hb=2c8176385a4f62b536303912ba508b9dc7931fad;hpb=36d79a90c28ac9d655ccd8261b3ac0b497a5aec1 diff --git a/watchdog.c b/watchdog.c index d927c53..399f6af 100644 --- a/watchdog.c +++ b/watchdog.c @@ -34,7 +34,7 @@ static int wdt_frequency = 5; static void watchdog_timeout_cb(struct uloop_timeout *t) { - DEBUG(2, "Ping\n"); + DEBUG(4, "Ping\n"); if (write(wdt_fd, "X", 1) < 0) ERROR("WDT failed to write: %s\n", strerror(errno)); uloop_timeout_set(t, wdt_frequency * 1000); @@ -59,7 +59,7 @@ int watchdog_timeout(int timeout) return 0; if (timeout) { - DEBUG(2, "Set watchdog timeout: %ds\n", timeout); + DEBUG(4, "Set watchdog timeout: %ds\n", timeout); ioctl(wdt_fd, WDIOC_SETTIMEOUT, &timeout); } ioctl(wdt_fd, WDIOC_GETTIMEOUT, &timeout); @@ -73,7 +73,7 @@ int watchdog_frequency(int frequency) return 0; if (frequency) { - DEBUG(2, "Set watchdog frequency: %ds\n", frequency); + DEBUG(4, "Set watchdog frequency: %ds\n", frequency); wdt_frequency = frequency; } @@ -100,7 +100,7 @@ void watchdog_init(int preinit) wdt_timeout.cb = watchdog_timeout_cb; if (env) { - DEBUG(1, "Watchdog handover: fd=%s\n", env); + DEBUG(2, "Watchdog handover: fd=%s\n", env); wdt_fd = atoi(env); unsetenv("WDTFD"); } else { @@ -117,5 +117,14 @@ void watchdog_init(int preinit) watchdog_timeout(30); watchdog_timeout_cb(&wdt_timeout); - DEBUG(2, "Opened watchdog with timeout %ds\n", watchdog_timeout(0)); + DEBUG(4, "Opened watchdog with timeout %ds\n", watchdog_timeout(0)); +} + + +void watchdog_no_cloexec(void) +{ + if (wdt_fd < 0) + return; + + fcntl(wdt_fd, F_SETFD, fcntl(wdt_fd, F_GETFD) & ~FD_CLOEXEC); }