AHA! Nach dem Durchstöbern von linux/watchdog.h
des Kernels und drivers/watchdog/softdog.c
konnte ich die Fähigkeiten des Softdogs ioctl()
ermitteln Schnittstelle. Betrachten wir die Fähigkeiten, die es in struct watchdog_info
ankündigt :
static struct watchdog_info ident = {
.options = WDIOF_SETTIMEOUT |
WDIOF_KEEPALIVEPING |
WDIOF_MAGICCLOSE,
.firmware_version = 0,
.identity = "Software Watchdog",
};
Es tut unterstützt ein magisches Schließen, das (scheint) CONFIG_WATCHDOG_NOWAYOUT
überschreibt . Wenn ich also normal terminiere, muss ich ein einzelnes Zeichen 'V' in /dev/watchdog
schreiben dann Schließen Sie es und der Timer hört auf zu zählen.
Eine einfache ioctl()
auf einem Dateideskriptor zu /dev/watchdog
fragt WDIOC_GETSUPPORT
erlaubt einem festzustellen, ob dieses Flag gesetzt ist. Pseudocode:
int fd;
struct watchdog_info info;
fd = open("/dev/watchdog", O_WRONLY);
if (fd == -1) {
perror("open");
// abort, timer did not start - no additional concerns
}
if (ioctl(fd, WDIOC_GETSUPPORT, &info)) {
perror("ioctl");
// abort, but you probably started the timer! See below.
}
if (WDIOF_MAGICCLOSE & info.options) {
printf("Watchdog supports magic close char\n");
// You have started the timer here! Handle that appropriately.
}
Wenn Sie mit Hardware-Watchdogs arbeiten, möchten Sie vielleicht mit O_NONBLOCK
öffnen also ioctl()
nicht open()
blockiert (wodurch eine belegte Karte erkannt wird).
Wenn WDIOF_MAGICCLOSE
nicht unterstützt wird, sollte man einfach davon ausgehen, dass der Softwatchdog mit NOWAYOUT konfiguriert ist. Denken Sie daran, nur öffnen Das Gerät startet den Countdown erfolgreich. Wenn Sie nur prüfen, ob Magic Close unterstützt wird und dies der Fall ist, dann Magic Close . Andernfalls sollten Sie sich unbedingt damit auseinandersetzen, dass Sie jetzt einen laufenden Watchdog haben.
Leider gibt es keinen wirklichen Weg, es sicher zu wissen, ohne es tatsächlich zu starten, zumindest nicht, dass ich es finden könnte.
ein Watchdog verhindert, dass das System hart gesperrt wird, entweder aufgrund eines Software-Absturzes oder eines Hardware-Fehlers.
Was Sie brauchen, ist ein Daemon Monitoring Daemon (dmd). überprüfen Sie 'Überwachung'