1111645Sphk/*- 2111645Sphk * Copyright (c) 2003 Poul-Henning Kamp 3111645Sphk * All rights reserved. 4111645Sphk * 5111645Sphk * Redistribution and use in source and binary forms, with or without 6111645Sphk * modification, are permitted provided that the following conditions 7111645Sphk * are met: 8111645Sphk * 1. Redistributions of source code must retain the above copyright 9111645Sphk * notice, this list of conditions and the following disclaimer. 10111645Sphk * 2. Redistributions in binary form must reproduce the above copyright 11111645Sphk * notice, this list of conditions and the following disclaimer in the 12111645Sphk * documentation and/or other materials provided with the distribution. 13111645Sphk * 14111645Sphk * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15111645Sphk * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16111645Sphk * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17111645Sphk * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18111645Sphk * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19111645Sphk * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20111645Sphk * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21111645Sphk * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22111645Sphk * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23111645Sphk * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24111645Sphk * SUCH DAMAGE. 25111645Sphk * 26111645Sphk * $FreeBSD$ 27111645Sphk */ 28111645Sphk#ifndef _SYS_WATCHDOG_H 29116805Sphk#define _SYS_WATCHDOG_H 30111645Sphk 31111645Sphk#include <sys/ioccom.h> 32111645Sphk 33126370Sphk#define _PATH_WATCHDOG "fido" 34126370Sphk 35111645Sphk#define WDIOCPATPAT _IOW('W', 42, u_int) 36111645Sphk 37111645Sphk#define WD_ACTIVE 0x8000000 38111645Sphk /* 39111645Sphk * Watchdog reset, timeout set to value in WD_INTERVAL field. 40111645Sphk * The kernel will arm the watchdog and unless the userland 41111645Sphk * program calls WDIOCPATPAT again before the timer expires 42111645Sphk * the system will reinitialize. 43111645Sphk */ 44111645Sphk 45111645Sphk#define WD_PASSIVE 0x0400000 46111645Sphk /* 47111645Sphk * Set the watchdog in passive mode. 48111645Sphk * The kernel will chose an appropriate timeout duration and 49111645Sphk * periodically reset the timer provided everything looks all 50111645Sphk * right to the kernel. 51111645Sphk */ 52111645Sphk 53221121Sattilio#define WD_LASTVAL 0x0200000 54221121Sattilio /* 55221121Sattilio * Use the already last used timeout value. 56221121Sattilio * The kernel will use as timeout the last valid timeout provided. 57221121Sattilio */ 58221121Sattilio 59111645Sphk#define WD_INTERVAL 0x00000ff 60111645Sphk /* 61111645Sphk * Mask for duration bits. 62111645Sphk * The watchdog will have a nominal patience of 2^N * nanoseconds. 63111645Sphk * Example: N == 30 gives a patience of 2^30 nanoseconds ~= 1 second. 64111645Sphk * NB: Expect variance in the +/- 10-20% range. 65111645Sphk */ 66111645Sphk 67111645Sphk/* Handy macros for humans not used to power of two nanoseconds */ 68111645Sphk#define WD_TO_NEVER 0 69111645Sphk#define WD_TO_1MS 20 70111645Sphk#define WD_TO_125MS 27 71111645Sphk#define WD_TO_250MS 28 72111645Sphk#define WD_TO_500MS 29 73111645Sphk#define WD_TO_1SEC 30 74111645Sphk#define WD_TO_2SEC 31 75111645Sphk#define WD_TO_4SEC 32 76111645Sphk#define WD_TO_8SEC 33 77111645Sphk#define WD_TO_16SEC 34 78111645Sphk#define WD_TO_32SEC 35 79111645Sphk 80126370Sphk#ifdef _KERNEL 81126370Sphk 82126370Sphk#include <sys/eventhandler.h> 83126370Sphk 84126370Sphktypedef void (*watchdog_fn)(void *, u_int, int *); 85126370Sphk 86126370SphkEVENTHANDLER_DECLARE(watchdog_list, watchdog_fn); 87221121Sattilio 88221121Sattiliou_int wdog_kern_last_timeout(void); 89221121Sattilioint wdog_kern_pat(u_int utim); 90126370Sphk#endif 91126370Sphk 92111645Sphk#endif /* _SYS_WATCHDOG_H */ 93