rc.subr: boottrace annotations
When enabled, have the framework use the boottrace(8) utility to execute each rc script, generating trace entries for the entire suite of scripts. Reviewed by: 0mp (slightly earlier version) Sponsored by: NetApp, Inc. Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D31930
This commit is contained in:
parent
13ec1e3155
commit
318d0db5fe
@ -1411,7 +1411,9 @@ run_rc_script()
|
||||
;;
|
||||
*) # run in subshell
|
||||
if [ -x $_file ]; then
|
||||
if [ -n "$rc_fast_and_loose" ]; then
|
||||
if [ -n "$rc_boottrace" ]; then
|
||||
boottrace_fn "$_file" "$_arg"
|
||||
elif [ -n "$rc_fast_and_loose" ]; then
|
||||
set $_arg; . $_file
|
||||
else
|
||||
( trap "echo Script $_file interrupted >&2 ; kill -QUIT $$" 3
|
||||
@ -1424,6 +1426,26 @@ run_rc_script()
|
||||
esac
|
||||
}
|
||||
|
||||
boottrace_fn()
|
||||
{
|
||||
local _file _arg
|
||||
_file=$1
|
||||
_arg=$2
|
||||
|
||||
if [ -n "$rc_fast_and_loose" ]; then
|
||||
boottrace_sysctl "$_file start"
|
||||
set $_arg; . $_file
|
||||
boottrace_sysctl "$_file done"
|
||||
else
|
||||
$boottrace_cmd "$_file" "$_arg"
|
||||
fi
|
||||
}
|
||||
|
||||
boottrace_sysctl()
|
||||
{
|
||||
${SYSCTL} kern.boottrace.boottrace="$1"
|
||||
}
|
||||
|
||||
#
|
||||
# load_rc_config [service]
|
||||
# Source in the configuration file(s) for a given service.
|
||||
@ -2195,3 +2217,8 @@ _echoonce()
|
||||
if kenv -q rc.debug > /dev/null ; then
|
||||
rc_debug=YES
|
||||
fi
|
||||
|
||||
boottrace_cmd=`command -v boottrace`
|
||||
if [ -n "$boottrace_cmd" ] && [ "`${SYSCTL_N} -q kern.boottrace.enabled`" = "1" ]; then
|
||||
rc_boottrace=YES
|
||||
fi
|
||||
|
Loading…
Reference in New Issue
Block a user