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