The standard Linux watchdog drivers create a device node (/dev/watchdog) which is used to control the watchdog hardware.  The watchdog is inactive when the system boots.  It is activated as soon as a process opens the device node.  Activating the watchdog will start a timer in the hardware.  If the timer runs out, the hardware will automatically reset itself.  This generally works the same as pressing the reset button, so Linux will be rebooted.  To prevent an automatic reboot, the watchdog timer needs to be reset before it expires.  The timer is reset anytime a process writes to the device node.

To keep the system running, custom software can be written to reset the watchdog timer periodically, or an existing watchdog daemon program can be used.  One existing option is the watchdog daemon that comes with Busybox.  This is a basic implementation that only resets the timer periodically as long as it’s running.  Another existing option is the standard Linux watchdog package.  This includes a configurable watchdog daemon that can monitor the system more closely and allow a reset if certain conditions are not met.

linux watchdog hardwareblock diagram