¡Ajá! Después de buscar en el linux/watchdog.h
del núcleo y drivers/watchdog/softdog.c
, pude determinar las capacidades del softdog ioctl()
interfaz. Mirando las capacidades que anuncia en struct watchdog_info
:
static struct watchdog_info ident = {
.options = WDIOF_SETTIMEOUT |
WDIOF_KEEPALIVEPING |
WDIOF_MAGICCLOSE,
.firmware_version = 0,
.identity = "Software Watchdog",
};
Lo sí admitir un cierre mágico que (parece) anular CONFIG_WATCHDOG_NOWAYOUT
. Entonces, cuando termino normalmente, tengo que escribir un solo carácter 'V' en /dev/watchdog
entonces ciérralo y el temporizador dejará de contar.
Un simple ioctl()
en un descriptor de archivo a /dev/watchdog
preguntando WDIOC_GETSUPPORT
permite determinar si esta bandera está activada. Pseudocódigo:
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.
}
Cuando trabaje con guardianes de hardware, es posible que desee abrir con O_NONBLOCK
entonces ioctl()
no open()
bloques (por lo tanto, detectando una tarjeta ocupada).
Si WDIOF_MAGICCLOSE
no es compatible, uno debe asumir que el perro guardián suave está configurado con NOWAYOUT. Recuerda, solo abrir el dispositivo inicia con éxito la cuenta regresiva. Si todo lo que está haciendo es sondear para ver si admite el cierre mágico y lo hace, entonces cierre mágico . De lo contrario, asegúrese de lidiar con el hecho de que ahora tiene un perro guardián en ejecución.
Desafortunadamente, no hay una forma real de saberlo con certeza sin iniciarlo, al menos no que yo haya podido encontrar.
un perro guardián protege contra el bloqueo del sistema, ya sea debido a un bloqueo del software o una falla del hardware.
lo que necesita es un demonio de monitoreo de demonios (dmd). comprobar 'monitoreo'