diff options
author | John Crispin <blogic@openwrt.org> | 2013-07-10 14:10:39 +0200 |
---|---|---|
committer | John Crispin <blogic@openwrt.org> | 2013-07-11 00:29:42 +0200 |
commit | 89eec0d61e15bd3c3cd83d24a17fa5894ae984c1 (patch) | |
tree | d4818935574a82ad6df5bb691df3cefbb30b9fb3 | |
parent | 4d06f2e9c8ce792ac531d29d44386c4cea9128ff (diff) | |
download | unitd-89eec0d61e15bd3c3cd83d24a17fa5894ae984c1.tar unitd-89eec0d61e15bd3c3cd83d24a17fa5894ae984c1.zip |
fix up watchdog init code
Signed-off-by: John Crispin <blogic@openwrt.org>
-rw-r--r-- | state.c | 3 | ||||
-rw-r--r-- | watchdog.c | 7 |
2 files changed, 6 insertions, 4 deletions
@@ -46,6 +46,9 @@ static void state_enter(void) break; case STATE_INIT: + // check if the wdt appeared during coldplug + if (!watchdog_fd()) + watchdog_init(); LOG("- init -\n"); log_init(); procd_connect_ubus(); @@ -95,20 +95,19 @@ void watchdog_init(void) { char *env = getenv("WDTFD"); + wdt_timeout.cb = watchdog_timeout_cb; if (env) { - LOG("- watchdog -\n"); DEBUG(1, "Watchdog handover: fd=%s\n", env); wdt_fd = atoi(env); - fcntl(wdt_fd, F_SETFD, fcntl(wdt_fd, F_GETFD) | FD_CLOEXEC); unsetenv("WDTFD"); } else { wdt_fd = open("/dev/watchdog", O_WRONLY); - if (getpid() != 1) - fcntl(wdt_fd, F_SETFD, fcntl(wdt_fd, F_GETFD) | FD_CLOEXEC); } if (wdt_fd < 0) return; + fcntl(wdt_fd, F_SETFD, fcntl(wdt_fd, F_GETFD) | FD_CLOEXEC); + LOG("- watchdog -\n"); watchdog_timeout(30); watchdog_timeout_cb(&wdt_timeout); |