It was noticed that the system can hang during the reboot before the kernel actually triggers the system reset and before all processes are stopped. The watchdog didn't automatically restart the system because the om-watchdog process was still running and triggering the hardware watchdog. Instead the system should stop the watchdog during the shutdown to get the benefit of an hardware reset in case of an software related problem. This stop can be done quite easily with procd because it keeps track of its started processes. Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com> SVN-Revision: 48889
53 lines
748 B
Bash
53 lines
748 B
Bash
#!/bin/sh /etc/rc.common
|
|
#
|
|
# Copyright (C) 2011 OpenWrt.org
|
|
#
|
|
|
|
START=11
|
|
STOP=11
|
|
|
|
USE_PROCD=1
|
|
NAME=om-watchdog
|
|
PROG=/sbin/om-watchdog
|
|
|
|
get_gpio() {
|
|
if [ -r /lib/ar71xx.sh ]; then
|
|
. /lib/ar71xx.sh
|
|
local board=$(ar71xx_board_name)
|
|
|
|
case "$board" in
|
|
"om2p"|"om2p-hs"|"om2p-hsv2")
|
|
return 12
|
|
;;
|
|
"om2pv2"|"om2p-lc")
|
|
return 26
|
|
;;
|
|
"om5p"|"om5p-an")
|
|
return 11
|
|
;;
|
|
"mr600v2")
|
|
return 15
|
|
;;
|
|
"mr900"|"mr900v2"|"mr1750")
|
|
return 16
|
|
;;
|
|
esac
|
|
else
|
|
#we assume it is om1p in this case
|
|
return 3
|
|
fi
|
|
|
|
return 255
|
|
}
|
|
|
|
start_service() {
|
|
get_gpio
|
|
gpio="$?"
|
|
[ "$gpio" != "255" ] || return
|
|
|
|
procd_open_instance
|
|
procd_set_param command "${PROG}" "${gpio}"
|
|
procd_set_param respawn
|
|
procd_close_instance
|
|
}
|