om-watchdog: Stop om-watchdog via procd before rebooting

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
lede-17.01
John Crispin 2016-03-03 20:24:33 +00:00
parent 678dcef7a5
commit ab196b75ea
1 changed files with 24 additions and 8 deletions

View File

@ -4,33 +4,49 @@
#
START=11
STOP=11
SERVICE_DAEMONIZE=1
USE_PROCD=1
NAME=om-watchdog
PROG=/sbin/om-watchdog
boot() {
get_gpio() {
if [ -r /lib/ar71xx.sh ]; then
. /lib/ar71xx.sh
local board=$(ar71xx_board_name)
case "$board" in
"om2p"|"om2p-hs"|"om2p-hsv2")
service_start /sbin/om-watchdog 12
return 12
;;
"om2pv2"|"om2p-lc")
service_start /sbin/om-watchdog 26
return 26
;;
"om5p"|"om5p-an")
service_start /sbin/om-watchdog 11
return 11
;;
"mr600v2")
service_start /sbin/om-watchdog 15
return 15
;;
"mr900"|"mr900v2"|"mr1750")
service_start /sbin/om-watchdog 16
return 16
;;
esac
else
#we assume it is om1p in this case
service_start /sbin/om-watchdog 3
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
}