]> git.pld-linux.org Git - packages/mcelog.git/blame - mcelog.init
- no falltrough
[packages/mcelog.git] / mcelog.init
CommitLineData
6e58c30e
ER
1#!/bin/sh
2#
3# mcelog mcelog hardware error logging
4#
5# chkconfig: 35 02 98
6#
7# description: Start the mcelog hardware error logging. \
8# This logs and handles CPU hardware errors on x86 systems.
9#
10# processname: mcelog
11# config:
12# pidfile:
13#
14# $Id$
15
16# Source function library
17. /etc/rc.d/init.d/functions
18
19# mcelog mode
20# valid values: daemon, trigger, cron
21# Recommended value daemon
22MCELOG_MODE=daemon
23
24# additional options to pass to the daemon
25# this only works in daemon mode
26# see the manpage for details. settings can be also
27# set in /etc/mcelog/mcelog.conf
28MCELOG_OPTIONS=""
29
30# Get service config - may override defaults
31[ -f /etc/sysconfig/mcelog ] && . /etc/sysconfig/mcelog
32
33# private settings
34# TODO: what about other cpu's?
35TRIGGER=/sys/devices/system/machinecheck/machinecheck0/trigger
36
37# configtest itself
38# must return non-zero if check failed
39# output is discarded if checkconfig is ran without details
40configtest() {
41 if [ ! -r /dev/mcelog ]; then
42 nls "%s not active" /dev/mcelog
43 return 1
44 fi
45
46 case "$MCELOG_MODE" in
47 daemon)
48 ;;
49 trigger)
50 if [ ! -f "$TRIGGER" ] ; then
51 nls "No machine check capability"
52 return 1
53 fi
54 ;;
55 cron)
56 nls "mcelog not started in cron mode"
57 return 0
58 ;;
59 *)
60 nls "Unknown mcelog mode %s. Valid are: daemon/trigger/cron" $MCELOG_MODE
61 return 1
62 esac
63
64 return 0
65}
66
67# wrapper for configtest
68checkconfig() {
69 local details=${1:-0}
70
71 if [ $details = 1 ]; then
72 # run config test and display report (status action)
73 show "Checking %s configuration" "MCE Log"; busy
74 local out
75 out=$(configtest 2>&1)
76 RETVAL=$?
77 if [ $RETVAL = 0 ]; then
78 ok
79 else
80 fail
81 fi
82 [ "$out" ] && echo >&2 "$out"
83 else
84 # run config test and abort with nice message if failed
85 # (for actions checking status before action).
86 configtest >/dev/null 2>&1
87 RETVAL=$?
88 if [ $RETVAL != 0 ]; then
89 show "Checking %s configuration" "MCE Log"; fail
90 nls 'Configuration test failed. See details with %s "checkconfig"' $0
91 exit $RETVAL
92 fi
93 fi
94}
95
96start() {
97 # Check if the service is already running?
98 if [ -f /var/lock/subsys/mcelog ]; then
99 msg_already_running "MCE Log"
100 return
101 fi
102
103 checkconfig
104
105 case "$MCELOG_MODE" in
106 daemon)
107 msg_starting "MCE Log"
108 daemon /usr/sbin/mcelog --daemon $MCELOG_OPTIONS
109 RETVAL=$?
110 [ $RETVAL -eq 0 ] && touch /var/lock/subsys/mcelog
111 ;;
112 trigger)
113 echo $MCELOG > "$TRIGGER"
114 touch /var/lock/subsys/mcelog
de02e5fc 115 ;;
6e58c30e
ER
116 esac
117}
118
119stop() {
120 if [ ! -f /var/lock/subsys/mcelog ]; then
121 msg_not_running "MCE Log"
122 return
123 fi
124
125 case "$MCELOG_MODE" in
126 daemon)
127 # Stop daemons.
128 msg_stopping "MCE Log"
129 killproc mcelog -TERM
130 rm -f /var/lock/subsys/mcelog
131 ;;
132 trigger)
133 echo "" > "$TRIGGER"
134 rm -f /var/lock/subsys/mcelog
de02e5fc 135 ;;
6e58c30e
ER
136 esac
137}
138
139condrestart() {
140 if [ ! -f /var/lock/subsys/mcelog ]; then
141 msg_not_running "MCE Log"
142 RETVAL=$1
143 return
144 fi
145
146 checkconfig
147 stop
148 start
149}
150
151rc_status() {
de02e5fc
ER
152 case "$MCELOG_MODE" in
153 daemon)
6e58c30e
ER
154 status mcelog
155 RETVAL=$?
de02e5fc
ER
156 ;;
157 esac
6e58c30e
ER
158}
159
160RETVAL=0
161# See how we were called.
162case "$1" in
163 start)
164 start
165 ;;
166 stop)
167 stop
168 ;;
169 restart)
170 checkconfig
171 stop
172 start
173 ;;
174 try-restart)
175 condrestart 0
176 ;;
177 force-reload)
178 condrestart 7
179 ;;
180 checkconfig|configtest)
181 checkconfig 1
182 ;;
183 status)
184 rc_status
185 ;;
186 *)
187 msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|checkconfig|status}"
188 exit 3
189esac
190
191exit $RETVAL
This page took 0.057537 seconds and 4 git commands to generate.