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

FreeBSD Manual Pages

  
 
  

home | help
WATCHDOG(4)		    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  con-
       figuration,  and	 responds  to  a  single  operational  ioctl(2)	 call,
       WDIOCPATPAT.  It	takes a	single argument	 which	represents  a  timeout
       value  specified	 as  a power of	two nanoseconds, or-ed with a flag se-
       lecting 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	 indi-
       cates 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	watch-
       dog(s) failed an	error is returned.  The	watchdog might still be	armed!

       The  optional  configuration  ioctl(2)  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 in-
				      stead of hardware.  There	is also	an ex-
				      ternal software watchdog,	which is  used
				      by  default  if no hardware watchdog was
				      attached.

       WDIOC_SETSOFTTIMEOUTACT int    Set the action when a soft  timeout  oc-
				      curs.

       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(2) returns zero on success and non-zero on fail-
       ure.

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

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

       [EINVAL]		  Invalid flag combination passed.

       The configuration ioctl(2) 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
       configured  even	 if a hardware watchdog	is configured, dropping	to KDB
       or panicking when firing, depending on the KDB and KDB_UNATTENDED  ker-
       nel 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.

FreeBSD	15.0			January	2, 2018			   WATCHDOG(4)

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

home | help