110 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| # 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
 | |
| }
 |