8dc43a6c72
* [Celestica-E1031] Enable CPU watchdog (#16083) Enable CPU watchdog on Celestica-E1031. * Add info syslog for cpu_wdt.service (#16678) Why I did it Add info syslog for cpu_wdt.service when trigger watchdog arm action. How I did it Add info syslog for cpu_wdt.service when trigger watchdog arm action.
91 lines
2.2 KiB
Bash
91 lines
2.2 KiB
Bash
#!/bin/bash
|
|
|
|
SYSLOG_IDENTIFIER="cpu_wdt"
|
|
CPUWDT_MAIN_TASK_RUNNING_FLAG=true
|
|
TIMEOUT=180
|
|
KEEPALIVE=60
|
|
|
|
function log_info()
|
|
{
|
|
logger -p info -t ${SYSLOG_IDENTIFIER} "$@"
|
|
}
|
|
|
|
function usage()
|
|
{
|
|
echo "Usage: $0 ACTION [OPTIONS]..."
|
|
echo ""
|
|
echo "Actions:"
|
|
echo " start Start CPU WDT"
|
|
echo " stop Stop CPU WDT"
|
|
echo ""
|
|
echo "Options:"
|
|
echo " -h Show this help"
|
|
echo " -t <timeout> WDT timeout period: {30|60|180}, default 180"
|
|
echo " -k <keepalive> WDT keep alive period, {1..(timeout-5)}, default 60"
|
|
exit 1
|
|
}
|
|
|
|
function validate_action()
|
|
{
|
|
if [[ "${ACTION}" != "start" && "${ACTION}" != "stop" ]]; then
|
|
echo -e "Invalid action: ${ACTION}\n"
|
|
usage
|
|
fi
|
|
}
|
|
|
|
function validate_options()
|
|
{
|
|
if [[ ${TIMEOUT} != "30" && ${TIMEOUT} != "60" && ${TIMEOUT} != "180" ]]; then
|
|
echo -e "Invalid timeout value: ${TIMEOUT}\n"
|
|
usage
|
|
fi
|
|
if [[ ${KEEPALIVE} -le 0 || ${KEEPALIVE} -gt $((TIMEOUT - 5)) ]]; then
|
|
echo "Invalid keepalive value: ${KEEPALIVE}"
|
|
echo ""
|
|
usage
|
|
fi
|
|
}
|
|
|
|
trap 'log_info "Caught SIGHUP - ignoring..."' SIGHUP
|
|
trap 'log_info "Caught SIGINT - exiting..."; CPUWDT_MAIN_TASK_RUNNING_FLAG=false' SIGINT
|
|
trap 'log_info "Caught SIGTERM - exiting..."; CPUWDT_MAIN_TASK_RUNNING_FLAG=false' SIGTERM
|
|
|
|
ACTION=$1
|
|
shift
|
|
validate_action
|
|
|
|
while getopts "t:k:" OPTION; do
|
|
case $OPTION in
|
|
t)
|
|
TIMEOUT=${OPTARG}
|
|
;;
|
|
k)
|
|
KEEPALIVE=${OPTARG}
|
|
;;
|
|
*)
|
|
usage
|
|
esac
|
|
done
|
|
|
|
validate_options
|
|
|
|
if [[ "${ACTION}" == "start" ]]; then
|
|
# enable
|
|
log_info "Enable CPU WDT.."
|
|
watchdogutil arm -s "${TIMEOUT}" > /dev/null
|
|
log_info "CPU WDT has been enabled with $TIMEOUT seconds timeout"
|
|
|
|
# keep alive
|
|
log_info "Enable keep alive messaging every $KEEPALIVE seconds"
|
|
while [[ ${CPUWDT_MAIN_TASK_RUNNING_FLAG} == "true" ]]; do
|
|
watchdogutil arm -s "${TIMEOUT}" > /dev/null
|
|
log_info "Keep alive message sent [RC=$?]. Will sleep ${KEEPALIVE} seconds."
|
|
sleep "${KEEPALIVE}"
|
|
done
|
|
log_info "Keep alive messaging has been disabled"
|
|
fi
|
|
|
|
log_info "Disable CPU WDT.."
|
|
watchdogutil disarm
|
|
log_info "CPU WDT has been disabled!"
|