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