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