sonic-buildimage/platform/broadcom/sonic-platform-modules-cel/haliburton/script/cpu_wdt
Zhijian Li 8dc43a6c72
[202305][Celestica-E1031] Enable CPU watchdog (#17415)
* [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.
2023-12-26 15:46:00 +08:00

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!"