mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 16:54:21 +00:00 
			
		
		
		
	
		
			
	
	
		
			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 | ||
|  | } |