watchdog(9)

watchdog9

Software and hardware watchdog facility

Usage

#include <sys/watchdog.h>

void

watchdog_fn(void *private, u_int cmd, int *error);

EVENTHANDLER_REGISTER(watchdog_list, watchdog_fn, private, 0);

EVENTHANDLER_DEREGISTER(watchdog_list, eventhandler_tag);

Overview

To implement a watchdog in software or hardware, only a single function needs to be written and registered on the global watchdog_list.

The function must examine the cmd argument and act on it as follows:

If cmd is zero, the watchdog must be disabled and the error argument left untouched. If the watchdog cannot be disabled, the error argument must be set to EOPNOTSUPP.

Else the watchdog should be reset and configured to a timeout of (1 << (cmd & WD_INTERVAL)) nanoseconds or larger and the error argument be set to zero to signal arming of a watchdog.

If the watchdog cannot be configured to the proposed timeout, it must be disabled and the error argument left as is (to avoid hiding the arming of another watchdog).

There is no specification of what the watchdog should do when it times out, but a hardware reset or similar “drastic but certain” behaviour is recommended.

Releases

52 releases since FreeBSD 5.3-RELEASE; the text changed 33 times.

  1. 5.3–6.2
  2. 6.3
  3. 6.4
  4. 7.0
  5. 7.1
  6. 7.2
  7. 7.3
  8. 7.4
  9. 8.0
  10. 8.1
  11. 8.2
  12. 8.3
  13. 8.4
  14. 9.0
  15. 9.1
  16. 9.2
  17. 9.3
  18. 10.0
  19. 10.1
  20. 10.2
  21. 10.3
  22. 10.4
  23. 11.0
  24. 11.1
  25. 11.2
  26. 11.3
  27. 11.4
  28. 12.0
  29. 12.1
  30. 12.2
  31. 12.3
  32. 12.4
  33. 13.0–13.2
  34. 13.3–16.0

Authors

The watchdog facility and this manual page was written Poul-Henning Kamp ⟨[email protected]⟩.

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.