18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ciclear_trace() { # reset trace output
48c2ecf20Sopenharmony_ci    echo > trace
58c2ecf20Sopenharmony_ci}
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cidisable_tracing() { # stop trace recording
88c2ecf20Sopenharmony_ci    echo 0 > tracing_on
98c2ecf20Sopenharmony_ci}
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_cienable_tracing() { # start trace recording
128c2ecf20Sopenharmony_ci    echo 1 > tracing_on
138c2ecf20Sopenharmony_ci}
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_cireset_tracer() { # reset the current tracer
168c2ecf20Sopenharmony_ci    echo nop > current_tracer
178c2ecf20Sopenharmony_ci}
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_cireset_trigger_file() {
208c2ecf20Sopenharmony_ci    # remove action triggers first
218c2ecf20Sopenharmony_ci    grep -H ':on[^:]*(' $@ |
228c2ecf20Sopenharmony_ci    while read line; do
238c2ecf20Sopenharmony_ci        cmd=`echo $line | cut -f2- -d: | cut -f1 -d"["`
248c2ecf20Sopenharmony_ci	file=`echo $line | cut -f1 -d:`
258c2ecf20Sopenharmony_ci	echo "!$cmd" >> $file
268c2ecf20Sopenharmony_ci    done
278c2ecf20Sopenharmony_ci    grep -Hv ^# $@ |
288c2ecf20Sopenharmony_ci    while read line; do
298c2ecf20Sopenharmony_ci        cmd=`echo $line | cut -f2- -d: | cut -f1 -d"["`
308c2ecf20Sopenharmony_ci	file=`echo $line | cut -f1 -d:`
318c2ecf20Sopenharmony_ci	echo "!$cmd" > $file
328c2ecf20Sopenharmony_ci    done
338c2ecf20Sopenharmony_ci}
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_cireset_trigger() { # reset all current setting triggers
368c2ecf20Sopenharmony_ci    if [ -d events/synthetic ]; then
378c2ecf20Sopenharmony_ci        reset_trigger_file events/synthetic/*/trigger
388c2ecf20Sopenharmony_ci    fi
398c2ecf20Sopenharmony_ci    reset_trigger_file events/*/*/trigger
408c2ecf20Sopenharmony_ci}
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_cireset_events_filter() { # reset all current setting filters
438c2ecf20Sopenharmony_ci    grep -v ^none events/*/*/filter |
448c2ecf20Sopenharmony_ci    while read line; do
458c2ecf20Sopenharmony_ci	echo 0 > `echo $line | cut -f1 -d:`
468c2ecf20Sopenharmony_ci    done
478c2ecf20Sopenharmony_ci}
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_cireset_ftrace_filter() { # reset all triggers in set_ftrace_filter
508c2ecf20Sopenharmony_ci    if [ ! -f set_ftrace_filter ]; then
518c2ecf20Sopenharmony_ci      return 0
528c2ecf20Sopenharmony_ci    fi
538c2ecf20Sopenharmony_ci    echo > set_ftrace_filter
548c2ecf20Sopenharmony_ci    grep -v '^#' set_ftrace_filter | while read t; do
558c2ecf20Sopenharmony_ci	tr=`echo $t | cut -d: -f2`
568c2ecf20Sopenharmony_ci	if [ "$tr" = "" ]; then
578c2ecf20Sopenharmony_ci	    continue
588c2ecf20Sopenharmony_ci	fi
598c2ecf20Sopenharmony_ci	if ! grep -q "$t" set_ftrace_filter; then
608c2ecf20Sopenharmony_ci		continue;
618c2ecf20Sopenharmony_ci	fi
628c2ecf20Sopenharmony_ci	name=`echo $t | cut -d: -f1 | cut -d' ' -f1`
638c2ecf20Sopenharmony_ci	if [ $tr = "enable_event" -o $tr = "disable_event" ]; then
648c2ecf20Sopenharmony_ci	    tr=`echo $t | cut -d: -f2-4`
658c2ecf20Sopenharmony_ci	    limit=`echo $t | cut -d: -f5`
668c2ecf20Sopenharmony_ci	else
678c2ecf20Sopenharmony_ci	    tr=`echo $t | cut -d: -f2`
688c2ecf20Sopenharmony_ci	    limit=`echo $t | cut -d: -f3`
698c2ecf20Sopenharmony_ci	fi
708c2ecf20Sopenharmony_ci	if [ "$limit" != "unlimited" ]; then
718c2ecf20Sopenharmony_ci	    tr="$tr:$limit"
728c2ecf20Sopenharmony_ci	fi
738c2ecf20Sopenharmony_ci	echo "!$name:$tr" > set_ftrace_filter
748c2ecf20Sopenharmony_ci    done
758c2ecf20Sopenharmony_ci}
768c2ecf20Sopenharmony_ci
778c2ecf20Sopenharmony_cidisable_events() {
788c2ecf20Sopenharmony_ci    echo 0 > events/enable
798c2ecf20Sopenharmony_ci}
808c2ecf20Sopenharmony_ci
818c2ecf20Sopenharmony_ciclear_synthetic_events() { # reset all current synthetic events
828c2ecf20Sopenharmony_ci    grep -v ^# synthetic_events |
838c2ecf20Sopenharmony_ci    while read line; do
848c2ecf20Sopenharmony_ci        echo "!$line" >> synthetic_events
858c2ecf20Sopenharmony_ci    done
868c2ecf20Sopenharmony_ci}
878c2ecf20Sopenharmony_ci
888c2ecf20Sopenharmony_ciinitialize_ftrace() { # Reset ftrace to initial-state
898c2ecf20Sopenharmony_ci# As the initial state, ftrace will be set to nop tracer,
908c2ecf20Sopenharmony_ci# no events, no triggers, no filters, no function filters,
918c2ecf20Sopenharmony_ci# no probes, and tracing on.
928c2ecf20Sopenharmony_ci    disable_tracing
938c2ecf20Sopenharmony_ci    reset_tracer
948c2ecf20Sopenharmony_ci    reset_trigger
958c2ecf20Sopenharmony_ci    reset_events_filter
968c2ecf20Sopenharmony_ci    reset_ftrace_filter
978c2ecf20Sopenharmony_ci    disable_events
988c2ecf20Sopenharmony_ci    [ -f set_event_pid ] && echo > set_event_pid
998c2ecf20Sopenharmony_ci    [ -f set_ftrace_pid ] && echo > set_ftrace_pid
1008c2ecf20Sopenharmony_ci    [ -f set_ftrace_notrace ] && echo > set_ftrace_notrace
1018c2ecf20Sopenharmony_ci    [ -f set_graph_function ] && echo | tee set_graph_*
1028c2ecf20Sopenharmony_ci    [ -f stack_trace_filter ] && echo > stack_trace_filter
1038c2ecf20Sopenharmony_ci    [ -f kprobe_events ] && echo > kprobe_events
1048c2ecf20Sopenharmony_ci    [ -f uprobe_events ] && echo > uprobe_events
1058c2ecf20Sopenharmony_ci    [ -f synthetic_events ] && echo > synthetic_events
1068c2ecf20Sopenharmony_ci    [ -f snapshot ] && echo 0 > snapshot
1078c2ecf20Sopenharmony_ci    clear_trace
1088c2ecf20Sopenharmony_ci    enable_tracing
1098c2ecf20Sopenharmony_ci}
110