diff options
author | smkelly <smkelly@FreeBSD.org> | 2003-06-26 09:50:52 +0000 |
---|---|---|
committer | smkelly <smkelly@FreeBSD.org> | 2003-06-26 09:50:52 +0000 |
commit | d45e58ad731761c5ee7051580c01c0a05c8d9322 (patch) | |
tree | 98951546927e0d8bb8a7c45b699a83ac3f8e84a9 /etc | |
parent | 1cee3fa00127dc5a0eac1e6b6d9f489d1324437f (diff) | |
download | FreeBSD-src-d45e58ad731761c5ee7051580c01c0a05c8d9322.zip FreeBSD-src-d45e58ad731761c5ee7051580c01c0a05c8d9322.tar.gz |
- 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)
Diffstat (limited to 'etc')
-rw-r--r-- | etc/defaults/rc.conf | 1 | ||||
-rwxr-xr-x | etc/rc.d/Makefile | 4 | ||||
-rw-r--r-- | etc/rc.d/watchdogd | 51 |
3 files changed, 54 insertions, 2 deletions
diff --git a/etc/defaults/rc.conf b/etc/defaults/rc.conf index 1b6f066..d7623ac 100644 --- a/etc/defaults/rc.conf +++ b/etc/defaults/rc.conf @@ -430,6 +430,7 @@ jail_list="" # Space separated list of names of jails jail_set_hostname_allow="YES" # Allow root user in a jail to change its hostname jail_socket_unixiproute_only="YES" # Route only TCP/IP within a jail jail_sysvipc_allow="NO" # Allow SystemV IPC use from within a jail +watchdogd_enable="NO" # Start the software watchdog daemon ############################################################## ### Define source_rc_confs, the mechanism used by /etc/rc.* ## 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 <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$ +# + +# 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" |