tools/bootconfig: Add histogram syntax support to bconf2ftrace.sh

Add histogram syntax support to bconf2ftrace.sh script.

Link: https://lkml.kernel.org/r/162856128672.203126.8240335908303312607.stgit@devnote2

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
This commit is contained in:
Masami Hiramatsu 2021-08-10 11:08:06 +09:00 committed by Steven Rostedt (VMware)
parent 1d8365a553
commit f134ebb281
2 changed files with 90 additions and 2 deletions

View File

@ -94,6 +94,92 @@ compose_synth() { # event_name branch
xbc_get_val $2 | while read field; do echo -n "$field; "; done
}
print_hist_array() { # prefix key
__sep="="
if xbc_has_key ${1}.${2}; then
echo -n ":$2"
xbc_get_val ${1}.${2} | while read field; do
echo -n "$__sep$field"; __sep=","
done
fi
}
print_hist_action_array() { # prefix key
__sep="("
echo -n ".$2"
xbc_get_val ${1}.${2} | while read field; do
echo -n "$__sep$field"; __sep=","
done
echo -n ")"
}
print_hist_one_action() { # prefix handler param
echo -n ":${2}("`xbc_get_val ${1}.${3}`")"
if xbc_has_key "${1}.trace"; then
print_hist_action_array ${1} "trace"
elif xbc_has_key "${1}.save"; then
print_hist_action_array ${1} "save"
elif xbc_has_key "${1}.snapshot"; then
echo -n ".snapshot()"
fi
}
print_hist_actions() { # prefix handler param
for __hdr in `xbc_subkeys ${1}.${2} 1 ".[0-9]"`; do
print_hist_one_action ${1}.${2}.$__hdr ${2} ${3}
done
if xbc_has_key ${1}.${2}.${3} ; then
print_hist_one_action ${1}.${2} ${2} ${3}
fi
}
print_hist_var() { # prefix varname
echo -n ":${2}="`xbc_get_val ${1}.var.${2} | tr -d [:space:]`
}
print_one_histogram() { # prefix
echo -n "hist"
print_hist_array $1 "keys"
print_hist_array $1 "values"
print_hist_array $1 "sort"
if xbc_has_key "${1}.size"; then
echo -n ":size="`xbc_get_val ${1}.size`
fi
if xbc_has_key "${1}.name"; then
echo -n ":name="`xbc_get_val ${1}.name`
fi
for __var in `xbc_subkeys "${1}.var" 1`; do
print_hist_var ${1} ${__var}
done
if xbc_has_key "${1}.pause"; then
echo -n ":pause"
elif xbc_has_key "${1}.continue"; then
echo -n ":continue"
elif xbc_has_key "${1}.clear"; then
echo -n ":clear"
fi
print_hist_actions ${1} "onmax" "var"
print_hist_actions ${1} "onchange" "var"
print_hist_actions ${1} "onmatch" "event"
if xbc_has_key "${1}.filter"; then
echo -n " if "`xbc_get_val ${1}.filter`
fi
}
setup_one_histogram() { # prefix trigger-file
run_cmd "echo '`print_one_histogram ${1}`' >> ${2}"
}
setup_histograms() { # prefix trigger-file
for __hist in `xbc_subkeys ${1} 1 ".[0-9]"`; do
setup_one_histogram ${1}.$__hist ${2}
done
if xbc_has_key ${1}.keys; then
setup_one_histogram ${1} ${2}
fi
}
setup_event() { # prefix group event [instance]
branch=$1.$2.$3
if [ "$4" ]; then
@ -121,6 +207,8 @@ setup_event() { # prefix group event [instance]
set_value_of ${branch}.filter ${eventdir}/filter
set_array_of ${branch}.actions ${eventdir}/trigger
setup_histograms ${branch}.hist ${eventdir}/trigger
if xbc_has_key ${branch}.enable; then
run_cmd "echo 1 > ${eventdir}/enable"
fi

View File

@ -49,8 +49,8 @@ xbc_has_branch() { # prefix-key
grep -q "^$1" $XBC_TMPFILE
}
xbc_subkeys() { # prefix-key depth
xbc_subkeys() { # prefix-key depth [subkey-pattern]
__keys=`echo $1 | sed "s/\./ /g"`
__s=`nr_args $__keys`
grep "^$1" $XBC_TMPFILE | cut -d= -f1| cut -d. -f$((__s + 1))-$((__s + $2)) | uniq
grep "^$1$3" $XBC_TMPFILE | cut -d= -f1| cut -d. -f$((__s + 1))-$((__s + $2)) | uniq
}