9079fff550
behave as expected. Also: - Return an error if WD_PASSIVE is passed in to the ioctl as only WD_ACTIVE is implemented at the moment. See sys/watchdog.h for an explanation of the difference between WD_ACTIVE and WD_PASSIVE. - Remove the I_HAVE_TOTALLY_LOST_MY_SENSE_OF_HUMOR define. If you've lost your sense of humor, than don't add a define. Specific changes: i80321_wdog.c Don't roll your own passive watchdog tickle as this would defeat the purpose of an active (userland) watchdog tickle. ichwd.c / ipmi.c: WD_ACTIVE means active patting of the watchdog by a userland process, not whether the watchdog is active. See sys/watchdog.h. kern_clock.c: (software watchdog) Remove a check for WD_ACTIVE as this does not make sense here. This reverts r1.181.
146 lines
4.1 KiB
Groff
146 lines
4.1 KiB
Groff
.\" Copyright (c) 2004 Poul-Henning Kamp <phk@FreeBSD.org>
|
|
.\" Copyright (c) 2003, 2004 Sean M. Kelly <smkelly@FreeBSD.org>
|
|
.\" 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$
|
|
.\"
|
|
.Dd June 25, 2003
|
|
.Dt WATCHDOG 4
|
|
.Os
|
|
.Sh NAME
|
|
.Nm watchdog
|
|
.Nd "hardware and software watchdog"
|
|
.Sh SYNOPSIS
|
|
.In sys/watchdog.h
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Nm
|
|
facility is used for controlling hardware and software watchdogs.
|
|
.Pp
|
|
.Pa /dev/fido
|
|
responds to a single
|
|
.Xr ioctl 2
|
|
call,
|
|
.Dv 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.
|
|
.Pp
|
|
.Dv WD_ACTIVE
|
|
indicates that the
|
|
.Nm
|
|
will be kept from timing out from userland, for instance by the
|
|
.Xr watchdogd 8
|
|
daemon.
|
|
.Dv WD_PASSIVE
|
|
indicates that the
|
|
.Nm
|
|
will be kept from timing out from the kernel.
|
|
.Pp
|
|
The
|
|
.Xr ioctl 2
|
|
call will return success if just one of the available
|
|
.Xr watchdog 9
|
|
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
|
|
none of
|
|
.Xr watchdog 9
|
|
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 .
|
|
If disarming the watchdog(s) failed an error is returned. The watchdog might
|
|
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
|
|
No watchdog present in the kernel (timeout value other than 0).
|
|
.It Bq Er EOPNOTSUPP
|
|
Watchdog could not be disabled (timeout value of 0).
|
|
.It Bq Er EINVALID
|
|
Invalid flag combination passed.
|
|
.It Bq Er EINVALID
|
|
None of the watchdogs supports the requested timeout value.
|
|
.Sh EXAMPLES
|
|
.Bd -literal -offset indent
|
|
#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);
|
|
.Ed
|
|
.Pp
|
|
Enables a watchdog to recover from a potentially freezing piece of code.
|
|
.Pp
|
|
.Bd -literal -offset indent
|
|
options SW_WATCHDOG
|
|
.Ed
|
|
.Pp
|
|
in your kernel config adds a software watchdog in the kernel, dropping to KDB
|
|
or panic-ing when firing.
|
|
.Sh SEE ALSO
|
|
.Xr watchdogd 8 ,
|
|
.Xr watchdog 9
|
|
.Sh HISTORY
|
|
The
|
|
.Nm
|
|
code first appeared in
|
|
.Fx 5.1 .
|
|
.Sh BUGS
|
|
The
|
|
.Dv WD_PASSIVE
|
|
option has not yet been implemented.
|
|
.Sh AUTHORS
|
|
.An -nosplit
|
|
The
|
|
.Nm
|
|
facility was written by
|
|
.An Poul-Henning Kamp Aq phk@FreeBSD.org .
|
|
The software watchdog code and this manual page were written by
|
|
.An Sean Kelly Aq smkelly@FreeBSD.org .
|
|
Some contributions were made by
|
|
.An Jeff Roberson Aq jeff@FreeBSD.org .
|