Commit 5675fd4e authored by Masami Hiramatsu's avatar Masami Hiramatsu Committed by Steven Rostedt (VMware)

tools/bootconfig: Add --init option for bconf2ftrace.sh

Since the ftrace current setting may conflict with the new setting
from bootconfig, add the --init option to initialize ftrace before
setting for bconf2ftrace.sh.

E.g.
 $ bconf2ftrace.sh --init boottrace.bconf

This initialization method copied from selftests/ftrace.

Link: https://lkml.kernel.org/r/159704853203.175360.17029578033994278231.stgit@devnote2Signed-off-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
parent 2b86062a
...@@ -3,8 +3,9 @@ ...@@ -3,8 +3,9 @@
usage() { usage() {
echo "Ftrace boottime trace test tool" echo "Ftrace boottime trace test tool"
echo "Usage: $0 [--apply] [--debug] BOOTCONFIG-FILE" echo "Usage: $0 [--apply|--init] [--debug] BOOTCONFIG-FILE"
echo " --apply: Test actual apply to tracefs (need sudo)" echo " --apply: Test actual apply to tracefs (need sudo)"
echo " --init: Initialize ftrace before applying (imply --apply)"
exit 1 exit 1
} }
...@@ -13,12 +14,16 @@ usage() { ...@@ -13,12 +14,16 @@ usage() {
BCONF= BCONF=
DEBUG= DEBUG=
APPLY= APPLY=
INIT=
while [ x"$1" != x ]; do while [ x"$1" != x ]; do
case "$1" in case "$1" in
"--debug") "--debug")
DEBUG=$1;; DEBUG=$1;;
"--apply") "--apply")
APPLY=$1;; APPLY=$1;;
"--init")
APPLY=$1
INIT=$1;;
*) *)
[ ! -f $1 ] && usage [ ! -f $1 ] && usage
BCONF=$1;; BCONF=$1;;
...@@ -57,6 +62,11 @@ if [ -z "$TRACEFS" ]; then ...@@ -57,6 +62,11 @@ if [ -z "$TRACEFS" ]; then
fi fi
fi fi
if [ x"$INIT" != x ]; then
. `dirname $0`/ftrace.sh
(cd $TRACEFS; initialize_ftrace)
fi
. `dirname $0`/xbc.sh . `dirname $0`/xbc.sh
######## main ######### ######## main #########
......
# SPDX-License-Identifier: GPL-2.0-only
clear_trace() { # reset trace output
echo > trace
}
disable_tracing() { # stop trace recording
echo 0 > tracing_on
}
enable_tracing() { # start trace recording
echo 1 > tracing_on
}
reset_tracer() { # reset the current tracer
echo nop > current_tracer
}
reset_trigger_file() {
# remove action triggers first
grep -H ':on[^:]*(' $@ |
while read line; do
cmd=`echo $line | cut -f2- -d: | cut -f1 -d"["`
file=`echo $line | cut -f1 -d:`
echo "!$cmd" >> $file
done
grep -Hv ^# $@ |
while read line; do
cmd=`echo $line | cut -f2- -d: | cut -f1 -d"["`
file=`echo $line | cut -f1 -d:`
echo "!$cmd" > $file
done
}
reset_trigger() { # reset all current setting triggers
if [ -d events/synthetic ]; then
reset_trigger_file events/synthetic/*/trigger
fi
reset_trigger_file events/*/*/trigger
}
reset_events_filter() { # reset all current setting filters
grep -v ^none events/*/*/filter |
while read line; do
echo 0 > `echo $line | cut -f1 -d:`
done
}
reset_ftrace_filter() { # reset all triggers in set_ftrace_filter
if [ ! -f set_ftrace_filter ]; then
return 0
fi
echo > set_ftrace_filter
grep -v '^#' set_ftrace_filter | while read t; do
tr=`echo $t | cut -d: -f2`
if [ "$tr" = "" ]; then
continue
fi
if ! grep -q "$t" set_ftrace_filter; then
continue;
fi
name=`echo $t | cut -d: -f1 | cut -d' ' -f1`
if [ $tr = "enable_event" -o $tr = "disable_event" ]; then
tr=`echo $t | cut -d: -f2-4`
limit=`echo $t | cut -d: -f5`
else
tr=`echo $t | cut -d: -f2`
limit=`echo $t | cut -d: -f3`
fi
if [ "$limit" != "unlimited" ]; then
tr="$tr:$limit"
fi
echo "!$name:$tr" > set_ftrace_filter
done
}
disable_events() {
echo 0 > events/enable
}
clear_synthetic_events() { # reset all current synthetic events
grep -v ^# synthetic_events |
while read line; do
echo "!$line" >> synthetic_events
done
}
initialize_ftrace() { # Reset ftrace to initial-state
# As the initial state, ftrace will be set to nop tracer,
# no events, no triggers, no filters, no function filters,
# no probes, and tracing on.
disable_tracing
reset_tracer
reset_trigger
reset_events_filter
reset_ftrace_filter
disable_events
[ -f set_event_pid ] && echo > set_event_pid
[ -f set_ftrace_pid ] && echo > set_ftrace_pid
[ -f set_ftrace_notrace ] && echo > set_ftrace_notrace
[ -f set_graph_function ] && echo | tee set_graph_*
[ -f stack_trace_filter ] && echo > stack_trace_filter
[ -f kprobe_events ] && echo > kprobe_events
[ -f uprobe_events ] && echo > uprobe_events
[ -f synthetic_events ] && echo > synthetic_events
[ -f snapshot ] && echo 0 > snapshot
clear_trace
enable_tracing
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment