2004-02-28 20:56:35 +00:00
|
|
|
.\" Copyright (c) 2004 Poul-Henning Kamp <phk@FreeBSD.org>
|
2004-04-28 21:42:36 +00:00
|
|
|
.\" Copyright (c) 2003, 2004 Sean M. Kelly <smkelly@FreeBSD.org>
|
2003-06-26 09:50:52 +00:00
|
|
|
.\" All rights reserved.
|
|
|
|
.\"
|
|
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
|
|
.\" modification, are permitted provided that the following conditions
|
|
|
|
.\" are met:
|
|
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
|
|
.\"
|
|
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
|
|
.\" SUCH DAMAGE.
|
|
|
|
.\"
|
|
|
|
.\" $FreeBSD$
|
|
|
|
.\"
|
2009-12-21 14:39:46 +00:00
|
|
|
.Dd December 21, 2009
|
2004-06-19 21:17:07 +00:00
|
|
|
.Dt WATCHDOG 4
|
2003-06-26 09:50:52 +00:00
|
|
|
.Os
|
|
|
|
.Sh NAME
|
|
|
|
.Nm watchdog
|
2004-06-19 21:17:07 +00:00
|
|
|
.Nd "hardware and software watchdog"
|
2003-06-26 09:50:52 +00:00
|
|
|
.Sh SYNOPSIS
|
2004-02-28 20:56:35 +00:00
|
|
|
.In sys/watchdog.h
|
2003-06-26 09:50:52 +00:00
|
|
|
.Sh DESCRIPTION
|
2004-06-19 21:17:07 +00:00
|
|
|
The
|
2003-06-26 09:50:52 +00:00
|
|
|
.Nm
|
2004-06-19 21:17:07 +00:00
|
|
|
facility is used for controlling hardware and software watchdogs.
|
2003-06-26 09:50:52 +00:00
|
|
|
.Pp
|
2006-04-15 17:52:02 +00:00
|
|
|
.Pa /dev/fido
|
2006-12-15 21:44:49 +00:00
|
|
|
responds to a single
|
2004-06-19 21:17:07 +00:00
|
|
|
.Xr ioctl 2
|
|
|
|
call,
|
2004-04-29 08:33:12 +00:00
|
|
|
.Dv WDIOCPATPAT .
|
2006-12-15 21:44:49 +00:00
|
|
|
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.
|
2004-02-28 20:56:35 +00:00
|
|
|
.Pp
|
2004-04-29 08:27:38 +00:00
|
|
|
.Dv WD_ACTIVE
|
2006-12-15 21:44:49 +00:00
|
|
|
indicates that the
|
2004-06-19 21:17:07 +00:00
|
|
|
.Nm
|
2006-12-15 21:44:49 +00:00
|
|
|
will be kept from timing out from userland, for instance by the
|
2004-02-28 20:56:35 +00:00
|
|
|
.Xr watchdogd 8
|
|
|
|
daemon.
|
2006-12-15 21:44:49 +00:00
|
|
|
.Dv WD_PASSIVE
|
|
|
|
indicates that the
|
|
|
|
.Nm
|
|
|
|
will be kept from timing out from the kernel.
|
2004-02-28 20:56:35 +00:00
|
|
|
.Pp
|
2004-06-19 21:17:07 +00:00
|
|
|
The
|
|
|
|
.Xr ioctl 2
|
|
|
|
call will return success if just one of the available
|
|
|
|
.Xr watchdog 9
|
2009-12-21 14:39:46 +00:00
|
|
|
implementations supports setting the timeout to the specified timeout.
|
|
|
|
This
|
|
|
|
means that at least one watchdog is armed.
|
|
|
|
If the call fails, for instance if
|
2006-12-15 21:44:49 +00:00
|
|
|
none of
|
2004-06-19 21:17:07 +00:00
|
|
|
.Xr watchdog 9
|
2006-12-15 21:44:49 +00:00
|
|
|
implementations support the timeout length, all watchdogs are disabled and must
|
|
|
|
be explicitly re-enabled.
|
|
|
|
.Pp
|
|
|
|
To disable the watchdogs pass
|
|
|
|
.Dv WD_TO_NEVER .
|
2009-12-21 14:39:46 +00:00
|
|
|
If disarming the watchdog(s) failed an error is returned.
|
|
|
|
The watchdog might
|
2006-12-15 21:44:49 +00:00
|
|
|
still be armed!
|
|
|
|
.Sh RETURN VALUES
|
|
|
|
The ioctl returns zero on success and non-zero on failure.
|
|
|
|
.Bl -tag -width Er
|
|
|
|
.It Bq Er EOPNOTSUPP
|
2009-12-21 15:12:56 +00:00
|
|
|
No watchdog present in the kernel or
|
|
|
|
none of the watchdogs supports the requested timeout value
|
|
|
|
(timeout value other than 0).
|
2006-12-15 21:44:49 +00:00
|
|
|
.It Bq Er EOPNOTSUPP
|
|
|
|
Watchdog could not be disabled (timeout value of 0).
|
2009-12-21 14:39:46 +00:00
|
|
|
.It Bq Er EINVAL
|
2006-12-15 21:44:49 +00:00
|
|
|
Invalid flag combination passed.
|
2007-03-29 10:11:22 +00:00
|
|
|
.El
|
2004-06-19 21:17:07 +00:00
|
|
|
.Sh EXAMPLES
|
|
|
|
.Bd -literal -offset indent
|
2006-12-15 21:44:49 +00:00
|
|
|
#include <paths.h>
|
|
|
|
#include <sys/watchdog.h>
|
|
|
|
|
|
|
|
#define WDPATH "/dev/" _PATH_WATCHDOG
|
|
|
|
int wdfd = -1;
|
2004-06-19 21:17:07 +00:00
|
|
|
|
2006-12-15 21:44:49 +00:00
|
|
|
static void
|
2009-12-21 14:39:46 +00:00
|
|
|
wd_init(void)
|
2006-12-15 21:44:49 +00:00
|
|
|
{
|
|
|
|
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);
|
2004-06-19 21:17:07 +00:00
|
|
|
.Ed
|
2006-12-15 21:44:49 +00:00
|
|
|
.Pp
|
|
|
|
Enables a watchdog to recover from a potentially freezing piece of code.
|
|
|
|
.Pp
|
2009-12-21 14:39:46 +00:00
|
|
|
.Dl "options SW_WATCHDOG"
|
2006-12-15 21:44:49 +00:00
|
|
|
.Pp
|
|
|
|
in your kernel config adds a software watchdog in the kernel, dropping to KDB
|
|
|
|
or panic-ing when firing.
|
2003-06-26 09:50:52 +00:00
|
|
|
.Sh SEE ALSO
|
2004-04-29 08:27:38 +00:00
|
|
|
.Xr watchdogd 8 ,
|
2004-04-28 21:42:36 +00:00
|
|
|
.Xr watchdog 9
|
2003-06-26 09:50:52 +00:00
|
|
|
.Sh HISTORY
|
|
|
|
The
|
|
|
|
.Nm
|
|
|
|
code first appeared in
|
|
|
|
.Fx 5.1 .
|
|
|
|
.Sh AUTHORS
|
|
|
|
.An -nosplit
|
|
|
|
The
|
2004-06-19 21:17:07 +00:00
|
|
|
.Nm
|
|
|
|
facility was written by
|
2004-02-28 20:56:35 +00:00
|
|
|
.An Poul-Henning Kamp Aq phk@FreeBSD.org .
|
2006-12-15 21:44:49 +00:00
|
|
|
The software watchdog code and this manual page were written by
|
2003-06-26 09:50:52 +00:00
|
|
|
.An Sean Kelly Aq smkelly@FreeBSD.org .
|
|
|
|
Some contributions were made by
|
|
|
|
.An Jeff Roberson Aq jeff@FreeBSD.org .
|
2009-12-21 14:39:46 +00:00
|
|
|
.Sh BUGS
|
|
|
|
The
|
|
|
|
.Dv WD_PASSIVE
|
|
|
|
option has not yet been implemented.
|