1#!/bin/sh 2# SPDX-License-Identifier: GPL-2.0-only 3 4clear_trace() { # reset trace output 5 echo > trace 6} 7 8disable_tracing() { # stop trace recording 9 echo 0 > tracing_on 10} 11 12enable_tracing() { # start trace recording 13 echo 1 > tracing_on 14} 15 16reset_tracer() { # reset the current tracer 17 echo nop > current_tracer 18} 19 20reset_trigger_file() { 21 # remove action triggers first 22 grep -H ':on[^:]*(' $@ | 23 while read line; do 24 cmd=`echo $line | cut -f2- -d: | cut -f1 -d"["` 25 file=`echo $line | cut -f1 -d:` 26 echo "!$cmd" >> $file 27 done 28 grep -Hv ^# $@ | 29 while read line; do 30 cmd=`echo $line | cut -f2- -d: | cut -f1 -d"["` 31 file=`echo $line | cut -f1 -d:` 32 echo "!$cmd" > $file 33 done 34} 35 36reset_trigger() { # reset all current setting triggers 37 if [ -d events/synthetic ]; then 38 reset_trigger_file events/synthetic/*/trigger 39 fi 40 reset_trigger_file events/*/*/trigger 41} 42 43reset_events_filter() { # reset all current setting filters 44 grep -v ^none events/*/*/filter | 45 while read line; do 46 echo 0 > `echo $line | cut -f1 -d:` 47 done 48} 49 50reset_ftrace_filter() { # reset all triggers in set_ftrace_filter 51 if [ ! -f set_ftrace_filter ]; then 52 return 0 53 fi 54 echo > set_ftrace_filter 55 grep -v '^#' set_ftrace_filter | while read t; do 56 tr=`echo $t | cut -d: -f2` 57 if [ "$tr" = "" ]; then 58 continue 59 fi 60 if ! grep -q "$t" set_ftrace_filter; then 61 continue; 62 fi 63 name=`echo $t | cut -d: -f1 | cut -d' ' -f1` 64 if [ $tr = "enable_event" -o $tr = "disable_event" ]; then 65 tr=`echo $t | cut -d: -f2-4` 66 limit=`echo $t | cut -d: -f5` 67 else 68 tr=`echo $t | cut -d: -f2` 69 limit=`echo $t | cut -d: -f3` 70 fi 71 if [ "$limit" != "unlimited" ]; then 72 tr="$tr:$limit" 73 fi 74 echo "!$name:$tr" > set_ftrace_filter 75 done 76} 77 78disable_events() { 79 echo 0 > events/enable 80} 81 82clear_synthetic_events() { # reset all current synthetic events 83 grep -v ^# synthetic_events | 84 while read line; do 85 echo "!$line" >> synthetic_events 86 done 87} 88 89initialize_ftrace() { # Reset ftrace to initial-state 90# As the initial state, ftrace will be set to nop tracer, 91# no events, no triggers, no filters, no function filters, 92# no probes, and tracing on. 93 disable_tracing 94 reset_tracer 95 reset_trigger 96 reset_events_filter 97 reset_ftrace_filter 98 disable_events 99 [ -f set_event_pid ] && echo > set_event_pid 100 [ -f set_ftrace_pid ] && echo > set_ftrace_pid 101 [ -f set_ftrace_notrace ] && echo > set_ftrace_notrace 102 [ -f set_graph_function ] && echo | tee set_graph_* 103 [ -f stack_trace_filter ] && echo > stack_trace_filter 104 [ -f kprobe_events ] && echo > kprobe_events 105 [ -f uprobe_events ] && echo > uprobe_events 106 [ -f synthetic_events ] && echo > synthetic_events 107 [ -f snapshot ] && echo 0 > snapshot 108 clear_trace 109 enable_tracing 110} 111