Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: GPL-2.0-only
0002 
0003 clear_trace() { # reset trace output
0004     echo > trace
0005 }
0006 
0007 disable_tracing() { # stop trace recording
0008     echo 0 > tracing_on
0009 }
0010 
0011 enable_tracing() { # start trace recording
0012     echo 1 > tracing_on
0013 }
0014 
0015 reset_tracer() { # reset the current tracer
0016     echo nop > current_tracer
0017 }
0018 
0019 reset_trigger_file() {
0020     # remove action triggers first
0021     grep -H ':on[^:]*(' $@ |
0022     while read line; do
0023         cmd=`echo $line | cut -f2- -d: | cut -f1 -d"["`
0024         file=`echo $line | cut -f1 -d:`
0025         echo "!$cmd" >> $file
0026     done
0027     grep -Hv ^# $@ |
0028     while read line; do
0029         cmd=`echo $line | cut -f2- -d: | cut -f1 -d"["`
0030         file=`echo $line | cut -f1 -d:`
0031         echo "!$cmd" > $file
0032     done
0033 }
0034 
0035 reset_trigger() { # reset all current setting triggers
0036     if [ -d events/synthetic ]; then
0037         reset_trigger_file events/synthetic/*/trigger
0038     fi
0039     reset_trigger_file events/*/*/trigger
0040 }
0041 
0042 reset_events_filter() { # reset all current setting filters
0043     grep -v ^none events/*/*/filter |
0044     while read line; do
0045         echo 0 > `echo $line | cut -f1 -d:`
0046     done
0047 }
0048 
0049 reset_ftrace_filter() { # reset all triggers in set_ftrace_filter
0050     if [ ! -f set_ftrace_filter ]; then
0051       return 0
0052     fi
0053     echo > set_ftrace_filter
0054     grep -v '^#' set_ftrace_filter | while read t; do
0055         tr=`echo $t | cut -d: -f2`
0056         if [ "$tr" = "" ]; then
0057             continue
0058         fi
0059         if ! grep -q "$t" set_ftrace_filter; then
0060                 continue;
0061         fi
0062         name=`echo $t | cut -d: -f1 | cut -d' ' -f1`
0063         if [ $tr = "enable_event" -o $tr = "disable_event" ]; then
0064             tr=`echo $t | cut -d: -f2-4`
0065             limit=`echo $t | cut -d: -f5`
0066         else
0067             tr=`echo $t | cut -d: -f2`
0068             limit=`echo $t | cut -d: -f3`
0069         fi
0070         if [ "$limit" != "unlimited" ]; then
0071             tr="$tr:$limit"
0072         fi
0073         echo "!$name:$tr" > set_ftrace_filter
0074     done
0075 }
0076 
0077 disable_events() {
0078     echo 0 > events/enable
0079 }
0080 
0081 clear_synthetic_events() { # reset all current synthetic events
0082     grep -v ^# synthetic_events |
0083     while read line; do
0084         echo "!$line" >> synthetic_events
0085     done
0086 }
0087 
0088 initialize_ftrace() { # Reset ftrace to initial-state
0089 # As the initial state, ftrace will be set to nop tracer,
0090 # no events, no triggers, no filters, no function filters,
0091 # no probes, and tracing on.
0092     disable_tracing
0093     reset_tracer
0094     reset_trigger
0095     reset_events_filter
0096     reset_ftrace_filter
0097     disable_events
0098     [ -f set_event_pid ] && echo > set_event_pid
0099     [ -f set_ftrace_pid ] && echo > set_ftrace_pid
0100     [ -f set_ftrace_notrace ] && echo > set_ftrace_notrace
0101     [ -f set_graph_function ] && echo | tee set_graph_*
0102     [ -f stack_trace_filter ] && echo > stack_trace_filter
0103     [ -f kprobe_events ] && echo > kprobe_events
0104     [ -f uprobe_events ] && echo > uprobe_events
0105     [ -f synthetic_events ] && echo > synthetic_events
0106     [ -f snapshot ] && echo 0 > snapshot
0107     clear_trace
0108     enable_tracing
0109 }