Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
WATCHDOG(4)		 BSD Kernel Interfaces Manual		   WATCHDOG(4)

NAME
     watchdog -- hardware and software watchdog

SYNOPSIS
     #include <sys/watchdog.h>

DESCRIPTION
     The watchdog facility is used for controlling hardware and	software
     watchdogs.

     The device	/dev/fido supports several optional ioctl(2) calls for config-
     uration, and responds to a	single operational ioctl call, WDIOCPATPAT.
     It	takes a	single argument	which represents a timeout value specified as
     a power of	two nanoseconds, or-ed with a flag selecting active or passive
     control of	the watchdog.

     WD_ACTIVE indicates that the watchdog will	be kept	from timing out	from
     userland, for instance by the watchdogd(8)	daemon.	 WD_PASSIVE indicates
     that the watchdog will be kept from timing	out from the kernel.

     The WDIOCPATPAT ioctl(2) call will	return success if just one of the
     available watchdog(9) implementations supports setting the	timeout	to the
     specified timeout.	 This means that at least one watchdog is armed.  By
     default, this will	be a hardware watchdog if one is present, but if no
     hardware watchdog is able to process the request, a default software
     watchdog is enabled.  If the call fails, for instance if none of
     watchdog(9) implementations support the timeout length, all watchdogs are
     disabled and must be explicitly re-enabled.

     To	disable	the watchdogs pass WD_TO_NEVER.	 If disarming the watchdog(s)
     failed an error is	returned.  The watchdog	might still be armed!

     The optional configuration	ioctl commands are listed here,	along with the
     type of the parameter used.  Examples of their use	can be found in
     watchdogd(8).

     WDIOC_SETTIMEOUT int	    set/reset the timer

     WDIOC_GETTIMEOUT int	    get	total timeout

     WDIOC_GETTIMELEFT int	    get	time left

     WDIOC_GETPRETIMEOUT int	    get	the pre-timeout

     WDIOC_SETPRETIMEOUT int	    set	the pre-timeout

     WDIOC_SETPRETIMEOUTACT int	    Set	the action when	a pre-timeout occurs
				    (see WD_SOFT_* below).

     WDIOC_SETSOFT int		    Use	an internal software watchdog instead
				    of hardware.  There	is also	an external
				    software watchdog, which is	used by	de-
				    fault if no	hardware watchdog was at-
				    tached.

     WDIOC_SETSOFTTIMEOUTACT int    Set	the action whan	a soft timeout occurs.

     The actions that may be specified for the pre-timeout or the internal
     software watchdog are listed here.	 Multiple actions can be specified by
     ORing values together.

     WD_SOFT_PANIC  panic

     WD_SOFT_DDB    enter debugger

     WD_SOFT_LOG    log(9)

     WD_SOFT_PRINT  printf(9)

RETURN VALUES
     The WDIOCPATPAT ioctl returns zero	on success and non-zero	on failure.

     [EOPNOTSUPP]	No watchdog present in the kernel or none of the
			watchdogs supports the requested timeout value (time-
			out value other	than 0).

     [EOPNOTSUPP]	Watchdog could not be disabled (timeout	value of 0).

     [EINVAL]		Invalid	flag combination passed.

     The configuration ioctl operations	return zero on success and non-zero on
     failure.

EXAMPLES
	   #include <paths.h>
	   #include <sys/watchdog.h>

	   #define WDPATH  "/dev/" _PATH_WATCHDOG
	   int wdfd = -1;

	   static void
	   wd_init(void)
	   {
		   wdfd	= open(WDPATH, O_RDWR);
		   if (wdfd == -1)
			   err(1, WDPATH);
	   }
	   static void
	   wd_reset(u_int timeout)
	   {
		   if (ioctl(wdfd, WDIOCPATPAT,	&timeout) == -1)
			   err(1, "WDIOCPATPAT");
	   }

	   /* in main()	*/
	   wd_init();
	   wd_reset(WD_ACTIVE|WD_TO_8SEC);
	   /* potential	freeze point */
	   wd_reset(WD_TO_NEVER);

     Enables a watchdog	to recover from	a potentially freezing piece of	code.

	   options SW_WATCHDOG

     in	your kernel config forces a software watchdog in the kernel to be con-
     figured even if a hardware	watchdog is configured,	dropping to KDB	or
     panicking when firing, depending on the KDB and KDB_UNATTENDED kernel
     configuration options.

SEE ALSO
     watchdogd(8), watchdog(9)

HISTORY
     The watchdog code first appeared in FreeBSD 5.1.

AUTHORS
     The watchdog facility was written by Poul-Henning Kamp <phk@FreeBSD.org>.
     The software watchdog code	and this manual	page were written by Sean
     Kelly <smkelly@FreeBSD.org>.  Some	contributions were made	by Jeff
     Roberson <jeff@FreeBSD.org>.

BUGS
     The WD_PASSIVE option has not yet been implemented.

BSD				January	2, 2018				   BSD

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | EXAMPLES | SEE ALSO | HISTORY | AUTHORS | BUGS

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=watchdog&sektion=4&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help