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.

       /dev/fido responds to a single 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 selecting active or passive  con-
       trol 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 ioctl(2) call will return success if	 just  one  of	the  available
       watchdog(9)  implementations supports setting the timeout to the	speci-
       fied timeout. This means	that at	least one watchdog is  armed.  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!

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

       [EOPNOTSUPP]	  No  watchdog	present	 in  the kernel	(timeout value
			  other	than 0).

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

       [EINVALID]	  Invalid flag combination passed.

       [EINVALID]	  None of the watchdogs	supports the requested timeout
			  value.

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 adds a software watchdog in the kernel, dropping
       to KDB or panic-ing when	firing.

SEE ALSO
       watchdogd(8), watchdog(9)

HISTORY
       The watchdog code first appeared	in FreeBSD 5.1.

BUGS
       The WD_PASSIVE option has not yet been implemented.

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>.

FreeBSD	7.0			 June 25, 2003			   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+7.0-RELEASE>

home | help