From d45e58ad731761c5ee7051580c01c0a05c8d9322 Mon Sep 17 00:00:00 2001 From: smkelly Date: Thu, 26 Jun 2003 09:50:52 +0000 Subject: - Add a software watchdog facility. This commit has two pieces. One half is the watchdog kernel code which lives primarily in hardclock() in sys/kern/kern_clock.c. The other half is a userland daemon which, when run, will keep the watchdog from firing while the userland is intact and functioning. Approved by: jeff (mentor) --- etc/rc.d/Makefile | 4 ++-- etc/rc.d/watchdogd | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 etc/rc.d/watchdogd (limited to 'etc/rc.d') diff --git a/etc/rc.d/Makefile b/etc/rc.d/Makefile index 4104707..734a362 100755 --- a/etc/rc.d/Makefile +++ b/etc/rc.d/Makefile @@ -17,8 +17,8 @@ FILES= DAEMON LOGIN NETWORKING SERVERS abi accounting addswap adjkerntz amd \ ntpdate othermta pccard pcvt ppp-user pppoed pwcheck quota random \ rarpd rcconf.sh root route6d routed rpcbind rtadvd rwho savecore \ securelevel sendmail serial sppp sshd swap1 syscons sysctl \ - syslogd timed ttys usbd vinum virecover ypbind yppasswdd ypserv \ - ypset ypupdated ypxfrd + syslogd timed ttys usbd vinum virecover watchdogd ypbind \ + yppasswdd ypserv ypset ypupdated ypxfrd FILESDIR= /etc/rc.d FILESMODE= ${BINMODE} diff --git a/etc/rc.d/watchdogd b/etc/rc.d/watchdogd new file mode 100644 index 0000000..e2ee5f7 --- /dev/null +++ b/etc/rc.d/watchdogd @@ -0,0 +1,51 @@ +#!/bin/sh + +# Copyright (c) 2003 Sean M. Kelly +# 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$ +# + +# PROVIDE: watchdogd +# REQUIRE: DAEMON +# KEYWORD: FreeBSD + +. /etc/rc.subr + +name="watchdogd" +rcvar="`set_rcvar`" +command="/usr/sbin/${name}" +start_precmd="watchdogd_precmd" +pidfile="/var/run/${name}.pid" + +watchdogd_precmd() +{ + if ! sysctl debug.watchdog >/dev/null 2>&1; then + err 1 "Your kernel doesn't have watchdog support." + fi + return 0 +} + +load_rc_config $name +run_rc_command "$1" -- cgit v1.1