1#!/bin/sh
2#
3# Startup script for mcelog
4#
5# This should be customized for distribution standards
6# (using rc_status etc.)
7# The paths are hardcoded and are not automatically adjusted
8# for different prefix
9#
10### BEGIN INIT INFO
11# Provides:		mcelog
12# Default-Start:	3 5
13# Default-Stop:		0 1 2 6
14# Short-Description:	mcelog hardware error logging
15# Description:          Start the mcelog hardware error logging.
16#                       This logs and handles CPU hardware errors on x86 systems.
17### END INIT INFO
18
19# put this is sysconfig
20
21# mcelog mode
22# valid values: daemon, trigger, cron
23# Recommended value daemon
24MCELOG_MODE=daemon
25
26# additional options to pass to the daemon
27# this only works in daemon mode
28# see the manpage for details. settings can be also
29# set in /etc/mcelog.conf
30MCELOG_OPTIONS=""
31
32# private settings
33MCELOG=${MCELOG:-/usr/sbin/mcelog}
34TRIGGER=/sys/devices/system/machinecheck/machinecheck0/trigger
35[ ! -x $MCELOG ] && ( echo "mcelog not found" ; exit 1 )
36[ ! -r /dev/mcelog ] && ( echo "/dev/mcelog not active" ; exit 0 )
37
38case "$MCELOG_MODE" in
39daemon)
40	;;
41trigger)
42	;;
43cron)
44	echo "mcelog not started"
45	exit 0
46	;;
47*)
48	echo "Unknown mcelog mode $MCELOG_MODE. Valid daemon/trigger/cron"
49	exit 1
50esac
51
52case "$1" in
53start)
54	if [ "$MCELOG_MODE" = "daemon" ] ; then
55		echo "Starting mcelog daemon"
56		startproc $MCELOG --daemon $MCELOG_OPTIONS
57	elif [ -f "$TRIGGER" ] ; then
58		echo $MCELOG > "$TRIGGER"
59	else
60		echo No machine check capability
61	fi
62	;;
63stop)
64	if [ "$MCELOG_MODE" = "daemon" ] ; then
65		echo "Stopping mcelog"
66		killproc -TERM $MCELOG
67	elif [ "$MCELOG_MODE" = "trigger" -a -f "$TRIGGER" ]; then
68		echo "" > "$TRIGGER"
69	else
70		echo mcelog not running
71	fi
72	;;
73try-restart)
74	$0 status > /dev/null && $0 restart
75	;;
76restart)
77	$0 stop
78	$0 start
79	;;
80reload)
81	$0 try-restart
82	;;
83force-reload)
84	$0 try-restart
85	;;
86status)
87	if [ "$MCELOG_MODE" = "daemon" ] ; then
88		echo "Checking for mcelog"
89		checkproc $MCELOG
90	fi
91	;;
92*)
93	echo "Usage: $0 {start|stop|try-restart|restart|status|force-reload|reload}"
94	exit 1
95esac
96
97
98